
Ich habe drei Maschinen, die ich über eine TUN-Verbindung koordinieren möchte.
FREEBSD
Box mit OpenVPN-Server (tun)
10.0.200.21/24 im lokalen Subnetz
10.0.202.1/24 auf VPN
REMOTE
Öffentliche IP
10.0.202.6/24 auf VPN
WEBSERVER
10.0.200.31/24 im lokalen Subnetz
Ich kann über OpenVPN REMOTE
auf VPN zugreifen FREEBSD
und die Verbindung funktioniert einwandfrei, ist aber falsch konfiguriert. Wenn ich versuche, eine Verbindung von herzustellen, REMOTE
indem ich die IP-Adresse von in den Browser WEBSERVER
eingebe , ist es nicht erreichbar. Es ist erreichbar, wenn ich mich direkt mit dem lokalen Subnetz verbinde .WEBSERVER
REMOTE
WEBSERVER
REMOTE
Bei der Fehlerbehebung habe ich Folgendes gelernt.
REMOTE
Sie können es anpingenFREEBSD
und sogar per SSH darauf zugreifen.FREEBSD
Eine auf dem Ethernet-Port von eingerichtete Paketerfassung erfasst keine Pakete von oder anREMOTE
die VPN-IP von 10.0.202.6. Daher erreichen die Pakete von REMOTE nicht das lokale Subnetz.- Deropenvpn.logDie Datei
FREEBSD
enthält die folgende Zeile:GET INST BY VIRT: 10.0.200.31 [failed]
Es scheint also, dass OpenVPN die auf dem TUN-Gerät empfangenen Pakete nicht an FREEBSD
den Ethernet-Adapter und weiter an das lokale Subnetz weiterleitet.
Ich habe die folgende Zeile in meiner server.conf-Datei.
push "route 10.0.200.0 255.255.255.0"
Ich habe versucht, diese Zeile hinzuzufügen, aber es hat nicht geholfen.
route 10.0.200.0 255.255.255.0
Hier ist die Routing-Tabelle aufFREEBSD
Routingtabellen Internet: Ziel-Gateway-Flags Referenzen Verwenden Sie Netif Expire Standard 10.0.200.1 UGS 0 4306 re0 10.0.200.0 Link Nr. 9 U 0 61582 re0 10.0.200.21 Link Nr. 9 UHS 0 41 lo0 10.0.201.0 10.0.200.1 UGS 0 0 re0 10.0.202.0 10.0.202.2 UGS 0 0 tun0 10.0.202.1 Link Nr. 12 UHS 0 0 lo0 10.0.202.2 Link Nr. 12 UH 0 0 tun0 lokaler Host-Link Nr. 11 UH 0 193743 lo0
Ich habe online von der Meldung gelesen GET INST BY VIRT: 10.0.200.31 [failed]
und für Linux-Rechner wurde empfohlen, den folgenden Befehl auszuführen.
echo 1 > /proc/sys/net/ipv4/ip_forward
Ich habe Angst, ihn auszuführen, weil ich ihn nicht verstehe und keine seltsame Konfiguration möchte FREEBSD
. Außerdem bevorzuge ich eine Lösung, die die Datei server.conf so ändert, dass die erforderliche Konfiguration automatisch erstellt wird, damit sie ordnungsgemäß verwaltet und gelöscht wird, wenn OpenVPN geschlossen wird.
Was ist die Lösung für dieses Problem?
Antwort1
Habe das Problem gefunden. Es stellte sich heraus, dass FreeNAS, die auf FreeBSD basierende NAS-Appliance-Software, auf die ich mich oben beziehe FREEBSD
, den net.inet.ip.forwarding
Wert auf 0 gesetzt hat. Dies kann mit dem Befehl angezeigt werden sysctl -a | grep net.inet.ip.forwarding
. Um die Pakete weiterzuleiten, musste ich Folgendes tun sysctl net.inet.ip.forwarding=1
.
Diese Änderung bleibt nach Neustarts nicht bestehen. Ich denke, ich muss möglicherweise die Datei /etc/rc.conf verwenden und festlegen gateway_enable="YES"
, aber bisher habe ich festgestellt, dass diese Einstellung erst nach einem Neustart verarbeitet wird, und leider scheint rc.conf unter FreeNAS bei jedem Neustart überschrieben zu werden. Es ist möglicherweise möglich, diese Variable in /etc/defaults/rc.conf zu schreiben, wo die Standardeinstellungen für das System gespeichert werden sollen und die von benutzerdefinierten Konfigurationen in rc.conf überschrieben werden, aber die Datei /etc/defaults/rc.conf enthält oben eine Warnung, sie nicht zu bearbeiten.
Dieses Problem ist also nicht vollständig gelöst, aber ich habe zumindest herausgefunden, wo die Probleme zu liegen scheinen. Nachdem ich das nun verstanden habe, stelle ich nun ein Problem bei der Anmeldung bei https-Webverwaltungsgeräten im lokalen Subnetz fest. Das wird ein weiteres zu lösendes Problem sein.
Antwort2
Ok, Ihr VPN-Client hat also eine Route zum 10.0.200.0/24
Netzwerk und Ihr VPN-Server hat eine Route. Aber die Frage ist, ob Ihr Webserver 10.0.200.31
eine Route zum 10.0.202.0/24
Netzwerk hat?
Führen Sie einen TCPdump auf der FreeBSD-Box durch. Ich vermute, Sie werden sehen, dass der Datenverkehr von Ihrem 10.0.202.6
Host weitergeleitet wird, aber Sie sehen keinen Rückverkehr.