Erstellen Sie eine Brücke zwischen einem Tunnel und einem Ethernet-Gerät

3451
De Gao

Ich habe eine Himbeer-Pi mit Debian Wheezy. Es gibt drei Verbindungen:

eth0: native usb ethernet, connected to the router. eth1: plug-in usb ethernet adapter tun0: tunnel created by openconnect vpn client 

Jetzt möchte ich eine Brücke zwischen eth1und erstellen tun0, damit der gesamte Datenverkehr vom eth1VPN zum VPN geleitet wird. Es wird keine Anwendung ausgeführt, auf der das Betriebssystem die VPN-Verbindung benötigt.

 ------------------------ | OS Local --> eth0 --|--> router | | | Debian Wheezy | | | --|--> eth1 --> tun0 ----|--> vpn server ------------------------ 

Ich habe etwas recherchiert und es stellt sich heraus, dass tun0es sich um ein Layer 3-Gerät handelt, während eth1es sich um ein Layer 2-Gerät handelt. Sie können nicht direkt miteinander reden. Das erste, was mir in den Sinn kommen, wenn ich ein erstellen tun1aus eth1und verbinden tun1und tun0. Aber ist das möglich? Wie kann ich das machen?

Irgendwelche Ideen? Vielen Dank.

UPDATE: Aktuelle Routentabelle nach vpn verbunden:

default dev tun0 scope link  default via 192.168.0.1 dev eth0 metric 202  44.33.22.11 via 192.168.0.1 dev eth0 src 192.168.0.14  172.18.2.0/24 dev tun0 scope link  192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.14 metric 202  
2
Brauchen Sie das wirklich ??? Bitte posten Sie Ihre Routingtabelle, * sudo ip route show *. MariusMatutiae vor 8 Jahren 0
@MariusMatutiae-Routentabelle veröffentlicht. De Gao vor 8 Jahren 0
@MariusMatutiae Entschuldigung, aber wo finde ich die Antwort? De Gao vor 8 Jahren 0
Ich habe gerade meine Antwort auf Ihre Anfrage veröffentlicht, bitte kommen Sie zu sehen. MariusMatutiae vor 8 Jahren 0

1 Antwort auf die Frage

2
MariusMatutiae

Sie müssen Richtlinienrouting implementieren, d. H. Zwei Routingtabellen. Wir werden die mainRouting-Tabelle nicht berühren, die bereits korrekt eingerichtet ist. Wenn Sie die IPv4-Weiterleitung aktiviert haben, werden die Pakete von eth1 automatisch durch Ihren OpenVPN übertragen.

Zunächst müssen wir lernen, wie Ihr OpenVP die Routing-Tabelle aufbaut. Um dies zu beenden, starten Sie den OpenVPN-Client von der Befehlszeile aus:

 sudo openvpn --config YourConfigFile.conf 

(oder YourConfigFile.ovpnwas auch immer Sie verwenden). In den letzten Zeilen erfahren Sie, wie die neue Routing-Tabelle eingerichtet wird. In meinem Fall heißt es beispielsweise:

Di Jul 14 18:58:07 2015 / sbin / ip route add My.Server.Public.IPaddress / 32 über 192.168.105.1

Di Jul 14 18:58:07 2015 / sbin / ip route add 0.0.0.0/1 über 10.8.73.5

Di Jul 14 18:58:07 2015 / sbin / ip route add 128.0.0.0/1 über 10.8.73.5

Di Jul 14 18:58:07 2015 / sbin / ip route add 192.168.73.0/24 über 10.8.73.5

Di Jul 14 18:58:07 2015 / sbin / ip route add 10.8.73.0/24 über 10.8.73.5

Di Jul 14 18:58:07 2015 Initialisierungssequenz abgeschlossen

Die oben genannten Routen sollten in eine ausführbare Datei eingefügt werden, mit der Ausnahme, dass einige dieser Nummern für diese bestimmte Instanz des VPN typisch sind. OpenVPN liefert jedoch nützliche Umgebungsvariablen, die die Werte der oben verwendeten Schnittstellen enthalten und die sehr nützlich sind: In diesem speziellen Fall sind sie es

 route_net_gateway -> 192.168.105.1 route_vpn_gateway -> 10.8.73.5  

