tun
(für Tunnel auf IP-Ebene) und tap
(für Tunnel auf Ethernet-Ebene) werden unterstützt. In der Praxis werden meistens tun
-Schnittstellen verwendet, außer wenn die VPN-Clients durch eine Ethernet-Brücke in das lokale Netz des Servers integriert werden sollen.
pki/ca.crt
) wird auf allen Rechnern (sowohl Server als auch Clients) als /etc/ssl/certs/Falcot_CA.crt
gespeichert. Das Zertifikat des Servers wird nur auf dem Server installiert (pki/issued/vpn.falcot.com.crt
geht nach /etc/ssl/vpn.falcot.com.crt
und pki/private/vpn.falcot.com.key
geht nach /etc/ssl/private/vpn.falcot.com.key
mit eingeschränkten Berechtigungen, sodass nur der Administrator sie lesen kann), während die entsprechenden Diffie-Hellman-Parameter (pki/dh.pem
) nach /etc/openvpn/dh.pem
installiert werden. Die Client-Zertifikate werden in ähnlicher Weise auf den entsprechenden VPN-Clients installiert.
/etc/openvpn/*.conf
festgelegten virtuellen privaten Netzwerke zu starten. Einen VPN-Server einzurichten besteht daher darin, eine entsprechende Konfigurationsdatei in diesem Verzeichnis abzuspeichern. Ein guter Ausgangspunkt ist /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
, das zu einem ziemlich standardisierten Server führt. Natürlich müssen einige Parameter angepasst werden: ca
, cert
, key
und dh
müssen die ausgewählten Orte bezeichnen (jeweils /etc/ssl/certs/Falcot_CA.crt
, /etc/ssl/vpn.falcot.com.crt
, /etc/ssl/private/vpn.falcot.com.key
und /etc/openvpn/dh.pem
). Die Anweisung server 10.8.0.0 255.255.255.0
bestimmt das für das VPN zu nutzende Subnetz; der Server belegt die erste IP-Adresse dieses Bereichs (10.8.0.1
), während die übrigen Adressen den Clients zugeordnet werden.
tun0
. Jedoch werden Firewalls häufig zur gleichen Zeit wie die echten Netzwerkschnittstellen konfiguriert, also vor dem Start von OpenVPN. Ein bewährtes Verfahren besteht deshalb darin, eine dauerhafte Schnittstelle für das virtuelle Netzwerk einzurichten und OpenVPN so zu konfigurieren, dass es dann diese bereits bestehende Schnittstelle benutzt. Dies macht es auch möglich, einen Namen für diese Schnittstelle auszuwählen. Zu diesem Zweck erstellt der Befehl openvpn --mktun --dev vpn --dev-type tun
eine Schnittstelle des virtuellen Netzwerks namens vpn
und des Typs tun
; dieser Befehl kann leicht in das Konfigurationsskript der Firewall integriert werden oder in eine up
-Anweisung der Datei /etc/network/interfaces
oder eine udev-Regel kann ans Ende angehängt werden. Die OpenVPN-Konfigurationsdatei muss ebenfalls in entsprechender Weise mit den Anweisungen dev vpn
und dev-type tun
aktualisiert werden.
10.8.0.1
erreichen. Um den Clients Zugang zum lokalen Netzwerk (192.168.0.0/24) zu gewähren, muss die Anweisung push route 192.168.0.0 255.255.255.0
zur OpenVPN-Konfiguration hinzugefügt werden, so dass VPN-Clients automatisch eine Netzwerkroute erhalten, die ihnen sagt, dass dieses Netzwerk über das VPN zu erreichen ist. Darüberhinaus müssen Rechner im lokalen Netzwerk ebenfalls darüber informiert werden, dass der Weg zum VPN über den VPN-Server verläuft (dies funktioniert automatisch, wenn der VPN-Server auf dem Gateway installiert ist). Alternativ kann der VPN-Server auch IP-Masquerading unterstützen, so dass von den VPN-Clients kommende Verbindungen so aussehen, als kämen sie stattdessen vom VPN-Server (siehe Abschnitt 10.1, „Gateway“).
/etc/openvpn/
. Eine Standard-Konfiguration findet sich in der Datei /usr/share/doc/openvpn/examples/sample-config-files/client.conf
. Die Anweisung remote vpn.falcot.com 1194
bezeichnet die Adresse und den Port des OpenVPN-Servers; ca
, cert
und key
müssen auch angepasst werden, so dass sie die Orte der Schlüsseldateien bezeichnen.
AUTOSTART
-Anweisung in der Datei /etc/default/openvpn
auf none
. Das Starten oder Anhalten einer bestimmten VPN-Verbindung ist immer mit den Befehlen systemctl start openvpn@Name
und systemctl stop openvpn@name
möglich (wobei die Verbindung Name mit derjenigen übereinstimmen muss, die in /etc/openvpn/Name.conf
eingetragen ist).
tun*
) auf beiden Seiten einer SSH-Verbindung erstellen, und diese virtuellen Schnittstellen können genauso konfiguriert werden, als seien es reale Schnittstellen. Das Tunnelungssystem muss zuvor aktiviert werden, indem PermitTunnel
in der Konfigurationsdatei des SSH-Servers (/etc/ssh/sshd_config
) auf "yes" gesetzt wird. Bei der Einrichtung der SSH-Verbindung muss die Erstellung eines Tunnels ausdrücklich mit der Option -w any:any
verlangt werden (any
kann durch die gewünschte tun
-Gerätenummer ersetzt werden). DEr Benutzer benötigt Administratorrechte auf beiden Seiten, um das Netzwerkgerät erstellen zu können (mit anderen Worten: die Verbindung muss als Root eingerichtet werden).
/etc/ipsec.conf
jedes Hosts die Parameter für IPsec-Tunnel (oder Security Associations, in der IPsec-Terminologie), mit denen sich der Host befasst. Es gibt viele Konfigurationsbeispiele in /usr/share/doc/libreswan/
, aber die Online-Dokumentation von Libreswan enthält weitere Beispiele mit Erläuterungen:
systemctl
gesteuert werden; z.B. wird systemctl start ipsec
den IPsec-Dienst starten.
/etc/ppp/options.pptp
, /etc/ppp/peers/falcot
, /etc/ppp/ip-up.d/falcot
und /etc/ppp/ip-down.d/falcot
.
Beispiel 10.2. Die Datei /etc/ppp/options.pptp
# PPP options fuer eine PPTP connection lock noauth nobsdcomp nodeflate
Beispiel 10.3. Die Datei /etc/ppp/peers/falcot
# vpn.falcot.com ist der PPTP server pty "pptp vpn.falcot.com --nolaunchpppd" # die Verbindung wird dem "vpn" Benutzer zugerechnet user vpn remotename pptp # Verschluesselung wird benuetigt require-mppe-128 file /etc/ppp/options.pptp ipparam falcot
pptpd
ist der PPTP-Server für Linux. Dessen Hauptkonfiguratiosdatei, /etc/pptpd.conf
, erfordert nur sehr wenige Änderungen: localip (die lokale IP-Adresse) und remoteip (die entfernte IP-Adresse). Im folgenden Beispiel benutzt der PPTP-Server stets die Adresse 192.168.0.199
, und PPTP-Clients erhalten Adressen von 192.168.0.200
bis 192.168.0.250
.
Beispiel 10.6. Die Datei /etc/pptpd.conf
[..] # TAG: localip # TAG: remoteip # Specifies the local and remote IP address ranges. # # These options are ignored if delegate option is set. # # Any addresses work as long as the local machine takes care of the # routing. But if you want to use MS-Windows networking, you should # use IP addresses out of the LAN address space and use the proxyarp # option in the pppd options file, or run bcrelay. # # You can specify single IP addresses seperated by commas or you can # specify ranges, or both. For example: # # 192.168.0.234,192.168.0.245-249,192.168.0.254 # # IMPORTANT RESTRICTIONS: # # 1. No spaces are permitted between commas or within addresses. # # 2. If you give more IP addresses than the value of connections, # it will start at the beginning of the list and go until it # gets connections IPs. Others will be ignored. # # 3. No shortcuts in ranges! ie. 234-8 does not mean 234 to 238, # you must type 234-238 if you mean this. # # 4. If you give a single localIP, that's ok - all local IPs will # be set to the given one. You MUST still give at least one remote # IP for each simultaneous client. # # (Recommended) #localip 192.168.0.1 #remoteip 192.168.0.234-238,192.168.0.245 # or #localip 192.168.0.234-238,192.168.0.245 #remoteip 192.168.1.234-238,192.168.1.245 localip 192.168.0.199 remoteip 192.168.0.200-250
/etc/ppp/pptpd-options
. Die wichtigen Parameter sind der Servername (pptp
), der Domainname (falcot.com
) und die IP-Adressen für DNS- und WINS-Server.
Beispiel 10.7. Die Datei /etc/ppp/pptpd-options
# Enable connection debugging facilities. # (see your syslog configuration for where pppd sends to) #debug # Name of the local system for authentication purposes # (must match the second field in /etc/ppp/chap-secrets entries) name pptpd # Optional: domain name to use for authentication ## change the domainname to your local domain domain falcot.com # Authentication ## these are reasonable defaults for WinXXXX clients ## for the security related settings auth refuse-pap refuse-chap refuse-mschap # Require the peer to authenticate itself using MS-CHAPv2 [Microsoft # Challenge Handshake Authentication Protocol, Version 2] authentication. require-mschap-v2 # Require MPPE 128-bit encryption # (note that MPPE requires the use of MSCHAP-V2 during authentication) require-mppe-128 # Network and Routing ## Fill in your addresses ms-dns 192.168.0.1 ms-wins 192.168.0.1 ## Fill in your netmask netmask 255.255.255.0 ## some defaults nodefaultroute proxyarp lock
vpn
-Benutzer (und das dazugehörige Passwort) in der Datei /etc/ppp/chap-secrets
registriert. Hier muss statt des Sterns (*
) der Servername ausdrücklich angegeben werden. Außerdem identifizieren sich Windows-PPTP-Clients in der Form DOMAIN\\BENUTZER
statt nur einen Benutzernamen anzugeben. Dies erklärt, warum die Datei auch den Benutzer FALCOT\\vpn
erwähnt. Es ist auch möglich, individuelle IP-Adressen für Benutzer anzugeben; ein Stern in diesem Feld bedeutet, dass dynamisch adressiert werden soll.