Einen Router bauen
arrow.gif Entwicklungsumgebung
arrow.gif Hardware Plattformen
arrow.gif Slackware Router
arrow.gif Downloads
   
Weiterentwicklung
arrow.gif Tasks pending
arrow.gif Bugs
   
Informationen
arrow.gif Security
arrow.gif FAQ
arrow.gif Links
 
Slackware Linux Router
Prev Next

12. OpenVPN

12.1 Hintergrund

IPSec Lösungen eignen sich ausgezeichnet zur Verbindung von ganzen Netzen. Es ist jedoch nicht ganz einfach, einzelne mobile Clients mit Hilfe von IPSec an ein Netz anzubinden − insbesondere dann, wenn es sich um Clients mit verschiedenen Betriebssystemen handelt. Alle modernen Systeme unterstützen IPSec, aber dies bedeutet nicht, dass sich alle IPSec-Implementierungen problemlos miteinander kombinieren lassen.

Die hier vorgeschlagene Architektur benützt OpenVPN für die Anbindung von mobilen Geräten an ein LAN, das von einem DMZ-fähigen Router geschützt wird − beispielsweise von Linuxrouter! Die hier diskutierte Lösung platziert den OpenVPN-Server jedoch nicht auf dem Router − was technisch ohne weiteres möglich wäre − sondern auf einer separaten Maschine in der DMZ. Die folgenden Gründe sprechen für OpenVPN und für die Anordnung des Servers in einer DMZ:

  • Portierungen: Es existieren Portierungen von OpenVPN für W2K, Win XP WIN 7 und für Mac OS X. Für Mac und für Windows sind Pakete verfügbar, mit denen sich OpenVPN und eine zugehörige GUI per Mausklick installieren lassen, vergl. Links
  • Firewalls: OpenVPN benützt wahlweise udp oder tcp und hört auf einem frei wählbaren Port − damit ist es ausgesprochen «firewall and NAT friendly». Ein Umstand, der bei mobilen Clients, die unter Umständen selbst in geschützten Netzen angesiedelt sind, von Wichtigkeit ist.
  • Verbindungs-Sicherheit: OpenVPN verwendet bewährte Verfahren (TLS) für die Authentisierung der Peers und für die sichere Übermittlung der Pakete.
  • Separate Hardware für den Router und für den OpenVPN Gateway: Eine aufwändige Lösung − anderseits ist der Router die am stärksten exponierte Komponente des LAN. Aus diesem Grund sollte Linuxrouter selbst wenn immer möglich keine extern zugänglichen Dienste anbieten.

12.2 Übersicht

Die nachstehende Skizze zeigt den Aufbau der oben diskutierten Lösung. Die Architektur geht von der Annahme aus, dass mobile Clients via VPN auf einen File-, Mail- und Imapserver im LAN zugreifen sollen.

  +------------------+
  |                  |
  | File-Mail-Imap-  |
  |           Server |
  |                  |
  |------------------|
  |   10.10.10.20    |
  +------------------+
          |
          |
          |   LAN  10.10.10.0/24
    ----------------------------	
             |
             |
           eth0
    +------------------+
    |   10.10.10.10    |
    |------------------|                      +------------------+
    |              |   |                      |  Mobile Client   |
    |              |   |                      |------------------|
    | Linuxrouter  |eth1------/INTERNET/------| tun0: 10.50.50.6 |
    |              |   |                      |------------------|
    |              |   |                      |     a.b.c.d      |
    |------------------|                      +------------------+
    |   10.10.11.10    |
    +------------------+
           eth2
             |
             |  DMZ  10.10.11.0/24
    -------------------------------
           |
           |
         eth0
  +-------------------+
  |    10.10.11.20    |
  |-------------------|
  | tun0: 10.50.50.1  |
  |-------------------|
  |                   |
  |  OpenVPN Gateway  |
  |                   |
  +-------------------+
		
 

