Fixieren von Route und iptables für eine OpenVPN-tun0-Schnittstelle mit einem ausgewählten und sicheren Routing

Fixieren von Route und iptables für eine OpenVPN-tun0-Schnittstelle mit einem ausgewählten und sicheren Routing

Ich habe meinen Router so eingerichtet, dass er für maximale Sicherheit VPNs von Drittanbietern verwendet. Da die von mir verwendeten ISPs alle bekannten VPN-Protokolle, einschließlich OpenVPN-Protokolle, blockiert haben, bin ich gezwungen, meinen Router so zu konfigurieren, dass er einen HTTP-Proxy verwendet, sodass OpenVPN seinen Fingerabdruck vor der zensierenden ISP-Firewall verbergen kann.

Allerdings verwende ich ein kommerzielles VPN eines Drittanbieters und verwende deren OpenVPN-TCP-Konfigurationsdatei(en),
um meinen verbundenen Geräten den uneingeschränkten Zugriff auf das Internet zur Verfügung zu stellen.

Da der OpenVPN-Client einen HTTP-Proxy benötigt, um eine Verbindung zu seinem Server herzustellen, richte ich zuerst den HTTP-Proxy auf meinem Router ein und verbinde dann den OpenVPN-Client mit dem Internet.

Bitte beachten Sie, dass sowohl der http-Proxy als auch der OpenVPN-Client auf einemDasselbeOpenWRT-Router,NEINseparate Geräte!

Das heißt, da viele der kommerziellen VPN-Anbieter auf ihren OpenVPN-Serverseiten ihre Routen- und Gateway-Einstellungen auf ihren Client übertragen, nachdem der Client die Verbindung hergestellt hat, sind alle Client-LAN-Schnittstellen, einschließlich des Router-Prozessors, gezwungen, den vom Client umgeleiteten Internetverkehr zu verwenden. Infolgedessen ist der auf dem Router laufende Proxy-Prozess, der seinen Internetzugriff direkt aus dem WAN beziehen sollte, gezwungen, das Internet über die Tun0-Schnittstelle zu verwenden. Nach einigen Sekunden schlägt dies fehl und in der Folge schlägt auch der OpenVPN-Client wenig später fehl.

Um das oben genannte Problem zu vermeiden, habe ich hinzugefügtkein ZiehenBefehl in denclient.ovpnDatei.

Bitte beachten Sie, dass ich kommerzielle VPNs verwendeIch habe keinen Zugriff auf ihre OpenVPN-Server! und mein Router verwendetiptables(fw3)und nicht die nftables(fw4), daher sieht die Datei client.ovpn wie folgt aus:

` Client dev tun0 proto tcp remote XX.YY.ZZ.RR 443 nobind auth-user-pass cred.txt

persist-tun
......
http-proxy 192.168.55.1 1080 auto
http-proxy-retry
route-nopull

`

Die obige Konfiguration stellt problemlos eine Verbindung zum OpenVPN-Server (kommerzieller Server) her und erstellt eine tun0-Schnittstelle auf meinem OpenWRT-Routergerät.

Ich kann eine Website problemlos über ein Tun0-Gerät verfolgen.

#traceroute -i tun0 www.yahoo.com
traceroute to www.yahoo.com (87.248.119.251), 30 hops max, 46 byte packets
 1  *  10.124.148.1 (10.124.148.1)  1357.499 ms  195.523 ms
 2  vlan112.as02.stk1.se.m247.ro (146.70.16.241)  199.262 ms  190.672 ms  *

Da ich jedoch keine Routen- und Firewall-Einstellungen vom OpenVPN-Server abziehe, sollte ich meine eigenen Routen- und Iptables-Regeln erstellen, sobald diese Tun0-Schnittstelle erstellt ist.

Aber bevor ich mehr erkläre, sollte ich erwähnen, dass die lokale IP-Adresse meines Routers 192.168.55.1 ist und die br-lan-Geräte (LAN Bridge) ihre IP-Adresse aus einem DHCP-Pool-Adressbereich von 192.168.55.65-192.168.55.126 oder besser gesagt (255.255.255.192/26) erhalten.

Meine Absicht und mein Ziel ist es, den Router so einzurichten, dass er Folgendes kann:

[a] alle Geräte im br-lan (Bereich 192.168.55.65-192.168.55.126)außer dem Router selbst 192.168.55.1sollte seinen gesamten Internetverkehr einschließlich SSH, DNS, ICMP, TCP, UDP usw. vom Gerät Tun0 erhalten.

