![]() |
|
Aki esetleg nem vágná, mi is az a VPN, annak valószínűleg úgysincsen rá szüksége, és ne is olvassa tovább. Mindamellett röviden azért, a köz okulása végett:
A VPN (Virtual Private Network) segítségével hálózatokat lehet összekapcsolni, méghozzá biztonságos (titkosított) módon. A tényleges kapcsolat persze mindig két gép között jön létre, sőt az is lehet, hogy csak két gép a hálózat tagja, mindazonáltal ez ritka: a gyakoribb az, hogy egy/több gépet csatolunk be egy már meglévő hálózata.
Például: egy cég két irodájának a gépeit egyetlen hálózatban akarjuk látni. Vagy: a munkahelyi hálózatunkra csatlakozunk rá otthonról.
A VPN nem szerver-kliens jellegű kapcsolat: fizikai kapcsolatot "emulálunk", mintha mondjuk egy b*szott hosszú kábellel kötnénk be mondjuk az otthoni laptopunkat pl. egy egyetemi hálózatba, minek hatására a gépünk úgy viselkedik, mintha tényleg ott lenne az a kábel.
A VPN felépítése sajnos nem annyi, hogy elindítunk valami service-t aztán jólvan. A problémák:
- A VPN nem egy protokol, mint mondjuk a HTTP, hanem egy fogalom, architektúra: ennek megfelelően mindenképppen választanunk kell egy VPN szoftvert, amihez megfelelő szerver mellett megfelelő (értsd: minden csatlakozni kívánó gépen futó) kliens is tartozik.
- Az egyes VPN szoftverek tipikusan nem kompatibilisek egymással.
- Rendszerszinten a fogadó (szerver) oldalon a VPN beállítása nem elég: jellemzően egyéb trükköket is kell alkalmazni, pl. routing tábla módosítása, IP forward, stb.
- Egyáltalán nem biztos, hogy vannak statikus IP címeink (ez ugye főleg a szerver oldalon gond), ami bonyolítja a helyzetet.
- Mindenféle firewall-ok állhatnak utunkba.
- A szerver LAN-jában lévő service-eket bizonyos konfigurációban tájékoztatni kell arról, hogy megértsék a VPN által becsatolt virtuális hálózatot (ami alapból külön tartomány). Néha a LAN tartományt (pl. cím allokáció) is módosítani kell.
Két gépet összekötni VPN-nel, statikus IP-n viszonylag egyszerű - ennek megfelelően sok értelme sincs. Ígyhát egy bonyolultabb - egyébként viszont tipikus - konfigurációról lesz itt szó. Lássuk!
A körülmények:
- egy irodai hálózatba akarunk becsatlakozni, ahol már van egy lokális IP tartomány: legyen ez 192.168.1.x
- az irodába bejövő internet egy dinamikus IP-n ülő, belülre dinamikus IP-t DHCP-ző router-en ül
- ezen a router-en keresztül NAT segítségével látják a kinti hálót a gépek
- belül van egy Windows hálózat (Samba vagy nem, mindegy)
- van "az asztalon" egy Linux szerver, aminek szintén a router ad (kvázistatikus) IP-t, ami legyen mondjuk 192.168.1.10
- a Linux szerver Samba szerver is, csak hogy örüljünk
Ez egy meglehetősen tipikus konfiguráció: a legtöbb kis -és közepes munkahelyen valami ilyesmit találunk.
Amit el akarunk érni:
- "külső" gépekről (otthonról) a belső hálózatot Windows Networking-en keresztül elérni, minden szenvedés nélkül (tehát a kliensnek legyen egyszerű dolga, vagyis X.Y. hozzá nem értő munkatársunk egyszerűen tudja használni otthonról, Windows XP-ről vagy Vista-ról)
A feladathoz használt VPN szoftver az OpenVPN. Ez egy jól működő dolog, és mind Windows-on (Vista-n is), mind Linuxon remek támogatással rendelkezik. Ingyenes.
A VPN szerver egy Fedora Linux, esetünkben Fedora 8, de más verziók és más Linux disztribúciók is szinte ugyanígy használhatóak.
Mielőtt beledőlnénk a VPN-be, először is meg kell tenni a következőket:
1. Mivel a külső IP-nket dinamikusan kapjuk, egy DDNS-t kell létrehozni erre a címre. A router-ekben jellemzően be lehet állítani a dyndns.com-ot, a példa kedvéért legyen a külső dinamikus IP-nk címe az example.dyndns.com. Innentől ez mutat a router-ünk aktuális IP címére. Csináljuk ezt meg, próbáljuk ki! Nem árt, ha a 22-es portot forwardoljuk a routeren át a Linux gépre, így könnyen ellenőrizhető a dolog.
Ha megvan, akkor NEXT :)
2. A router-en az OpenVPN portját (1194) ki kell nyitni és a belső gépre irányítani. Ez lehet UDP vagy TCP - legyen most UDP. Innentől elérjük tetszőleges külső gépről a belső gépet.
3. Ki kell nyitni az 1194/UDP portot a Linux szerveren, már persze ha zárva lenne, és már ha egyáltalán használunk firewall-t, és az az IPTABLES :)) Ha igen, akkor valami ilyesmi kell a /etc/sysconfig/iptables-be:
-A INPUT -p udp -m udp --dport 1194 -j ACCEPT
#!/bin/bash
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
ifdown eth0
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth="eth0"
eth_ip="192.168.1.10"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.1.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
#!/bin/bash
####################################
# Tear Down Ethernet bridge on Linux
####################################
# Define Bridge Interface
br="br0"
# Define list of TAP interfaces to be bridged together
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done-A -i tap0 -j ACCEPT -A -i br0 -j ACCEPT -A FORWARD -i br0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
route add default gw 192.168.1.1
./vars source vars ./clean-all ./build-ca
./build-key-server server
./build-dh
./build-key-pass client-1
port 1194 proto udp dev tap0 ca "/etc/openvpn/easy-rsa/keys/ca.crt" cert "/etc/openvpn/easy-rsa/keys/server.crt" key "/etc/openvpn/easy-rsa/keys/server.key" # Titkos! dh "/etc/openvpn/easy-rsa/keys/dh1024.pem" server-bridge 192.168.1.10 255.255.255.0 192.168.1.200 192.168.1.254 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo max-clients 10 persist-key persist-tun status openvpn-status.log verb 4
/etc/rc.d/init.d/openvpn start
openvpn /etc/openvpn/server.conf
br0 Link encap:Ethernet HWaddr 00:19:20:90:B4:22
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:69486 errors:0 dropped:0 overruns:0 frame:0
TX packets:48783 errors:0 dropped:0 overruns:0 carrier:0
eth0 Link encap:Ethernet HWaddr 00:19:20:90:B4:22
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:69519 errors:0 dropped:0 overruns:0 frame:0
TX packets:48769 errors:0 dropped:0 overruns:0 carrier:0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6362 errors:0 dropped:0 overruns:0 frame:0
TX packets:6362 errors:0 dropped:0 overruns:0 carrier:0
tap0 Link encap:Ethernet HWaddr 00:FF:30:82:85:C5
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:9650 overruns:0 carrier:0client dev tap proto udp remote example.dyndns.com 1194 resolv-retry infinite nobind persist-key persist-tun ca "/etc/openvpn/easy-rsa/keys/ca.crt" cert "/etc/openvpn/easy-rsa/keys/client1.crt" key "/etc/openvpn/easy-rsa/keys/client1.key" comp-lzo verb4
openvpn /etc/openvpn/client.conf
| 1. |
VPN beállítása Linuxon (Fedora + OpenVPN)
2008, Április 2., 11h |
| 2. |
E!
2007, November 12., 23h |
| 3. |
Végjáték
2007, Szeptember 27., 1h |
| 4. |
A devizahitel szépségei
2007, Augusztus 10., 12h |
| 1.- 11.- 21.- 31.- |
| Cím: | Első tavaszi virágok... |
| : | 4903 |
| : |