Clientseitig wurde der OpenVPN Server auf Windows 2000 SP4, Windows XP Professional SP3, Windows 7 Ultimate, Mac OS X 10.3.9, Mac OS X 10.4.8 und Slackware Linux 10.2, Slackware Linux 13.0 getestet.

Die VPN-Gateway Maschine basiert auf Slackware 10.2 mit Kernel 2.6.17.11. Auf dieser Plattform wurden neben OpenVPN 2.0.7 auch Apache mit WebDAV-Support, sowie ein ProFTP-, ein Squid- und ein Postfix-Server installiert. Mit diesem Ausbaugrad liegt der Platzbedarf des Systems bei 480MB.

Beim LAN-Server handelt es sich um eine Linux Plattform mit NFS, Samba, Postfix und Courier-Imap und Kalenderserver.

In einer Small-Office-Home-Office Anwendung kann der beschriebene DMZ-Server problemlos auf einem Soekris- oder PC-Engines-Board betrieben werden. In einem derartigen Umfeld ist gewöhnlich die Upstream-Transfer-Rate des Providers der limitierende Faktor bei Filetransfers oder bei VPN-Verbindungen, nicht die IO- oder die CPU-Leistung der Server-Plattform. Messungen mit Filetransfers durch einen IPSec-Tunnel mit beidseitiger 3000/300Kbit/sec Anbindung ergaben, dass die maximal mögliche Transferrate von 300Kbit/sec immer erreicht wurde.

12.3 Installation von OpenVPN auf der Gateway Maschine

Voraussetzungen:
-openssl >= 0.9.5
-libtool
-iproute2
-lzo (optional, eine Bibliothek zur verlustfreien Komprimierung von Dateien. Download: Links.)
-bridge-utils für /dev/tap (optional, nötig falls das tap-Device eingesetzt wird. Download: Links.)

Systemkonfiguration:
-Auf dem Gateway muss IP-Forwarding aktiviert werden (echo 1 > /proc/sys/net/ipv4/ip_forward).
-Es muss eine TUN Device-Node vorhanden sein. (Diese gegebenenfalls mit mknod /dev/net/tun c 10 200 anlegen.)

Es ist sinnvoll, den OpenVPN Server unter einer eigenen Gruppe und einem eigenen User zu betreiben. (Sicherstellen, dass /bin/false existiert und in /etc/shells aufgeführt ist.)

# /usr/sbin/groupadd openvpn
# /usr/sbin/useradd openvpn -g openvpn -c "OpenVPN server" -d /dev/null -s /bin/false
 

Kernelkonfiguration:
Der Kernel muss mit TUN/TAP und Bridging Support kompiliert werden.

Device Drivers -->
Network device support -->
 [*] Universal TUN/TAP device driver support (TUN)
		
 Networking -->
[*] Networking support (NET)
Networking options -->
 [*] Network packet filtering (replaces ipchains) (NETFILTER) -->
    [*] Network packet filtering debugging (NETFILTER_DEBUG)
    [*] Bridged IP/ARP packets filtering (BRIDGE_NETFILTER)
    Bridge: Netfilter Configuration -->
       [*] Ethernet Bridge tables (BRIDGE_NF_EBTABLES)
       [*] ebt: filter table support (BRIDGE_EBT_T_FILTER)
       [*] ebt IP filter support (BRIDGE_EBT_IP)
 [*] 802.1d Ethernet Bridging (BRIDGE)
 

Die Bridge-Utils bridge-utils-0.9.7.tgz entpacken, kompilieren und installieren.

$ tar xzvf bridge-utils-1.2.tar.gz
$ cd /bridge-utils-directory-tree

 

$ autoconf
$ ./configure --prefix=/usr/local/bridge-utils-1.2
$ make
# make install
 
# ln -s /usr/local/bridge-utils-1.2 /usr/local/bridge
 
# cp /usr/local/bridge/sbin/brctl /usr/local/sbin/brctl
 

Die Komprimierungs-Bibliothek lzo-2.02.tar.gz entpacken, kompilieren und installieren.

