Töökohaarvuti virtuaalselt kontori võrgus kasutamine

Allikas: Imre kasutab arvutit

Sissejuhatus

Käesolevas tekstis on kirjeldatud, kuidas nt sõbra juurde pikemaks ajaks külla minnes võtta oma töökohaarvuti füüsiliselt kaasa ja samal ajal loogilises mõttes asuda sama-hästi-kui (ingl. k. virtually) kontori kohtvõrgus. Selle korraldamiseks kasutatakse selliseid vahendeid

  • OpenBSD - laptop arvutil töötav nö mobiilne tulemüür
  • Debian - töökohaarvuti tarkvara
  • USB pulk - kui mobiilset tulemüüri ei saa paigaldada kohalikule kettale
  • USB netipulk - töötab OpenBSD pppd deemoni juhtimisel
  • OpenVPN - mobiilse tulemüüri ja kontori tulemüüri vahelise VPN tekitamiseks
  • Squid - liikluse mahu vähendamiseks
  • NfSen - liikluse mahu monitoorimiseks

Kokku tuleb kaasa võtta nt neli füüsilist kasti, üks laptop mobiilseks tulemüüriks, üks PC tüüpi töökohaarvuti ja kaks monitori. Kuna konkreetsel juhul on kasutatud EMT teenusepakkujat ja nö kõige odavamat teenuse paketti, siis on asjakohane tähele panna, et kliendi seade saab omale privaatse aadressi. Kuskil EMT võrguseadmes toimub vastav NAT teisendus, tundub, et OpenVPN saab sellega ilusti hakkama, IPSec vms lahendused ei pruugi saada. Samuti tuleb arvestada, et antud juhul saab teha ainult ühendusi kliendi poolelt internetti.

Tööpõhimõte

Tavaliselt asub töökohaarvuti mingis nö traadiga kohtvõrgus, kasutab privaateset ip aadressi ja asub selle kohtvõrgu tulemüüri taga. Tõenäoliselt saab tulemüüri kaudu lisaks internetile kasutada ka selle kohtvõrgu tulemüüri ja muude tulemüüride vahel moodustatud VPN ühenduste abil muude tulemüüride taguseid võrke.

                         lokatsioon 2 võrk
                           10.102.0.0/24

                              __|__
                             |     | lokatsioon 2 tulemüür
                             |_____|
                                |  
   lokatsioon 1 võrk            |              lokatsioon 3 võrk
     10.101.0.0/24                               10.103.0.0/24

        __|__                                       __|__
       |     | lokatsioon 1 tulemüür               |     | lokatsioon 3 tulemüür
       |_____|                                     |_____|                                  USB pulgaga internet
          |                                           |                                           
          |                                           |                                          |    OpenBSD mobiilne tulemüür
                            INTERNET                                                     ppp0  __|__  
                                                                                              |     | tun0 - OpenVPN
                             .....                                                            |_____| bridge0: tun0, em0
                              ...                                                         em0    |    
                                                                                                 |
                               |                                                                 |
                             __|__  tun5 - OpenVPN                                             __|__  eth0 (192.168.10.188)
kontori kohtvõrgu tulemüür  |     | bridge1: tun5, vlan10                                     |     | Debian töökohaarvuti 
                            |_____|                                                           |_____|
                               |    vlan10 (192.168.10.254) 
                               |                             192.168.10.0/24                
                    -----------|---------------|------------------|-----------------|----
                                               |                  |                 |
                                             __|__              __|__             __|__
                                            |     |            |     |           |     |
                                            |_____|            |_____|           |_____|

                                        töökohaarvuti 1     töökohaarvuti 2        ...

