OpenVPN – öffentliches Netzwerk -> Homeserver -> Internet

laenger

ACME Produkttester
Hello,

momentan scheitere ich an der Konfiguration eines VPN-Servers und bräuchte etwas Hilfe.
Anbei eine kleine Grafik, wie ich mir das vorgestellt habe.

Folgende Anforderungen sollen wenn möglich erfüllt werden:
Laptop 1 & 2 befinden sich in einem öffentlichen Netzwerk. Diese sollen per OpenVPN auf den Homeserver zugreifen (rote Linien), wobei fortan der gesamte Netzwerkverkehr über die gesicherte Leitung zum Servers laufen soll.
Es sollten nach außen hin so aussehen, als ob sich die Laptops im Heimnetzwerk befinden, von da aus diese ins Internet gehen um Webseiten, Internetbanking, eMail, etc. auf zu rufen.
Weiters sollen die beiden Laptops auf gemeinsame Freigaben der PCs 1 & 2 (z.B. Samba) und den Drucker im Heimnetzwerk zugreifen können (grüne Linien).

Daten zum Netzwerk:
  • Modem/Router: 192.168.0.1, Port 1194 udp/tcp ist offen
  • Server: 192.168.0.30 FreeBSD 9.2-RELEASE mit OpenVPN 2.3.4, ist von außerhalb per DDNS erreichbar
  • Laptop 1: 10.0.0.2 (kann variieren) Windows 7 mit OpenVPN
  • Laptop 2: 10.0.0.3 (kann variieren) Linux mit OpenVPN und Gnome-Networkmanager
  • PC 1: 192.168.0.20 Windows 7
  • PC 2: 192.168.0.31 Linux mit Samba
  • Drucker: 192.168.0.10

Bei der Installation und Konfiguration von OpenVPN bin ich wie folgt vorgegangen:
Zunächst wird OpenVPN mit den Standardoptionen installiert.

# uname -rsim
FreeBSD 9.2-RELEASE-p7 amd64 GENERIC​
# cd /usr/ports && make update
# portmaster security/openvpn

Um mehrere Instanzen von OpenVPN auf dem Server laufen zu lassen, beispielsweise auf verschiedenen Ports, wird das eigentliche Startscript verlinkt.

# cd /usr/local/etc/rc.d
# ln -s openvpn openvpn_udptap1194


Jetzt wird Openvpn für den automatischen Start nach dem Booten des Servers konfiguriert.

# ee /etc/rc.conf
ifconfig_em0="up"
ifconfig_em1="up"
#cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport em0 laggport em1 SYNCDHCP"
ifconfig_tap0="up"
cloned_interfaces="lagg0 bridge0 tap0"
ifconfig_bridge0="addm lagg0 addm tap0 up"
openvpn_udptap1194_enable="YES"
openvpn_udptap1194_configfile="/usr/local/etc/openvpn/openvpn_udptap1194.conf"
openvpn_udptap1194_dir="/usr/local/etc/openvpn"
openvpn_udptap1194_if="tap"
gateway_enable="YES"​


Nun werden die Konfigurationsdateien für die Einrichtung des VPN-Servers kopiert, damit diese auch ein Update über die Portssammlung überleben.

# mkdir /usr/local/etc/openvpn
# mkdir /var/log/openvpn
# cp -Rv /usr/local/share/easy-rsa /usr/local/etc/openvpn/


Die Zertifikate für eine sichere Verbindung werden wie folgt erstellt.

# ee /usr/local/etc/openvpn/easy-rsa/vars

export KEY_SIZE=2048
export KEY_COUNTRY="AT"
export KEY_PROVINCE="Vorzimmer"
export KEY_CITY="Kasterl"
export KEY_ORG="Laenger GmbH & Co. KG"
export KEY_EMAIL="email@adresse.at"
export KEY_EMAIL=email@adresse.at
export KEY_CN=DDNS.SERVER.AT
export KEY_NAME=openvpn
export KEY_OU=Homeserver
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234​

# cd /usr/local/etc/openvpn/easy-rsa
# . ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-key-pass Laptop1
# ./build-key-pass Laptop2
# ./build-dh


Nun werden alle soeben erstellten Schlüssel an eine andere Stelle kopiert, um diese vor versehentlichen löschen zu schützen.