$ tar xzvf lzo-2.02.tar.gz
$ cd /lzo-directory-tree

 

$ ./configure
$ make
$ make check
$ make test
# make install
 

Den OpenVPN Server openvpn-2.0.7.tar.gz entpacken, kompilieren und installieren.

$ tar xzvf openvpn-2.0.7.tar.gz
$ cd /openvpn-directory-tree

 

$ ./configure --prefix=/usr/local \
--sysconfdir=/etc/openvpn \
--mandir=/usr/local/man \
--enable-iproute2 \
--with-lzo-headers=/usr/local/include \
--with-lzo-lib=/usr/local/lib

 

$ make
$ make check
# make install
 

12.4 Konfiguration von OpenVPN auf der Gateway Maschine

OpenVPN authentisiert die am Tunnel beteiligten Peers via Public Key Verfahren. Auf dem Gateway und auf den Clients müssen somit Maschinenzertifikate und -Keys, sowie das Zertifikat des Trustcentres, das diese ausgestellt hat, installiert werden.

Der OpenVPN Source Code enthät im Verzeichnis /openvpn-directory-tree/easy-rsa/ eine Anzahl Scripts, mit deren Hilfe die nötigen Keys und Zertifikate generiert werden können. (Vergl. http://openvpn.net/howto.html.)

Selbstverständlich können die notwendigen Files ebensogut mit Hilfe der CA.pl Perl Utility erzeugt werde, die im OpenSSL Source Code enthalten ist (/openssl-directory-tree/apps/). Vergl. http://www.openssl.org/docs/apps/CA.pl.html.)

Die Diffie-Hellmann Parameter, die der Gateway Server benötigt, werden mit dem SSL-Kommando:
$ openssl dhparam -out dh1024.pem 1024 erzeugt.

Falls das Server Zertifikat via CA.pl erzeugt wird, muss die Direktive nsCertType=server im Konfigurationsfile /openssl-directory-tree/apps/openssl.cnf aktiviert werden.

HINWEIS: Die Sicherheit der gesamten Public Key Infrastructure hängt davon ab, dass der Private Key der CA geheim bleibt. Die SSL Schlüssel und Zertifikate sollten somit auf einer separaten Maschine generiert und verwaltet werden − nicht auf dem OpenVPN Gateway in der DMZ!

 

Wenn die nötigen Keys und Zertifikate zur Verfügung stehen, können die zugehörigen Directories angelegt und mit den korrekten Files versehen werden. (Zum Testen kann auf die Liste der revozierten Zertifikate, crl.pem, verzichtet werden.)

# mkdir /etc/openvpn
# mkdir /etc/openvpn/ssl.ca
# mkdir /etc/openvpn/ssl.crl
# mkdir /etc/openvpn/ssl.crt
# mkdir /etc/openvpn/ssl.dh
# mkdir /etc/openvpn/ssl.key

 

# cp my_root_ca.crt /etc/openvpn/ssl.ca
# cp crl.pem /etc/openvpn/ssl.crl
# cp server.crt /etc/openvpn/ssl.crt
# cp dh1024.pem /etc/openvpn/ssl.dh
# cp server.key /etc/openvpn/ssl.key
 

Danach die Berechtigungen der Files und Directories anpassen.

# cd /etc/openvpn
# chown root:root ssl.key
# chmod 0700 ssl.key

 

# cd /etc/openvpn/ssl.ca
# chown root:root my_root_ca.crt
# chmod 0444 my_root_ca.crt

 

# cd /etc/openvpn/ssl.crl
# chown root:root crl.pem
# chmod 0444 crl.pem

 

# cd /etc/openvpn/ssl.crt
# chown root:root server.crt
# chmod 0444 server.crt

 

# cd /etc/openvpn/ssl.dh
# chown root:root dh1024.pem
# chmod 0444 dh1024.pem

 

# cd /etc/openvpn/ssl.key
# chown root:root server.key
# chmod 0400 server.key
 

Das Directory für das OpenVPN Logfile /var/log/openvpn und das Konfigurationsfile /etc/openvpn/server.conf anlegen. (Muster Konfigurationsfiles befinden sich im /openvpn-directory-tree/sample-config-files Directory. Die Konfigurationsoptionen von OpenVPN sind in der OpenVPN manpage http://openvpn.net/man.html detailliert beschrieben.)

# /etc/openvpn/server.conf
#
#=============================================
# Main settings
#=============================================
port 8443
dev tun
proto udp
user openvpn
group openvpn
persist-key
persist-tun
max-clients 10
keepalive 10 120
comp-lzo

#=============================================
# Settings for connecting clients
#=============================================
client-config-dir /etc/openvpn

#=============================================
# SSL
#=============================================
ca /etc/openvpn/ssl.ca/my_root_ca.crt
cert /etc/openvpn/ssl.crt/server.crt
key /etc/openvpn/ssl.key/server.key
dh /etc/openvpn/ssl.dh/dh1024.pem
;crl-verify /etc/openvpn/ssl.crl/crl.pem

#=============================================
# VPN subnet settings
#=============================================
# Set the VPN subnet.
server 10.50.50.0 255.255.255.0
ifconfig-pool-persist ipp.txt
# Tell the clients, which subnets are accessible for them.
push "route 10.10.11.0 255.255.255.0"
push "route 10.10.10.0 255.255.255.0"

#=============================================
# Logging
#=============================================
status /var/log/openvpn/openvpn-status.log
verb 3
 

Den OpenVPN Server starten und seinen Output auf Fehlermeldungen überprüfen.

# /usr/local/sbin/openvpn /etc/openvpn/server.conf
 

Wenn der Server korrekt startet, ein OpenVPN Startscript anlegen und in die Bootscripts des verwendeten Systems einbinden.

# /etc/rc.d/rc.openvpn

OPENVPN_DIR="/usr/local/sbin"
OPENVPN_CONF_DIR="/etc/openvpn"

openvpn_start() {
  if [ -f ${OPENVPN_CONF_DIR}/server.conf ];
  then
    echo "Starting OpenVPN server..."
    ${OPENVPN_DIR}/openvpn ${OPENVPN_CONF_DIR}/server.conf &
  fi
  
  if [ -f ${OPENVPN_CONF_DIR}/client.conf ];
  then
    echo "Starting OpenVPN client..."
    ${OPENVPN_DIR}/openvpn ${OPENVPN_CONF_DIR}/client.conf &
  fi  
}


openvpn_stop() {
  echo "Stopping OpenVPN..."
  /bin/killall openvpn 
}

openvpn_restart() {
  openvpn_stop 
  sleep 1
  openvpn_start
}


case "$1" in
   'start')
     openvpn_start
     ;;
   'stop')
      openvpn_stop
      ;;
   'restart')
      openvpn_restart
      ;;
   *)
      echo "usage $0 {start|stop|restart}" 
      exit 1
      ;;