[b] Aus Sicherheitsgründen sollte der gesamte Internetverkehr der br-lan-Geräte (Bereich 192.168.55.65-192.168.55.126) mit Ausnahme des Routers vom Internet blockiert werden, wenn keine tun0-Schnittstelle vorhanden ist oder die tun0-Schnittstelle nicht antwortet. Dies bedeutet, dass alle genannten Geräte nur dann auf das Internet zugreifen können, wenn tun0 aktiv ist und antwortet.keine anderen Alternativen wie gewichtete Routen alternative Wegesind akzeptiert.

[c] Alle br-lan-GeräteeinschließlichRouter, Drucker, PCs, NAS usw. sollten sich im selben Subnetz ohne Einschränkungen finden und miteinander kommunizieren können.

Ich weiß, dass es einige OpenVPN-Befehle gibt, die ich in die Konfigurationsdatei client.ovpn einfügen kann, um einige Routen zu ermöglichen, wie zum Beispiel:

Pull-Filter ignoriert "Redirect-Gateway"oderRoute 192.168.55.64 255.255.255.192 aber die obigen Befehle haben mich ein paar Mal blockiert und ich konnte nicht auf die Router-Webseite zugreifen, außerdem hat keiner von ihnen wie erwartet funktioniert.

Darüber hinaus habe ich nach der Erstellung von tun0 das folgende Skript manuell ausgeführt, aber es ließ den Internetverkehr auf Br-LAN-Geräten nicht durch tun0 durch.

Ich habe die OVPN-Tabelle in der folgenden Datei erstellt

/etc/iproute2/rt_tables
#reserved values
#
128     prelocal
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       ovpn

Und

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i br-lan -o tun0 -s 192.168.55.64/26 -j ACCEPT
iptables -A FORWARD -i tun0 -o br-lan -j ACCEPT

iptables -A INPUT -i tun0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

ip route add default dev tun0 table ovpn
ip route add 192.168.55.64/26 dev br-lan table ovpn

ip rule add from 192.168.55.64/26 table ovpn

Ich habe viel gegoogelt, um eine Lösung zu finden, aber ich bin ziemlich sicher, dass ich tun0 als einfache Semi-WAN-Schnittstelle behandeln sollte.

Hier ist meine einfache Routentabelle ohne zusätzliches manuelles Routing.

#route -n  
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.8.1     0.0.0.0         UG    0      0        0 phy1-sta0
10.124.148.0    0.0.0.0         255.255.254.0   U     0      0        0 tun0
192.168.8.0     0.0.0.0         255.255.255.0   U     0      0        0 phy1-sta0
192.168.55.0    0.0.0.0         255.255.255.0   U     0      0        0 br-lan

und mehr

#ip route show
default via 192.168.8.1 dev phy1-sta0 proto static src 192.168.8.118
10.124.148.0/23 dev tun0 proto kernel scope link src 10.124.148.113
192.168.8.0/24 dev phy1-sta0 proto kernel scope link src 192.168.8.118
192.168.55.0/24 dev br-lan proto kernel scope link src 192.168.55.1

Ich würde mich über jeden Hinweis oder jede Lösung für das genannte Ziel freuen, ich bin ein Neuling in Sachen Routing und Iptables.

Ich weiß übrigens nicht, wie ich die erforderlichen Konfigurationen vornehmen soll, wieif_tun0_up.shUndif_tun0_down.shAutomatisiert, um die Routen automatisch in der Datei client.ovpn zu erstellen und zu löschen.

In der Lage zu sein, eineAuswahl an LAN-Geräten(br-lan)außer dem Routerihren Internetverkehr vom VPN-Anbieter abwickeln zu lassen.

Sichern und Blockierendie LAN-Benutzer vom Zugriff auf eingeschränkteunsicherInternet. Automatisierungdie Aufgabe des Erstellens und Löschens derRouten und iptables-Regelnmit ÖffnungUndSchließendie tun0-Schnittstelle.

Antwort1

Keine vollständige Antwort, aber vielleicht hilft sie Ihnen weiter. In der Datei client.ovpn würde ich angeben, in welches Netzwerk Sie über das VPN gehen möchten, mit der folgenden Anweisung in der Datei client.ovpn. Zum Beispiel:

route 10.0.0.0 255.255.255.0 vpn_gateway

Da Sie einen kommerziellen Anbieter verwenden, erhalten die tun0-Geräte eine IP-Adresse aus deren Pool, daher würde ich nicht empfehlen, LAN-Geräte erreichbar zu machen. In den meisten Fällen handelt es sich um eine durch eine Firewall geschützte IP, bei der keine Ports für die gewünschten Dienste geöffnet sind. Es handelt sich um ein Client-VPN. Wenn Sie Ihr LAN über ein VPN erreichbar machen möchten, benötigen Sie ein Site-to-Site-VPN mit Ihrem eigenen VPN-Server.

verwandte Informationen