kus

  • kontori kohtvõrgu tulemüüri ja mobiilse tulemüüri vahel töötab OpenVPN, mis tekitab L2 kihi tunneli
  • L2 tunneli kaudu on mobiilne Debiani töökohaarvuti ja kontori töökohaarvutid praktiliselt samas ethernetis (L2), st arp päringud kostavad jms
  • Debiani töökohaarvuti vaikelüüsi aadressiks on 192.168.10.254 (kõigile pakettidele v.a. tunneli otste pidamiseks)
  • kontori tulemüüri kohtvõrgupoolsel võrguseadmel vlan10 on tõenäoliselt ip aadress, aga see ei sega teda kasutada bridge komponendina
  • mobiilse tulemüüri kohtvõrgupoolsel võrguseadmel em0 ei pruugi olla ip aadress, aga võib olla (katsetada on aadressiga lihtsam, nt 192.168.10.188)

Käesolev lahendus sisaldab kahe operatsioonisüsteemi kasutamist

  • OpenBSD arvuti - mobiilne tulemüür, töötab netipulgaga
  • Debian arvuti - töökohaarvuti keskkond, kus asuvad kasutaja kodukataloog (st põhilised andmed nagu programmide profiilid, Skype history, SSH võtmed jms) ning töökohaarvutis kasutatavad programmid asuvad töökohaarvuti lokaalsel kõvakettal)