esac
exit 0
 

12.5 Installation von OpenVPN auf Linux Clients

Das Vorgehen für eine Linux Client Installation von lzo und OpenVPN ist weitgehend identisch mit der Server Installation. Der Client benötigt kein Diffie-Hellmann-File und kein IP-Forwarding, ausserdem erhält er ein abgeändertes Konfigurationsfile. Selbstverständlich muss für jeden Client, der mit dem Gateway einen VPN-Tunnel aufbauen soll, ein eigenes Zertifikat und ein eigener Client Key angelegt werden.

# /etc/openvpn/client.conf
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
proto udp
user openvpn
group openvpn
persist-key
persist-tun
comp-lzo

#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite

#=============================================
# SSL
#=============================================
ca /etc/openvpn/ssl.ca/my_root_ca.crt
cert /etc/openvpn/ssl.crt/client.crt
key /etc/openvpn/ssl.key/client.key
ns-cert-type server

#=============================================
# Logging
#=============================================
verb 3
 

12.6 VPN-Tunnel aufbauen

Sobald zwei OpenVPN Installationen zur Verfügung stehen, können die Server getestet werden (es ist ratsam, dazu die Firewalls auf der Client- und auf der Server-Seite des Tunnels zu deaktivieren).

Falls die unter 12.2 vorgeschlagene, DMZ-basierte Lösung angewandt wird, müssen auf den beteiligten Maschinen die folgenden Routen eingerichtet werden:

Auf dem OpenVPN Gateway ist eine Route nötig, die Pakete mit der Destination 10.10.10.0/24 an Linuxrouter weiterleitet.

# /sbin/route add -net 10.10.10.0 netmask 255.255.255.0 gw 10.10.11.10 eth0
 

Auf Linuxrouter muss eine Route eingetragen werden, die dafür sorgt, dass Pakete, die von einem Server auf 10.10.10.20 an den Tunnel-Endpunkt auf dem Gateway 10.50.50.1 gesandt werden, dorthin weitergeleitet werden.

# /sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.11.20 eth2
 

HINWEIS: Falls auf dem File-Mail-Imap-Server (im Beispiel die Maschine 10.10.10.20) mehr als eine Netzwerkkarte installiert ist - beispielsweise weil die Maschine mehr als ein Subnetz bedient - dann kann es nötig sein, die Rückroute zum OpenVPN Gateway auf dem Fileserver ebenfalls einzutragen (Wert des «default gateway» beachten):

# /sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.10.10 eth0
 

12.7 Services im LAN via OpenVPN Tunnel aufrufen

Wenn sich 10.10.10.20 ab einem mobilen Client pingen lässt, können die NFS Shares des Fileservers gemounted werden.

# mount -t nfs 10.10.10.20:/nfs_share /nfs_mountpoint
 

Falls das Mount-Kommando fehlschlägt, die Konfiguration des NFS Servers überprüfen:
-Erlauben die File Permissions des NFS Servers Zugriffe für die uid des entfernten Users?
-Erlaubt der TCP Wrapper des NFS Servers (/etc/hosts.allow) Zugriffe aus dem virtuellen Netz 10.50.50.0/24?
-Erlaubt /etc/exports Zugriffe aus dem virtuellen Netz 10.50.50.0/24? (Siehe Beispiel.)

# /etc/exports

 

/nfs_share 10.10.10.0/255.255.255.0(rw,root_squash,async,insecure) \
10.50.50.0/255.255.0.0(rw,root_squash,async,insecure)
 

Damit mobile Clients Mails via 10.10.10.20:25 versenden können, muss der LAN Mailserver Verbindungsversuche aus dem virtuellen Netz 10.50.50.0/24 akzeptieren. Im Fall von Postfix muss dafür die mynetworks Direktive des Servers wie folgt angepasst werden:

# /etc/postfix/main.cf

 

mynetworks = 127.0.0.0/8, 10.10.10.0/24, 10.50.50.0/24
 

Ein erfolgreicher Verbindungsaufbau zum Imap Server setzt voraus, dass der verbindungswillige Client über einen gültigen Imap-Account verfügt.

12.8 Firewall Regeln für OpenVPN

Sobald der Verbindungsaufbau der OpenVPN Peers, sowie der Zugriff auf die gewünschten Services korrekt funktionieren, können die iptables-Scripts der beteiligten Firewalls angepasst werden. Auf der Seite des Clients müssen ausgehende Pakete zum OpenVPN Gateway zugelassen werden.

# Allow outgoing packets to destination port $p_open_vpn.
$IPTABLES -A FORWARD -o $EXT -p UDP --sport $p_high --dport $p_open_vpn -j ACCEPT
 

Auf der Seite des OpenVPN Gateways sind PREROUTING und FORWARD Regeln nötig. (Die Variablen $p_open_vpn, $OPEN_VPN_SERVER, $FILE_SERVER, $OPEN_VPN_NET, $DMZ, $EXT sind mit den korrekten Werten zu versehen.)