Die Zeilen, die Sie einer Datei hinzufügen müssen (nennen wir sie /etc/openvpn/route_up.sh), sind also:

 /sbin/ip route add Your.OpenVPN.Server.IPAddress/32 via $route_net_gateway table vpn /sbin/ip route add 0.0.0.0/1 via $route_vpn_gateway table vpn /sbin/ip route add 128.0.0.0/1 via $route_vpn_gateway table vpn /sbin/ip route add Remote.LAN.Net/24 via $route_vpn_gateway table vpn /sbin/ip route add 172.18.2.0/24 via $route_vpn_gateway table vpn 

Vergessen Sie nicht, oben die IP-Adresse Ihres Remote-Servers und des lokalen LANs zu ersetzen, wenn Sie ihn verwenden . Wenn Sie nur OpenVPN verwenden, um eine IP-Adresse Ihres Servers zu erhalten, benötigen Sie die neben der letzten Anweisung überhaupt nicht. Denken Sie daran, die Datei ausführbar zu machen chmod 700 route_up.sh.

Außerdem müssen Sie eine neue /etc/openvpn/route_down.sh, ebenfalls ausführbare Datei erstellen, die exakt die gleichen Routen herunterreißt (ändern Sie einfach addzu del).

Jetzt müssen wir Ihrem OpenVPN mitteilen, dass die Routen nicht implementiert werden müssen, da dies manuell erfolgen muss. Fügen Sie in Ihrer YourConfigFile.conf die folgenden Zeilen hinzu:

 route-nopull up /etc/openvpn/route_up.sh down /etc/openvpn/route_down.sh 

Zuletzt müssen wir die unterschiedliche Routing-Tabelle für das VPN einrichten. Fügen Sie eine neue Routing-Tabelle hinzu, nennen wir sie vpn:

 echo 200 vpn >> /etc/iproute2/rt_tables 

Jetzt führen wir eine Regel ein:

 ip rule add from 10.0.0.0/24 table vpn 

wo ich davon ausgegangen bin, dass das netzwerk hinter eth1ist 10.0.0.0/24, wenn es nicht bitte entsprechend geändert wird.

Als letztes müssen Sie eine MASQUERADE iptables-Regel einführen:

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

Das ist es.

Dies gibt keine Antwort auf die Frage. Hinterlassen Sie einen Kommentar unter ihrem Beitrag, wenn Sie einen Kritikpunkt anfragen oder eine Erklärung von einem Autor anfordern möchten. qasdfdsaq vor 8 Jahren 0
Dies beantwortet die gestellte Frage nicht und bietet nicht die Funktionalität, nach der der Fragesteller sucht. qasdfdsaq vor 8 Jahren 0
Ja, ich bin mir sicher. Sie haben einen einfachen, aber häufigen Fehler begangen, den viele Studenten machen, wenn ich diese Informationen unterrichte. qasdfdsaq vor 8 Jahren 0
@qasdfdsaq Nach diesem Kommentar, Ihrer kindlichen Reaktion und Ihrer früheren Aufzeichnung auf dieser Website zu urteilen, ist es schwer zu glauben, dass Sie einen Kurs unterrichten können, mit Ausnahme von Bad Manners 101. MariusMatutiae vor 8 Jahren 2
@MariusMatutiae: Ich würde gerne Klarstellung zu Your.OpenVPN: server.IPAddress und Remote.LAN.Net. der erste ist "public ip" des Servers? und was ist das andere? Vielen Dank! Lennart Rolland vor 6 Jahren 0
@LennartRolland ** 1): ** Ja. ** 2): ** Es ist das LAN, in das der OpenVPN-Server eingetaucht ist. Manchmal möchten Sie darauf zugreifen. Angenommen, Sie haben einen OpenVPN-Server ** zu Hause ** eingerichtet und stellen eine Verbindung her, wenn Sie nicht anwesend sind. Dann möchten Sie sicherlich eine Verbindung zu Ihrem OpenVPN-Server ** und ** zu seinem LAN herstellen (das für Sie als * remote * angezeigt wird, wenn Sie nicht zu Hause sind). Wenn Sie stattdessen einen OpenVPN-Server verwenden, der von einem kommerziellen Unternehmen bereitgestellt wird, um z. B. Geo-Beschränkungen zu umgehen, haben Sie kein Interesse, das LAN zu kontaktieren, in dem sich der Server befindet. MariusMatutiae vor 6 Jahren 0
@MariusMatutiae: Danke, dass es perfekt geklärt hat! Lennart Rolland vor 6 Jahren 0