Privát hálózat kialakítása Linux, OpenBSD és Windows XP között OpenVPN-nel
A HupWiki-ből...
Micskó Gábor trey () hup ! hu - Hungarian Unix Portal
v1.0 2005. február 01. kedd 10:42:10
Copyright © Hungarian Unix Portal
Tartalomjegyzék |
A feladat
A feladat két hálózat biztonságos összekötése az Interneten keresztül. A megoldás: VPN-t kell építeni, amely biztosítja az adataink biztonságos utazását az Internet káoszában. A VPN egy OpenBSD és egy Windows XP között lesz kialakítva. Az OpenBSD látja el a VPN szerver szerepét. A Windows XP a kliens, míg a Linux gép a privát hálózaton levő FTP szerver, amelyet szeretnénk biztonságosan elérni.
A hálózat felépítése
TELEPHELY 1 TELEPHELY 2
10.0.0.19 10.0.0.254 192.168.0.1 192.168.0.10 --------------- --------------- --------------- --------------- | Linux FTP | | OpenBSD | 82.150.62.34 82.150.62.35 | Windows XP | | Linux | | gw: |------| VPN szerver |------------- INTERNET -------------| VPN kliens |--------| gw: | | 10.0.0.254 | | | 10.1.0.17 P-t-P 10.1.0.18 | | | 192.168.0.1 | --------------- --------------- --------------- ---------------
Szeretnénk a TELEPHELY 2-n levő helyi hálózatunkban található 192.168.0.10-es Linux gépről FTP-zni a TELEPHELY 1-en levő 10.0.0.19-es IP címmel rendelkező gépre. Mindezt az Interneten keresztül.
Az eszköz
A feladat megoldásához a két internetes kapcsolattal rendelkező gépre (OpenBSD, Windows XP), feltelepítjük az OpenVPN névre hallgató szoftver legfrissebb AZONOS verziószámmal rendelkező kiadását. Az OpenVPN letölthető innen. A telepítéshez segítséget találsz itt (Unix) és itt (Win32).
Kulcs generálás
A VPN tunnel-ünk egy ún. statikus kulcsú (preshared key- előre megosztott kulcs) tunnel lesz. Ehhez létre kell hoznunk egy kulcsot, amellyel a tunnel két végpontja azonosítja egymást.
Ennek a módja:
openvpn --genkey --secret static.key
A static.key nevű kulcsot fel kell másolnunk az OpenBSD és a Windows XP gépre is, a megfelelő könyvtárakba (OpenBSD - /etc/openvpn/static.key) (Windows XP - c:\Program Files\OpenVPN\config\static.key).
A szerver beállítása
Az OpenBSD-n létre kell kell hoznunk egy server.conf névre hallgató file-t a /etc/openvpn/ könyvtárban, a következő tartalommal:
# # Sample OpenVPN configuration file for # office using a pre-shared static key. # # '#' or ';' may be used to delimit comments.
# Use a dynamic tun device. # For Linux 2.2 or non-Linux OSes, # you may want to use an explicit # unit number such as "tun1". # OpenVPN also supports virtual # ethernet "tap" devices. dev tun0
# 10.1.0.1 is our local VPN endpoint (office). # 10.1.0.2 is our remote VPN endpoint (home). ifconfig 10.1.0.17 10.1.0.18
# Our up script will establish routes # once the VPN is alive. up ./office.up # Our pre-shared static key secret static.key
# OpenVPN uses UDP port 1194 by default. # Each OpenVPN tunnel must use # a different port number. # lport or rport can be used # to denote different ports # for local and remote. ; port 1194
# Downgrade UID and GID to # "nobody" after initialization # for extra security. ; user nobody ; group nobody
# If you built OpenVPN with # LZO compression, uncomment # out the following line. ; comp-lzo
# Send a UDP ping to remote once # every 15 seconds to keep # stateful firewall connection # alive. Uncomment this # out if you are using a stateful #hen a system # loses its connection. For example, dial-ups or laptops that # travel to other locations. ; ping 15 ; ping-restart 45 ; ping-timer-rem ; persist-tun ; persist-key
# Verbosity level. # 0 -- quiet except for fatal errors. # 1 -- mostly quiet, but display non-fatal network errors. # 3 -- medium output, good for normal operation. # 9 -- verbose, good for troubleshooting verb 9
és egy office.up névre hallgató szkriptet, amely a route-olást fogja beállítani. A szkript tartalma (figyeljünk arra, hogy futtatható legyen):
#!/bin/bash /sbin/route add -net 10.0.0.0 10.1.0.18
A szerver indítása
/usr/local/sbin/openvpn --config /etc/openvpn/server.conf
A kliens beállítása
A Windows XP-n létre kell hoznunk egy client.ovpn névre hallgató file-t a c:\Program Files\OpenVPN\config\ könyvtárban. Azért .ovpn a kiterjesztés, mert ha az OpenVPN-t service-ként szeretnénk futtatni, akkor a Windows ilyen kiterjesztéssel keresi a konfigurációs állományt.
A client.ovpn tartalma:
# Edit this file, and save to a .ovpn extension # so that OpenVPN will activate it when run # as a service.
# Change 'myremote' to be your remote host, # or comment out to enter a listening # server mode. remote 82.150.62.34
# Uncomment this line to use a different # port number than the default of 5000. port 1194
# Choose one of three protocols supported by # OpenVPN. If left commented out, defaults # to udp. ; proto [tcp-server | tcp-client | udp]
# You must specify one of two possible network # protocols, 'dev tap' or 'dev tun' to be used # on both sides of the connection. 'tap' creates # a VPN using the ethernet protocol while 'tun' # uses the IP protocol. You must use 'tap' # if you are ethernet bridging or want to route # broadcasts. 'tun' is somewhat more efficient # but requires configuration of client software # to not depend on broadcasts. Some platforms # such as Solaris, OpenBSD, and Mac OS X only # support 'tun' interfaces, so if you are # connecting to such a platform, you must also # use a 'tun' interface on the Windows side.
# Enable 'dev tap' or 'dev tun' but not both! dev tun
# This is a 'dev tap' ifconfig that creates # a virtual ethernet subnet. # 10.1.0.2 is the local VPN IP address # and 255.255.255.0 is the VPN subnet. # Only define this option for 'dev tap'. ifconfig 10.1.0.18 255.255.255.0
# This is a 'dev tun' ifconfig that creates # a point-to-point IP link. # 10.1.0.2 is the local VPN IP address and # 10.1.0.1 is the remote VPN IP address. # Only define this option for 'dev tun'. # Make sure to include the "tun-mtu" option # on the remote machine, but swap the order # of the ifconfig addresses. tun-mtu 1500 ifconfig 10.1.0.18 10.1.0.17
# If you have fragmentation issues or misconfigured # routers in the path which block Path MTU discovery, # lower the TCP MSS and internally fragment non-TCP # protocols. ;fragment 1300 ;mssfix
# If you have set up more than one TAP-Win32 adapter # on your system, you must refer to it by name. ;dev-node my-tap
# You can generate a static OpenVPN key # by selecting the Generate Key option # in the start menu. # # You can also generate key.txt manually # with the following command: # openvpn --genkey --secret key.txt # # key must match on both ends of the connection, # so you should generate it on one machine and # copy it to the other over a secure medium. # Place key.txt in the same directory as this # config file. secret static.key
# Uncomment this section for a more reliable # detection when a system loses its connection. # For example, dial-ups or laptops that travel # to other locations. # # If this section is enabled and "myremote" # above is a dynamic DNS name (i.e. dyndns.org), # OpenVPN will dynamically "follow" the IP # address of "myremote" if it changes. ; ping-restart 60 ; ping-timer-rem ; persist-tun ; persist-key ; resolv-retry 86400
# keep-alive ping ping 10
# enable LZO compression # comp-lzo
# moderate verbosity verb 9 # mute 10
A kliens indítása
- Indíthatjuk a klienset parancssorból (cmd):
openvpn --config client.ovpn
- vagy indíthajuk automatikusan is a Windows indulásakor service-ként. Ehhez be kell állítani a Windows XP-n a service-k között az OpenVPN service-t, hogy automatikusan induljon el bootkor.
Hogy a Windows XP mögötti hálózatból is elérhető legyen a TELEPHELY 1-en 10.0.0.19-es gép, be kell állítanunk a megfelelő route-ot:
route add 10.0.0.0 mask 255.255.255.0 10.1.0.17 -p
(a -p jelentése persistent, azaz reboot után is megőrződik a beállítás)
Egyebek
A megfelelő működéshez a helyi hálózaton levő gépeken be kell állítani az alapértelmezett átjárókat (default gateway) (lásd rajz feljebb). Ha a TELEPHELY 1-en levő 10.0.0.19-es gépről el szeretnénk érni a TELEPHELY 2-n levő 192.168.1.10-es gépet, az ebben az esetben nem fog menni. Ennek az az oka, hogy a Windows XP alapértelmezetten nem route-ol az interface-ek között (AFAIK). Megoldás:
A registry-ben (regedit) a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters alatt létre kell hozni egy új bejegyzést IPEnableRouter néven, és "1"-es értéket kell neki adni. Reboot után elérhető a TELEPHELY 1-en levő 10.0.0.19-es gépről a TELEPHELY 2-n levő 192.168.1.10-es gép.
Az OpenBSD-n meg kell oldani, hogy az OpenVPN automatikusan elinduljon.
Külső hivatkozások
Copyright, licenc, visszajelzés és ilyesmi
Micskó Gábor trey () hup ! hu - Hungarian Unix Portal - http://www.hup.hu/
Ez a dokumentum szabadon másolható és terjeszthető a GNU GPL terjesztési feltételei szerint.
Garancia nincs.
Visszajelzéseket, építő jellegű kritikát a trey () hup ! hu email címre várok.
Sok szerencsét!