# Allow portforwarding to the OpenVPN server.
$IPTABLES -t nat -A PREROUTING -p udp --dport $p_open_vpn -i $EXT \
-j DNAT --to-destination $OPEN_VPN_SERVER

 

# Allow new incoming traffic going to the OpenVPN server.
$IPTABLES -A FORWARD -i $EXT -o $DMZ -d $OPEN_VPN_SERVER -p udp \
--dport $p_open_vpn -j ACCEPT

 

# Allow outgoing packets sent by the OpenVPN server.
$IPTABLES -A FORWARD -i $DMZ -o $EXT -s $OPEN_VPN_SERVER -p udp -j ACCEPT

 

# Allow NFS and Samba mounts accross the VPN tunnel.
# NOTE: NFS uses tcp ports for the portmapper and udp ports for the server.
# Samba uses udp and tcp ports 137:139 and tcp port 445. Make sure these
# ports are not blacklisted elsewhere in the firewall script).

 

$IPTABLES -A FORWARD -i $DMZ -o $INT -s $OPEN_VPN_NET -p tcp \
-d $FILE_SERVER_LAN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

 

$IPTABLES -A FORWARD -i $INT -o $DMZ -s $FILE_SERVER_LAN -p tcp \
-d $OPEN_VPN_NET -m state --state ESTABLISHED,RELATED -j ACCEPT

 

$IPTABLES -A FORWARD -i $DMZ -o $INT -s $OPEN_VPN_NET -p udp -d $FILE_SERVER_LAN -j ACCEPT
$IPTABLES -A FORWARD -i $INT -o $DMZ -s $FILE_SERVER_LAN -p udp -d $OPEN_VPN_NET -j ACCEPT
 

12.9 Installation von OpenVPN auf Windows Clients

Voraussetzungen:
-Windows 2000 oder besser.
-Gültige PKI-Zertifikate und ein Client Key müssen zur Verfügung stehen.

Downloads: Links

Installation von lzo:
lzo-x.y.z.exe ausführen. Damit wird lzo nach c:\programme\gnuwin32\ installiert. Anschliessend sicherstellen, dass die folgenden Umgebungsvariabeln existieren:
TMPDIR=%TEMP%
TMP=%TEMP%
HOME=%HOMEDRIVE%%HOMEPATH%

Installation von OpenVPN via Windows Installer:
Der Installer erzeugt ein Muster-Konfigurationsfile C:\Program Files\OpenVPN\config\sample.ovpn.txt.
Eine OpenVPN Gruppe und ein OpenVPN User fehlen unter Windows, ausserdem benötigt das System den Namen des TAP-Win32 Adapters, der in der «Netzwerkumgebung» aufgeführt ist. Ansonsten sind die Konfigurationsparameter des Clients unter Windows identisch mit der Linux Clientkonfiguration.

# c:\programme\openvpn\config\client.ovpn
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
dev-node "LAN-Verbindung 3"
proto udp
persist-key
persist-tun
comp-lzo

#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite

#=============================================
# SSL
#=============================================
ca ssl.ca/my_root_ca.crt
cert ssl.crt/client.crt
key ssl.key/client.key
ns-cert-type server

#=============================================
# Logging
#=============================================
verb 3
 

Die SSL Directories anlegen und mit den Zertifikats- und Key-Files versehen.

# cd c:\programme\openvpn\config\
# mkdir ssl.ca
# mkdir ssl.cert
# mkdir ssl.key

 

# copy my_root_ca.crt c:\programme\openvpn\config\ssl.ca
# copy client.crt c:\programme\openvpn\config\ssl.cert
# copy client.key c:\programme\openvpn\config\ssl.key
 

Starten des Servers unter Windows:
Falls der OpenVPN Server inklusive GUI installiert wurde, wird der Daemon durch Doppelklick auf das Icon im System Tray gestartet, ansonsten per DOS-Box: c:\programme\openvpn\config > openvpn --config client.ovpn.
(F4 zum Beenden des Servers.)