Sellise asjakorralduse põhjenduseks on

  • töökohaarvuti seadistused sh võrguseadistused jäävad muutumatuks
  • töökohaarvuti ja mobiilse tulemüüri vahele võiks arvestada suhteliselt pika CAT 5 kaabli kasutamist selleks, et saaks valida nö sobiva antenni asukoha
  • töökohaarvuti on ka ilma võrguühenduseta suhteliselt kausutatav (ei ole vaja üle võrgu külge ühendada kodukataloogi, avada remote desktop'i vms)
  • töökohaarvuti on kiirem/ressursimahukam/suuremate-monitoridega jne kui sülearvuti
  • kuna igasugused src ip põhised ligipääsu on tõenäoliselt kontori tulemüüri välise otsaga seotud; ning kuna kontori tulemüür on ka VPN tunnelite otspunkt, siis võrgu mõttes on otstarbekas mitte hakata tegema erisusi parajagu kasutuseks saatunud USB netipulga ip aadressile, vaid ruutida kõik liiklus läbi kontori

Kuna USB pulga interneti teenus on tavaliselt piiratud mingi kasutada oleva andmemahuga kuus, siis võib olla mõistlik

  • vähendada andmemahtu - kasutada lokaalset http cache'i, nt Squid
  • jälgida andmevahetust - nt NfSen

OpenBSD operatsioonisüsteemi kasutamine USB pulgalt

PPP käivitamine

OpenVPN serveri seadistamine

Serveri poolel sobib kasutada nt sellist seadistust

local 10.204.62.116
port 2194
proto udp
dev-type tap
dev tun5
ca /etc/openvpn/keys/auul-chain.pem
cert /etc/openvpn/keys/aix.auul.pri.ee-cert.pem
key /etc/openvpn/keys/aix.auul.pri.ee-key.pem
dh /etc/openvpn/keys/dh2048.pem

server-bridge 192.168.10.254 255.255.255.0 192.168.10.180 192.168.10.184
ifconfig-pool-persist /tmp/ipp.txt
push "redirect-gateway local def1"

auth-user-pass-verify /etc/openvpn/bin/openvpn.sh via-env
client-cert-not-required
script-security 2

keepalive 10 120
comp-lzo
user _openvpn
group _openvpn
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

Tulemusena tekib tun5 seade, millel ei ole ip aadressi

# ifconfig tun5                                                                                                                                                     
tun5: flags=9943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,LINK0,MULTICAST> mtu 1500
       lladdr fe:e1:ba:d8:15:f6
       priority: 0
       groups: tun
       status: active
       inet6 fe80::fce1:baff:fed8:15f6%tun5 prefixlen 64 scopeid 0x2b

Lisaks peab tun seadet veidi kohendama ning tekitama silla

# ifconfig bridge1 create
# ifconfig tun5 link0 up
# ifconfig bridge1 add vlan10 add tun5

vlan10 seadmel võib olla ip aadress.

OpenVPN kliendi seadistamine

Kliendi poolel sobib kasutada nt sellist seadistust

client
dev-type tap
dev tun
proto udp
remote 10.204.62.116 2194
persist-key
persist-tun
user _openvpn
group _openvpn
ca /etc/openvpn/keys/auul-chain.pem
auth-user-pass /etc/openvpn/keys/auul.up
comp-lzo
verb 3

script-security 2
route-noexec
ifconfig-noexec
ns-cert-type server

Tulemusena tekib tun0 seade, millel pole ip aadressi.

Lisaks peab tun seadet veidi kohendama ning tekitama silla

# ifconfig bridge0 create
# ifconfig tun0 link0 up
# ifconfig bridge0 add em0 add tun0

Ruutingu abistamiseks sobib öelda (kui järele mõelda, siis seda ei ole vist vaja eeldusel, et töökohaarvuti kasutab oma vaikelüüsina bridge küljes asuvat ip aadressi)

# route add 0.0.0.0/1 192.168.10.254
# route add 128.0.0.0/1 192.168.10.254

pflow ja NfSen

pflow ja NfSen kasutamist on kirjeldatud punktis

Võrk ja andmeside -> Netflow

pflow allikaks on mobiilne tulemüür, NfSen võib asuda tulemüüris kui töökohaarvutis.

Squid

Squid'i saab põhimõtteliselt paigaldada nii mobiilsesse tulemüüri kui ka töökohaarvutisse. Töökohaarvutis transparentse Squid v. 2.7 kasutamisel sobib kasutada nt sellist iptables reeglit

# iptables -t nat -A OUTPUT -m owner ! --uid-owner proxy -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128

Kasulikud lisamaterjalid

Mobiilne tulemüür on Wifi Access Point

TODO

Lihtsustatud variatsioon - Debian töökohaarvuti ühendub otse OpenVPN serveriga

Tööpõhimõte

  • internetis ootab pöördumisi L2 OpenVPN server (mille taga on sillatud 192.168.10.0/24 võrguga ethernet)
  • töökohaarvutis on sild xenbr0, millel on ip aadress 192.168.10.8/24
  • töökohaarvuti võrguühendus tekitatakse tavalisel viisil Telia netipulga abil, XFCE vms graafilises keskkonnas
  • käivitatakse OpenVPN klient, tekib seade tap0, millel ei ole ip konfi

Debian kliendi poolel sobib kasutada nt sellist seadistust

client
dev-type tap
dev tun
proto udp
remote 10.204.62.116 2194
persist-key
persist-tun
ca /etc/openvpn/keys/auul-chain.pem
auth-user-pass /etc/openvpn/keys/auul.up
comp-lzo
verb 3

script-security 2
route-noexec
ifconfig-noexec
ns-cert-type server

kus

  • 'ca /etc/openvpn/keys/auul-chain.pem' - server sertifikaadi ahel, ssl kanal moodustakse serverit autentides
  • 'auth-user-pass /etc/openvpn/keys/auul.up' - server autendib kliendi kasutajanime ja parooli abil

Tulemusena tekib tap0 seade, millel pole ip aadressi. Eesmärk on, et kõik liiklus v.a. OpenVPN server ruuditakse läbi OpenVPN serveri, töötav ip kiht paistab selline

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  128.0.0.0       UG    0      0        0 xenbr0
0.0.0.0         10.130.18.194   0.0.0.0         UG    1024   0        0 wwan0
10.130.18.192   0.0.0.0         255.255.255.252 U     0      0        0 wwan0
128.0.0.0       192.168.10.254  128.0.0.0       UG    0      0        0 xenbr0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 xenbr0
194.204.62.116  10.130.18.194   255.255.255.255 UGH   0      0        0 wwan0

kus

  • xenbr0 - sild kuhu on ühendatud OpenVPN tekitatud tap0 seade
  • wwan0 - Telia netipulgaga seotud seade

Võrgu ruutingud saab käsitsi tekitada nt nii

# route add -host 194.204.62.116 gw 10.130.18.194 
# route add -net 0.0.0.0/1 gw 192.168.10.254
# route add -net 128.0.0.0/1 gw 192.168.10.254

Kasulikud lisamaterjalid