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!