BEACHTEN: Unter Windows muss OpenVPN mit Administrator Rechten gestartet werden.

Hilfe: http://openvpn.net/INSTALL-win32.html

Sobald ein VPN-Tunnel zum Gateway aufgebaut ist, können vorhandene Samba Shares mit Hilfe von net use auf freie Win-Laufwerksbuchstaben abgebildet werden.

> net use s: \\10.10.10.20\samba_share sambapw /user:sambauser
> net use /delete s:
 

Troubleshooting Samba:
Überprüfen, ob die hosts allow Direktive in /etc/samba/smb.conf Zugriffe aus dem virtuellen Netz 10.50.50.0/24 erlaubt.

12.10 Installation von OpenVPN auf Macintosh Clients

Voraussetzungen:
-Mac OS X >= 10.3.x
-Gültige PKI-Zertifikate und ein Client Key müssen zur Verfügung stehen.
-Es scheinen (noch) keine «easy-to-install» lzo-Images für Macintosh zu existieren.

Downloads: Links

Installation:
-Das Tunnelblick Disc-Image downloaden und mounten.
-Den Installer Tunnelblick-Complete.mpkg mit Doppelklick starten.
-Tunnelblick wird damit nach /Applications/Tunnelblick.app installiert.
-Das Tunnelblick Image umounten.

Konfiguration: Den Server mit Doppelklick auf /Applications/Tunnelblick.app starten. Beim ersten Start erscheint eine Warnung, dass noch kein Konfigurationsfile existiert. Continue auswählen, damit wird ein Muster-Konfigurationsfile geöffnet.

Das Konfigurationsfile editieren und speichern. (Das Konfigurationsfile für den User admin wird unter /Users/admin/Library/openvpn/openvpn.conf angelegt.)

# /Users/admin/Library/openvpn/openvpn.conf
#
#=============================================
# Main settings
#=============================================
client
nobind
dev tun
proto udp
user nobody
group nobody
persist-key
persist-tun
;comp-lzo

#============================================
# VPN connection settings
#============================================
remote www.my-server.ch 8443
resolv-retry infinite

#=============================================
# SSL
#=============================================
ca ssl.ca/my_root_ca.crt
cert ssl.cert/client.crt
key ssl.pkey/client.key
ns-cert-type server

#=============================================
# Logging
#=============================================
verb 3
 

Die SSL Directories anlegen und mit den Zertifikats- und Key-Files versehen. (Im Beispiel wird angenommen, dass die OpenVPN Installation für den User admin vorgenommen wird.)

# cd /Users/admin/Library/openvpn
# mkdir ssl.ca
# mkdir ssl.cert
# mkdir ssl.pkey

 

# cp my_root_ca.crt /Users/admin/Library/openvpn/ssl.ca
# cp client.crt /Users/admin/Library/openvpn/ssl.cert
# cp client.key /Users/admin/Library/openvpn/ssl.pkey
 

Die Berechtigungen der Directories und Files überprüfen und gegebenfalls anpassen.

# cd /Users/admin/Library/openvpn
# chown -R admin:staff *
# chmod 0700 ssl.pkey

 

# cd /Users/admin/Library/openvpn/ssl.ca
# chmod 0444 my_root_ca.crt

 

# cd /Users/admin/Library/openvpn/ssl.cert
# chmod 0444 client.crt

 

# cd /etc/openvpn/ssl.pkey
# chmod 0400 client.key
 

Starten des Servers unter Mac OS X:
Mit Klick auf das Tunnelsymbol rechts oben in der Haupmenue-Leiste das Tunnelblick Startmenue öffnen. Connect startet den Server.

Troubleshooting Tunnelblick:
Falls der Server sich nicht mit Doppelklick und Connect starten lässt, auf die Kommandozeile wechseln und die Startmeldungen des Daemons auf Fehlermeldungen überprüfen.

$ cd /Users/admin/Library/openvpn
$ /usr/local/sbin/openvpn openvpn.conf
 

