Größe: 888
Kommentar:
|
Größe: 4443
Kommentar:
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 1: | Zeile 1: |
= Konfiguration eines OpenVPN-Servers innerhalb eines VServer-Gastes = <<TableOfContents()>> |
|
Zeile 3: | Zeile 7: |
== Server == === Schritte im VServer-Wirtsystems === ==== persistenten Tunnel beim Start des VServer-Gastes erzeugen ==== Skript {{{/etc/vservers/VSERVER/scripts/initialize}}} anlegen und ausführbar machen, mit dem Inhalt |
|
Zeile 4: | Zeile 15: |
http://linux-vserver.org/Frequently_Asked_Questions#Can_I_run_an_OpenVPN_Server_in_a_guest.3F http://debianforum.de/forum/viewtopic.php?f=30&t=127504 |
#!/bin/bash |
Zeile 7: | Zeile 17: |
http://www.techrepublic.com/blog/opensource/how-to-set-up-an-openvpn-server/1873 http://openvpn.net/index.php/open-source/documentation/howto.html#install |
/usr/sbin/openvpn --mktun --dev tun23 /sbin/ip link set dev tun23 txqueuelen 100 /sbin/ifconfig tun23 10.0.0.1 pointopoint 10.0.0.2 mtu 1500 /sbin/route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.2 }}} |
Zeile 10: | Zeile 23: |
http://wiki.cacert.org/openVPN http://robert.penz.name/21/ovpncncheck-an-openvpn-tls-verify-script/ http://wiki.yobi.be/wiki/Virtual_Private_Networks |
Dabei müssen die IP-Adressen natürlich passend gewählt werden. Des Weiteren muss dafür gesorgt werden, daß jeder VServer-Gast sein eigenes Tunnel-Interface (hier {{{tun23}}}) bekommt. |
Zeile 14: | Zeile 25: |
http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html ifconfig-pool-persist persist-tun |
==== Interfaces im VServer-Gast bekannt machen ==== |
Zeile 18: | Zeile 27: |
# Downgrade to an unpriviledged user for security after initialization user nobody group nobody |
Dateien {{{/etc/vservers/VSERVER/interfaces/NUMMER/ip}}}, {{{/etc/vservers/VSERVER/interfaces/NUMMER/prefix}}}, {{{/etc/vservers/VSERVER/interfaces/NUMMER/nodev}}} anlegen: |
Zeile 22: | Zeile 29: |
# Use a persistent key and tunnel interface. Helpful if running as an # unpriviledged user and the connection goes down. |
|| ip || 10.0.0.1 || || prefix || 24 || || nodev || tun23 || ==== Kontroll-Devicenode anlegen ==== {{{ mkdir -m 0755 /var/lib/vservers/VSERVER/dev/net mknod -m 0660 /var/lib/vservers/VSERVER/dev/net/tun c 10 200 }}} === Schritte im VServer-Gastsystem === ==== Zertifikate erzeugen ==== Es bietet sich an, eine eigene CA zu erzeugen und diese zur Ausstellung von Server- und Clientzertifikaten zu benutzen, da in der Default-Konfiguration der OpenVPN-Server alle gültigen Zertifikate akzeptiert. Wird stattdessen eine öffentliche CA wie z.B. CACert benutzt, muss der OpenVPN-Server so konfiguriert werden, daß bei jedem Verbindungsaufbau die Attribute des Zertifikats geprüft werden. Siehe dazu die Links an Ende dieses Artikels. /!\ hier fehlt noch die Anleitung zur Erzeugung der Zertifikate /!\ ==== OpenVPN-Server konfigurieren ==== /etc/server.conf {{{ server 10.0.0.0 255.255.255.0 dev tun23 ifconfig-noexec route-noexec comp-lzo client-to-client ifconfig-pool-persist ipp.txt dh dh1024.pem ca ca.crt cert server.crt key server.key keepalive 10 60 ;user nobody ;group nogroup |
Zeile 26: | Zeile 69: |
status openvpn-status.log verb 4 management localhost 7505 /etc/openvpn/mgmt-pw |
|
Zeile 27: | Zeile 73: |
/etc/openvpn/mgmt-pw {{{ irgendein gutes passwort }}} Interessante Optionen (siehe auch die OpenVPN manpage): || client-to-client || sind mehrere Clients mit dem Server verbunden, so können diese auch untereinander Daten austauschen, ohne diese Option kann immer nur mit dem Server kommuniziert werden || || ifconfig-pool-persist || Clients bekommen immer die selbe IP-Adresse zugewiesen || || status || bei jeder Status-Änderung wird die Datei mit dem aktuellen Zustand gefüllt || || management || aktiviert das Admin-Interface || == Client(s) == /etc/openvpn/client.conf {{{ client proto udp dev tun remote garfield.prima.de comp-lzo verb 4 ca ca.crt cert cl-sakura.crt key cl-sakura.key }}} Das Zertifikat der CA (ca.crt) ist bei allen Teilnehern (Server und Client(s)) identisch. == Internet-Verbindungen == Das beschriebene Setup erlaubt keine Verbindung zum Internet, routing/NATing sind auf dem VServer-Host nicht aktiv. Da Linux-VServer eine gemeinsame Routingtable für alle Gäste und das Wirtssystem verwendet, ist routing nicht trivial aufzusetzen. Es werden iptables-Regeln benötigt, um sicherzustellen, daß keine getrennten VPNs miteinander verbunden werden. Alternativ kann auf Policy-Routing aufgebaut werden. Als simple Alternative bieten sich TCP-Relays an, die im Userspace laufe. Hier gibt es mehrere Optionen: * [[https://packages.debian.org/simpleproxy|simpleproxy]] * [[https://packages.debian.org/socat|socat]] * [[https://packages.debian.org/stone|stone]] * [[https://packages.debian.org/rinetd|rinetd]] = Links = * http://linux-vserver.org/Frequently_Asked_Questions#Can_I_run_an_OpenVPN_Server_in_a_guest.3F * http://debianforum.de/forum/viewtopic.php?f=30&t=127504 * http://www.techrepublic.com/blog/opensource/how-to-set-up-an-openvpn-server/1873 * http://openvpn.net/index.php/open-source/documentation/howto.html#install * http://wiki.cacert.org/openVPN * http://robert.penz.name/21/ovpncncheck-an-openvpn-tls-verify-script/ * http://wiki.yobi.be/wiki/Virtual_Private_Networks * http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html |
Konfiguration eines OpenVPN-Servers innerhalb eines VServer-Gastes
Inhaltsverzeichnis
Work in progress
Server
Schritte im VServer-Wirtsystems
persistenten Tunnel beim Start des VServer-Gastes erzeugen
Skript /etc/vservers/VSERVER/scripts/initialize anlegen und ausführbar machen, mit dem Inhalt
#!/bin/bash /usr/sbin/openvpn --mktun --dev tun23 /sbin/ip link set dev tun23 txqueuelen 100 /sbin/ifconfig tun23 10.0.0.1 pointopoint 10.0.0.2 mtu 1500 /sbin/route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.2
Dabei müssen die IP-Adressen natürlich passend gewählt werden. Des Weiteren muss dafür gesorgt werden, daß jeder VServer-Gast sein eigenes Tunnel-Interface (hier tun23) bekommt.
Interfaces im VServer-Gast bekannt machen
Dateien /etc/vservers/VSERVER/interfaces/NUMMER/ip, /etc/vservers/VSERVER/interfaces/NUMMER/prefix, /etc/vservers/VSERVER/interfaces/NUMMER/nodev anlegen:
ip |
10.0.0.1 |
prefix |
24 |
nodev |
tun23 |
Kontroll-Devicenode anlegen
mkdir -m 0755 /var/lib/vservers/VSERVER/dev/net mknod -m 0660 /var/lib/vservers/VSERVER/dev/net/tun c 10 200
Schritte im VServer-Gastsystem
Zertifikate erzeugen
Es bietet sich an, eine eigene CA zu erzeugen und diese zur Ausstellung von Server- und Clientzertifikaten zu benutzen, da in der Default-Konfiguration der OpenVPN-Server alle gültigen Zertifikate akzeptiert. Wird stattdessen eine öffentliche CA wie z.B. CACert benutzt, muss der OpenVPN-Server so konfiguriert werden, daß bei jedem Verbindungsaufbau die Attribute des Zertifikats geprüft werden. Siehe dazu die Links an Ende dieses Artikels.
hier fehlt noch die Anleitung zur Erzeugung der Zertifikate
OpenVPN-Server konfigurieren
/etc/server.conf
server 10.0.0.0 255.255.255.0 dev tun23 ifconfig-noexec route-noexec comp-lzo client-to-client ifconfig-pool-persist ipp.txt dh dh1024.pem ca ca.crt cert server.crt key server.key keepalive 10 60 ;user nobody ;group nogroup persist-key persist-tun status openvpn-status.log verb 4 management localhost 7505 /etc/openvpn/mgmt-pw
/etc/openvpn/mgmt-pw
irgendein gutes passwort
Interessante Optionen (siehe auch die OpenVPN manpage):
client-to-client |
sind mehrere Clients mit dem Server verbunden, so können diese auch untereinander Daten austauschen, ohne diese Option kann immer nur mit dem Server kommuniziert werden |
ifconfig-pool-persist |
Clients bekommen immer die selbe IP-Adresse zugewiesen |
status |
bei jeder Status-Änderung wird die Datei mit dem aktuellen Zustand gefüllt |
management |
aktiviert das Admin-Interface |
Client(s)
/etc/openvpn/client.conf
client proto udp dev tun remote garfield.prima.de comp-lzo verb 4 ca ca.crt cert cl-sakura.crt key cl-sakura.key
Das Zertifikat der CA (ca.crt) ist bei allen Teilnehern (Server und Client(s)) identisch.
Internet-Verbindungen
Das beschriebene Setup erlaubt keine Verbindung zum Internet, routing/NATing sind auf dem VServer-Host nicht aktiv. Da Linux-VServer eine gemeinsame Routingtable für alle Gäste und das Wirtssystem verwendet, ist routing nicht trivial aufzusetzen. Es werden iptables-Regeln benötigt, um sicherzustellen, daß keine getrennten VPNs miteinander verbunden werden. Alternativ kann auf Policy-Routing aufgebaut werden.
Als simple Alternative bieten sich TCP-Relays an, die im Userspace laufe. Hier gibt es mehrere Optionen:
Links
http://linux-vserver.org/Frequently_Asked_Questions#Can_I_run_an_OpenVPN_Server_in_a_guest.3F
http://www.techrepublic.com/blog/opensource/how-to-set-up-an-openvpn-server/1873
http://openvpn.net/index.php/open-source/documentation/howto.html#install
http://robert.penz.name/21/ovpncncheck-an-openvpn-tls-verify-script/
http://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html