# mkdir /usr/local/etc/openvpn/cert
# cp -v /usr/local/etc/openvpn/easy-rsa/keys/* /usr/local/etc/openvpn/cert/


Jetzt kann mit der Konfiguration des Server begonnen werden.

# cp -Rv /usr/local/share/examples/openvpn/sample-config-files /usr/local/etc/openvpn/
# cp /usr/local/etc/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn/openvpn_udptap1194.conf
# ee /usr/local/etc/openvpn/openvpn_udptap1194.conf


;local a.b.c.d
port 1194
proto udp
dev tap0
ca /usr/local/etc/openvpn/cert/ca.crt
cert /usr/local/etc/openvpn/cert/server.crt
key /usr/local/etc/openvpn/cert/server.key
dh /usr/local/etc/openvpn/cert/dh2048.pem
;server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn_udptap1194_ipp.txt
server-bridge 192.168.0.30 255.255.255.0 192.168.0.200 192.168.0.210
push "redirect-gateway"
client-to-client
max-clients 5
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn_udptap1194-status.log
log-append /var/log/openvpn_udptap1194.log​


Neustart um zu kontrollieren, ob die virtuelle Netzwerke und OpenVPN auch bei einem Reboot geladen werden.

# shutdown -r now


Firewall ist keine aktiv.

# pfctl -d

Was funktioniert:
Es ist möglich sich per OpenVPN ins Heimnetzwerk zu verbinden. Von dort aus kann ich auf den Router und das Webinterface des Druckers zugreifen.
Was jedoch nicht funktioniert ist der Zugriff auf externe Webseiten im Internet.

Vielleicht ist das auch kompletter Mumpitz was ich da gemacht habe, bitte um kurzen Hinweis wenn dem so ist :rolleyes:
Ich habe hier im Forum schon ein ähnliche Probleme gefunden, jedoch keine Lösung für meinen Fall...




Wie bringe ich den Server mit OpenVPN dazu Anfragen der Clients ans Internet weiterzuleiten?

Beste Grüße,
Laenger
 

Anhänge

  • OpenVPN_01.webp
    OpenVPN_01.webp
    183,7 KB · Aufrufe: 442
Haben Laptop1 und Laptop2 überhaupt Zugriff auf andere Internet-Seiten (E-Mail..)?
Wie sehen die default routen auf den Clients aus?
Wenn die default route auf den VPN-Server gesetzt ist, was ergibt ein traceroute auf den E-Mail-Server?
Weiß der Router, dass die Route zu deinen Laoptops über deinen VPN-Server geht? Da sie in einem anderen Subnetz sind, solltest du auf dem VPN-Server noch NAT machen.

edit: ah, sorry. Die sind nicht in einem anderen Subnetzt, richtig? Dann musst du auch kein NAT machen.
 
In welchem Mode läuft der VPN-Server, im bridged oder im routed mode? Oder anders gefragt, ist das VPN-Netz ein eigenes Subnetz, oder bekommen die VPN-Clients ihre IPs vom Router mit der IP 192.168.0.1?

Wenn der VPN-Server im routed mode läuft und das Problem klingt danach, wäre mein Tipp, dass der Router mit der IP 192.168.0.1 keine Route zum VPN-Netz hat. Deshalb können die VPN-Clients nicht durch den Tunnel auf das Internet zugreifen, aber auf die Rechner im LAN.
 
Hello,

vielen Dank für die Hilfe h^2.
Ich denke ich habe die Lösung des Problems gefunden. Man muss in der Konfigurationsdatei des Servers folgende Information für die Clients mit auf den Weg geben:
Code:
# ee /usr/local/etc/openvpn/openvpn_udptap1194.conf

push "dhcp-option DNS 192.168.0.1"

Siehe auch:
https://openvpn.net/index.php/open-source/documentation/howto.html#dhcp

...eigentlich eh klar, warum es nicht funktioniert hat... :rolleyes:

@ crotchmaster, der Server läuft im Bridge-Modus.

Ich werde das ganze bei Gelegenheit in öffentlichen Netzen testen.
Wenn alles so funktioniert, wie ich mir das vorstelle, dann werde ich das ganze als gelöst markieren :)

Besten Dank an alle,
laenger
 
Zurück
Oben