Wenn der Tunnel zum Gateway aufgebaut ist, können vorhandene Samba Shares gemounted werden.
Dazu im Finder den Menuepunkt Go auswählen (Shortcut Apple-k) und im Fenster, das damit geöffnet wird, die Server Adresse eintragen.

(HINWEIS: Das Browse-Kommando funktioniert nicht über Netzwerkgrenzen hinweg, denn Browse beruht auf Broadcasts.)

cifs://sambauser:sambapw@10.10.10.20/samba_share
 

NFS Shares werden via Finder mit dem folgenden Kommando gemounted:

nfs://10.10.10.20/nfs_share
 

Troubleshooting Samba:
-Überprüfen, ob die hosts allow Direktive in /etc/samba/smb.conf Zugriffe aus dem virtuellen Netz 10.50.50.0/24 erlaubt.

Troubleshooting NFS:
-Vergl. 12.7
-HINWEIS: Für Macintosh-Connects müssen NFS Shares mit der Direktive insecure exportiert werden, da der Mac Finder defaultmässig versucht, sich mit Ports > 1024 zu verbinden.

Hilfe:
Das README File der Tunnelblick Software beinhaltet alle nötigen Informationen für die Installation von OpenVPN auf Macintosh.

12.11 Installation von OpenVPN auf einer LAN Maschine

Die Installation des OpenVPN Servers in der DMZ ( wie oben diskutiert ) stellt für Firmen und sicherheitsbewusste ( oder leicht paranoide ;-) ) Anwender die Lösung der Wahl dar. Im Home-Office-Bereich kann es aber sinnvoll sein, eine weniger komplexe Lösung zu implementieren.

Bezüglich Installation und Konfiguration des OpenVPN Servers gibt es keinen Unterschied zwischen einer DMZ- und einer LAN-Installation.

Bei einer Installation im LAN gemäss der nachstehend skizzierten Architektur ist lediglich folgendes zu beachten:

    +-------------------+            +------------------+
    |  OpenVPN Host     |            |                  |
    |        Maschine   |            | File-Mail-Imap-  |
    |-------------------|            |           Server |
    | tun0: 10.50.50.1  |            |                  |
    |-------------------|            |------------------|
    |    10.10.10.11    |            |   10.10.10.20    |
    +-------------------+            +------------------+
             |                                |
             |                                |
             |   LAN  10.10.10.0/24           |
    ---------------------------------------------------	
             |
             |
           eth0
    +------------------+
    |   10.10.10.10    |
    |------------------|                      +------------------+
    |              |   |                      |  Mobile Client   |
    |              |   |                      |------------------|
    | Linuxrouter  |eth1------/INTERNET/------| tun0: 10.50.50.6 |
    |              |   |                      |------------------|
    |              |   |                      |     a.b.c.d      |
    +------------------+                      +------------------+
		
 

-Falls zusätzlich zum LAN-Host (10.10.10.11) weitere Maschinen im LAN (10.10.10.20) via OpenVPN erreichbar sein sollen, dann muss auf dem LAN-Host das Kernel IP Forwarding aktiviert werden.

echo "1" > /proc/sys/net/ipv4/ip_forward
 

-Auf den zusätzlichen Zielmaschinen im LAN (10.10.10.20) muss die Rück-Route zum OpenVPN Host definiert werden, damit Pakete, die für den OpenVPN Server bestimmt sind, nicht an den Default Gateway, 10.10.10.10, geschickt werden, sondern an die OpenVPN Host Maschine.

/sbin/route add -net 10.50.50.0 netmask 255.255.255.0 gw 10.10.10.11 eth0
 

-Linuxrouter: Selbstverständlich muss dass Port-Forwarding auf Linuxrouter so konfiguriert werden, dass Pakete, die für den OpenVPN Server bestimmt sind, an den korrekten LAN-Host weitergeleitet werden.

 


Prev Home Next
Virtual Private Network mit IPSec Content L2TP/IPSec Server und Android