Wie bringt man den OpenVPN-Server dazu, tun0-Pakete an das lokale Netzwerk weiterzuleiten?

Wie bringt man den OpenVPN-Server dazu, tun0-Pakete an das lokale Netzwerk weiterzuleiten?

Ich habe drei Maschinen, die ich über eine TUN-Verbindung koordinieren möchte.

FREEBSDBox 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 REMOTEauf VPN zugreifen FREEBSDund die Verbindung funktioniert einwandfrei, ist aber falsch konfiguriert. Wenn ich versuche, eine Verbindung von herzustellen, REMOTEindem ich die IP-Adresse von in den Browser WEBSERVEReingebe , ist es nicht erreichbar. Es ist erreichbar, wenn ich mich direkt mit dem lokalen Subnetz verbinde .WEBSERVERREMOTEWEBSERVERREMOTE

Bei der Fehlerbehebung habe ich Folgendes gelernt.

  • REMOTESie können es anpingen FREEBSDund sogar per SSH darauf zugreifen.
  • FREEBSDEine auf dem Ethernet-Port von eingerichtete Paketerfassung erfasst keine Pakete von oder an REMOTEdie VPN-IP von 10.0.202.6. Daher erreichen die Pakete von REMOTE nicht das lokale Subnetz.
  • Deropenvpn.logDie Datei FREEBSDenthä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 FREEBSDden 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.forwardingWert 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/24Netzwerk und Ihr VPN-Server hat eine Route. Aber die Frage ist, ob Ihr Webserver 10.0.200.31eine Route zum 10.0.202.0/24Netzwerk hat?

Führen Sie einen TCPdump auf der FreeBSD-Box durch. Ich vermute, Sie werden sehen, dass der Datenverkehr von Ihrem 10.0.202.6Host weitergeleitet wird, aber Sie sehen keinen Rückverkehr.

verwandte Informationen