Unter Arch Linux möchte ich, dass eth0 (verbunden mit einem Bridged-Router) die von wlan0 empfangene Verbindung freigibt. Ich habe Tutorials gelesen, bin aber nicht befehlssicher wie andere Benutzer und verstehe das nicht ganz.
Bitte setzen Sie nicht "[gelöst]" in die Frage oder den Titel. Die Annahme einer Antwort ist der richtige Weg, um zu zeigen, dass ein Problem gelöst wurde. Es ändert die Art und Weise, wie die Frage in der Hauptliste angezeigt wird, und setzt das grüne Häkchen auf die Antwort, die Sie als richtig markiert haben.
Zypher
1
Ich würde es begrüßen, wenn sich niemand mit dieser Seite anlegen würde. Wenn Sie irgendwelche Probleme haben, kontaktieren Sie mich. Vielen Dank.
Dbdii407
13
serverfault.com/faq Speziell die Überschrift "Andere Leute können meine Sachen bearbeiten"
Zypher
@Zypher Die URL, zu der Sie einen Link erstellen, existiert nicht mehr. Wurde der betreffende Absatz an eine andere Stelle verschoben?
Sie benötigen keine IP-Adresse für die Bridge-Schnittstelle, damit das Bridging funktioniert.
Massimo
7
Ich kann wlan0 nicht zur Bridge mybridge hinzufügen: Operation nicht unterstützt
dbdii407
1
@ Massimo: ja das stimmt. Die gültige IP wird benötigt, um vom "Bridging Device" auf das Netz zuzugreifen.
cstamas
10
NAT ist etwas völlig anderes als Bridging. Bridging ist Schicht zwei, NAT ist Schicht drei und IPv4-spezifisch. Ich verstehe nicht, warum dies eine akzeptierte Antwort ist.
WhyNotHugo
3
@Hugo IP NAT ist Schicht 3, MAC NAT ist Schicht 2. Für die WiFi-Überbrückung können Sie 4addr, WDS, MAC NAT verwenden oder Sie können stattdessen etwas auf Schicht 3 tun (z. B. IP NAT).
David Schwartz
27
Zur Überbrückung der WLAN- Schnittstelle können Sie das iwTool verwenden, um 4addr ebenfalls zu aktivieren :
# iw dev <wifiInterface> set 4addr on
dh:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
Jetzt sollte es klappen. Sie können Brücken zeigen mit:
Wofür ist diese Einstellung und warum schlagen Sie sie in diesem Szenario speziell vor?
Hakre
Dies ist eine Lösung für den Fehler "Vorgang nicht zulässig", wenn versucht wird, der Bridge-Schnittstelle eine wlan0-Schnittstelle hinzuzufügen. Danach müssen Sie die Bridge-Schnittstelle in / etc / network / interfaces angeben, um sie nach dem Start aufzurufen.
Str82DHeaD
1
@hakre In diesem 4addrModus verhält sich WiFi so stark wie kabelgebundenes Ethernet, dass Bridging funktioniert. Ohne das funktioniert Bridging nicht ohne NAT.
David Schwartz
1
4addrerfordert, dass beide Seiten einer drahtlosen Verbindung dies unterstützen (vorausgesetzt, Sie versuchen, einen WLAN-Extender zu implementieren)
am
5
Kommt darauf an, wie gemein der AP für dich ist:
1) Möglicherweise möchte es nur Pakete sehen, die von Ihnen stammen, mit Ihrer bekannten Link-Layer-Adresse (und daher nicht von überbrückten Paketen) es kennt DHCP und prüft es)
Wenn 1 + 2 beide wahr sind, brauchst du ja sowas wie IP NAT, DHCP, ..
Wenn jedoch nur 1) zutrifft, können Sie die Link-Layer-Adresse fälschen und in umgekehrter Reihenfolge wie hier beschrieben auf der rechten Seite abbilden:
Das ist wirklich chaotisch. Und jedes Mal, wenn Sie einen neuen Computer hinzufügen, ist ein zusätzliches Setup erforderlich.
Michael Hampton
4
4addr, wie in anderen Antworten beschrieben, ist sicherlich der beste Weg, wenn es vom Adapter / Treiber unterstützt wird, aber nicht alle von ihnen. NAT funktioniert möglicherweise für einige Dinge, aber eine ordnungsgemäße Kommunikation auf beiden Wegen im LAN wird problematisch (z. B. Anschließen eines Druckers oder Zugreifen auf andere IoT-Geräte auf der anderen Seite des NAT). Alles, was auf Broadcast / Multicast angewiesen ist (z. B. automatische Erkennung, Bonjour), schlägt über das NAT fehl.
Die Alternative ist die Verwendung eines ARP-Proxys (parprouted), wie in https://wiki.debian.org/BridgeNetworkConnectionsProxyArp beschrieben . Ich habe dies auf einem Himbeer-Pi für einen Drucker eingerichtet und es funktioniert wie ein Zauber (ich habe den post-upBefehlen einen 10-Sekunden-Schlaf hinzugefügt , damit er zuerst eine IP-Adresse erhält, was möglicherweise mit der Langsamkeit meines alten zu tun hat RPi ...)
dieser link zur proxy-arp plus dhcp-helper lösung ist die bisher kompatibelste und sauberste lösung, die ich gesehen habe.
Minghua
3
Bridge wlan und 4addr:
Überbrückung von wlan0 ist ein Schmerz. Normalerweise können Sie es nicht zu einer Bridge-Schnittstelle hinzufügen (brctl gibt "Operation not allowed" zurück), und die Verwendung des VirtualBox-Filters "bridged" führt zu einem großen Durcheinander von ARP- und DHCP-Konflikten. Die Ursache hierfür ist, dass 802.11-Frames standardmäßig nur drei Adressen enthalten: Die MAC-Adressen sowohl der drahtlosen Geräte (Laptop und AP) als auch des Endempfängers (wie in Ethernet). Es wird immer davon ausgegangen, dass es nur einen möglichen Urheber gibt.
802.11 kann die vierte MAC-Adresse des Absenders tragen, die von Repeatern im WDS-Modus verwendet wird. Diese Funktion kann auch unter Linux mit iw aktiviert werden. Wenn Sie diesen Modus aktivieren, kann wlan0 sowohl in Bridge-Schnittstellen als auch in VirtualBox-Bridged-Netzwerken verwendet werden:
iw dev wlan0 set 4addr on
Wenn 4addr aktiviert ist, werden Sie wahrscheinlich vom AP vollständig ignoriert: Die Zuordnung ist erfolgreich, aber alle Datenrahmen verschwinden im Ether. Dies kann aus Sicherheitsgründen sein (weil es verdammt schwer ist, die MAC-Quelladresse zu verfälschen. Ja.) In meinem Router (mit OpenRG) muss der "WDS" -Modus für die WLAN-AP-Schnittstelle aktiviert werden. Fügen Sie ein WDS-Gerät hinzu, das auf meine beschränkt ist die MAC-Adresse des Laptops und fügen Sie sie der LAN-Bridge hinzu. 4addr-Pakete funktionieren jetzt.
Es gibt jedoch ein weiteres Problem: Der Router weist jetzt Pakete mit drei Adressen vom Laptop zurück, was ziemlich unpraktisch sein kann (bei jedem Wechsel des WLAN-Netzwerks muss 4addr umgeschaltet werden). Die Problemumgehung besteht darin, auf dem Laptop eine zweite drahtlose Schnittstelle hinzuzufügen, die mit demselben Gerät verbunden ist, jedoch eine andere MAC-Adresse aufweist. Machen Sie zuerst die frühere Konfiguration rückgängig:
iw dev wlan0 set 4addr off
Fügen Sie dann eine zweite Schnittstelle hinzu - der Name wurde willkürlich gewählt - mit einer anderen MAC-Adresse:
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up
Hier muss die im Router konfigurierte WDS-Geräteadresse übereinstimmen; Ansonsten kann es sich um eine beliebige gültige MAC-Adresse handeln. Der ursprüngliche MAC von wlan0 bleibt dann für den "normalen" Gebrauch erhalten.
Es ist möglich, sowohl wlan0 als auch wds.wlan0 gleichzeitig zu verwenden - obwohl ich die Zuordnung zu demselben AP nur zweimal getestet habe, nicht zu verschiedenen APs. Ich vermute, sie müssten mindestens auf demselben Kanal sein.
Einige Leute haben gefragt, warum dies verwendet werden soll, wenn VirtualBox WiFi "in Ordnung" überbrücken kann. Die Antwort ist, dass VirtualBox die MAC-Adressen der virtuellen Maschinen nicht sendet. Vielmehr wird NAT auch auf der MAC-Ebene ausgeführt. - 22.08.2014
Direkte WLAN-Brücke
Unter Umständen können Sie auch wlan_kabel verwenden. Es verwendet Paket-Sockets, um Wlan * -Geräte direkt mit Ethernet-Geräten zu verbinden. Mit wlan_kabel können Sie jedoch immer nur einen einzigen MAC gleichzeitig überbrücken. Es hat nicht den Nachteil, von Zugangspunkten gesperrt zu sein, da nur der ursprüngliche MAC des WLAN-Geräts verwendet wird. In Ihrem Fall würde dies bedeuten, dass wlan0 nur von einer VM und nicht einmal vom Host verwendet werden kann. Sie können wlan_kabel hier bekommen . Dies ähnelt der macvlans- Lösung.
Überbrückung mit ipvlan
IP Vlan hat nicht die Einschränkung einer Bridge, die zum Überbrücken eines Netzwerks verwendet werden kann. Details zur Verwendung finden Sie hier
Maskerade-Alternative
Linux-Routing kann stattdessen mit iptables-masquerade und ip_forward verwendet werden, um eine Bridge zu erstellen. Wie bereits erwähnt, muss jedoch ip_forward aktiviert werden, damit Linux sich wie ein Router verhält. Dies muss sorgfältig konfiguriert werden, da dies zu Sicherheitsrisiken führen kann.
Die Schnittstelle br0 hat dann Zugriff auf das wlan0-Netzwerk
Wichtig und verwandt
Außerdem und sehr wichtig, sollten Sie keine veralteten, veralteten Befehle wie ifconfig, brctl usw. verwenden. Die iproute2-Suite enthält Befehle für all dies, einschließlich der Einrichtung virtueller Schnittstellen (für die wir früher openvpn verwenden mussten) und der Erstellung von Bridges. Wenn Sie nicht wissen, wie Sie eine Bridge mit ip einrichten, können Sie loslegen
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0
ip addr add 10.173.10.1/24 dev br0
ip link set br0 up
Mit diesem Befehlssatz erstellen wir eine virtuelle Schnittstelle mit dem Namen tap0, dann eine Brücke mit dem Namen br0, versklaven eth0 und tap0 der Brücke, der wir die IP-Adresse 10.173.10.1 zuweisen, und rufen sie dann auf. Die drei separaten Instanzen zum Aufrufen der Schnittstellen (für tap0, eth0 und br0) sind erforderlich.
Der Trick, mit dem dies funktioniert, ist die Verwendung von proxy.arp, mit dem Ihr PC (nicht Ihr VM / Linux-Container / Netzwerk-Namespace) ARP-Anfragen an deren Stelle beantworten kann.
Mit anderen Worten, wenn Sie IPv4-Weiterleitung zwischen Ihrer Hardwareschnittstelle und Ihrer virtuellen Schnittstelle verwenden, können Sie Ihre VM / LXC / NNS an Ihr LAN anschließen, als wäre es eine physische Schnittstelle, aber dies ist nicht wahr: Sie vergessen das Absolute Grundlegender ARP-Verkehr, der den LAN-Betrieb wirklich ermöglicht. Das Problem ist also: Wenn ich IPv4-Datenverkehr richtig weiterleite, wie kann ich dann auch ARP-Datenverkehr weiterleiten, damit meine VM / LXC / NNS funktionieren? Der Trick ist, Proxy-Arp zu verwenden.
Die vollständige Antwort darauf finden Sie im Blog von Bohdi Zazen mit dem aufschlussreichen Titel: Bridge wireless cards. Er verwendet ein veraltetes Paket, uml-utilities, um mithilfe des Befehls tunctl eine virtuelle Schnittstelle zu erstellen. Dies ist der einzige Befehl, für den er uml-utilities verwendet, sodass Sie das Herunterladen des Pakets sicher vernachlässigen und den Befehl I verwenden können Schreiben Sie oben, um ein Tap- oder Tun-Interface zu erstellen. Ändern Sie einfach den Befehl entsprechend. Erstellen Sie dann ein Veth-Paar für Ihren LXC und stellen Sie nun eine Brücke zwischen tap0 und veth0 her. Für diese Brücke mit dem Namen br0 müssen Sie anstelle der von Bohdi Zazen beschriebenen einfachen Schnittstelle tap0 einen Proxy-Arp ausführen.
Implementieren Sie drahtlose Netzwerke mit systemd-networkd . Legen Sie in der .network-Datei fest IPForward=yes. Ich habe WPA Supplicant verwendet , um die drahtlose Netzwerkschnittstelle zu verwalten.
Aktivieren Sie die mDNS-Weiterleitung, indem Sie enable-reflector=yesinnerhalb von festlegen /etc/avahi/avahi-daemon.conf. starten und aktivieren, avahi-daemon.servicefalls noch nicht geschehen.
Installieren Sie parprouted aus dem AUR und erstellen Sie eine Servicedatei dafür, indem Sie die aus der Raspbian-Antwort anpassen . Ich fand es nicht notwendig, die Schnittstelle so einzustellen, dass sie promiskuitiv ist. Dieser Dienst muss natürlich gestartet und aktiviert werden.
[Unit]
Description=proxy arp routing service
Documentation=https://raspberrypi.stackexchange.com/q/88954/79866
[Service]
Type=forking
# Restart until wlan0 gained carrier
Restart=on-failure
RestartSec=5
TimeoutStartSec=30
ExecStartPre=/lib/systemd/systemd-networkd-wait-online --interface=wlan0 --timeout=6 --quiet
ExecStartPre=/usr/bin/echo 'systemd-networkd-wait-online: wlan0 is online'
# clone the dhcp-allocated IP to eth0 so dhcrelay will relay for the correct subnet
ExecStartPre=/usr/bin/bash -c '/usr/bin/ip addr add $(/usr/bin/ip -4 -br addr show wlan0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
ExecStartPre=/usr/bin/ip link set dev eth0 up
# v minus sign
ExecStart=-/usr/bin/parprouted eth0 wlan0
ExecStopPost=/usr/bin/ip link set dev eth0 down
ExecStopPost=/usr/bin/bash -c '/usr/bin/ip addr del $(/usr/bin/ip -4 -br addr show eth0 | /usr/bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")/32 dev eth0'
[Install]
[email protected]
Erstellen Sie einen DHCP-Dienst (aus dem DHCP-Paket), um DHCP für das an den Ethernet-Port angeschlossene Gerät zu unterstützen. Das Ermitteln der Adresse des DHCP-Servers durch Durchsuchen von Protokollen scheint nicht relevant, funktioniert jedoch. Starten und aktivieren.
Dieser Ansatz funktionierte für mich auf einem Himbeer-Pi-Modell B + mit ArchLinuxArm und einem USB-WLAN-Adapter mit dem RT5370-Chipsatz. Da der Pi WLAN nur für einen Drucker mit Ethernet bereitstellt, möchte ich, dass er unempfindlich gegen grobe Beanspruchung ist. Als Nächstes muss die SD-Karte als schreibgeschützt konfiguriert werden .
Antworten:
AKTUALISIEREN
Unter linux-ath5k-devel ist es nicht möglich, eine Brücke zwischen drahtlosen (Client oder Stationsmodus) und kabelgebundenen Schnittstellen gemäß diesem Thread herzustellen .
NAT einrichten
Man sollte stattdessen NAT einrichten:
Zuweisen einer IP
Dann müssen Sie sich IP-Adressen zuweisen:
Installieren Sie den DHCP-Daemon
Installieren Sie einen DHCP-Server und fügen Sie den folgenden Text in die Konfigurationsdatei ein (in /etc/dhcpd.conf oder ähnlichem)
Starten Sie dhcpd
Dann starte es /etc/init.d/dhcpd start
Und das ist es!
Lesen Sie unten nur, wenn Sie sich für das nicht funktionierende Bridging-Setup interessieren
Zuerst erstellen Sie eine Bridge-Schnittstelle. Ich wähle einen beliebigen Namen für mybridge und füge ihr dann Schnittstellen hinzu.
Sie sollten eine neue IP-Adresse anfordern (Dies wird nur benötigt, wenn Sie eine gültige IP für das Bridging-Gerät selbst erhalten möchten):
quelle
Zur Überbrückung der WLAN- Schnittstelle können Sie das
iw
Tool verwenden, um 4addr ebenfalls zu aktivieren :dh:
Jetzt sollte es klappen. Sie können Brücken zeigen mit:
quelle
4addr
Modus verhält sich WiFi so stark wie kabelgebundenes Ethernet, dass Bridging funktioniert. Ohne das funktioniert Bridging nicht ohne NAT.4addr
erfordert, dass beide Seiten einer drahtlosen Verbindung dies unterstützen (vorausgesetzt, Sie versuchen, einen WLAN-Extender zu implementieren)Kommt darauf an, wie gemein der AP für dich ist:
1) Möglicherweise möchte es nur Pakete sehen, die von Ihnen stammen, mit Ihrer bekannten Link-Layer-Adresse (und daher nicht von überbrückten Paketen) es kennt DHCP und prüft es)
Wenn 1 + 2 beide wahr sind, brauchst du ja sowas wie IP NAT, DHCP, ..
Wenn jedoch nur 1) zutrifft, können Sie die Link-Layer-Adresse fälschen und in umgekehrter Reihenfolge wie hier beschrieben auf der rechten Seite abbilden:
https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC
quelle
4addr, wie in anderen Antworten beschrieben, ist sicherlich der beste Weg, wenn es vom Adapter / Treiber unterstützt wird, aber nicht alle von ihnen. NAT funktioniert möglicherweise für einige Dinge, aber eine ordnungsgemäße Kommunikation auf beiden Wegen im LAN wird problematisch (z. B. Anschließen eines Druckers oder Zugreifen auf andere IoT-Geräte auf der anderen Seite des NAT). Alles, was auf Broadcast / Multicast angewiesen ist (z. B. automatische Erkennung, Bonjour), schlägt über das NAT fehl.
Die Alternative ist die Verwendung eines ARP-Proxys (parprouted), wie in https://wiki.debian.org/BridgeNetworkConnectionsProxyArp beschrieben . Ich habe dies auf einem Himbeer-Pi für einen Drucker eingerichtet und es funktioniert wie ein Zauber (ich habe den
post-up
Befehlen einen 10-Sekunden-Schlaf hinzugefügt , damit er zuerst eine IP-Adresse erhält, was möglicherweise mit der Langsamkeit meines alten zu tun hat RPi ...)quelle
Bridge wlan und 4addr:
Überbrückung von wlan0 ist ein Schmerz. Normalerweise können Sie es nicht zu einer Bridge-Schnittstelle hinzufügen (brctl gibt "Operation not allowed" zurück), und die Verwendung des VirtualBox-Filters "bridged" führt zu einem großen Durcheinander von ARP- und DHCP-Konflikten. Die Ursache hierfür ist, dass 802.11-Frames standardmäßig nur drei Adressen enthalten: Die MAC-Adressen sowohl der drahtlosen Geräte (Laptop und AP) als auch des Endempfängers (wie in Ethernet). Es wird immer davon ausgegangen, dass es nur einen möglichen Urheber gibt.
802.11 kann die vierte MAC-Adresse des Absenders tragen, die von Repeatern im WDS-Modus verwendet wird. Diese Funktion kann auch unter Linux mit iw aktiviert werden. Wenn Sie diesen Modus aktivieren, kann wlan0 sowohl in Bridge-Schnittstellen als auch in VirtualBox-Bridged-Netzwerken verwendet werden:
Wenn 4addr aktiviert ist, werden Sie wahrscheinlich vom AP vollständig ignoriert: Die Zuordnung ist erfolgreich, aber alle Datenrahmen verschwinden im Ether. Dies kann aus Sicherheitsgründen sein (weil es verdammt schwer ist, die MAC-Quelladresse zu verfälschen. Ja.) In meinem Router (mit OpenRG) muss der "WDS" -Modus für die WLAN-AP-Schnittstelle aktiviert werden. Fügen Sie ein WDS-Gerät hinzu, das auf meine beschränkt ist die MAC-Adresse des Laptops und fügen Sie sie der LAN-Bridge hinzu. 4addr-Pakete funktionieren jetzt.
Es gibt jedoch ein weiteres Problem: Der Router weist jetzt Pakete mit drei Adressen vom Laptop zurück, was ziemlich unpraktisch sein kann (bei jedem Wechsel des WLAN-Netzwerks muss 4addr umgeschaltet werden). Die Problemumgehung besteht darin, auf dem Laptop eine zweite drahtlose Schnittstelle hinzuzufügen, die mit demselben Gerät verbunden ist, jedoch eine andere MAC-Adresse aufweist. Machen Sie zuerst die frühere Konfiguration rückgängig:
Fügen Sie dann eine zweite Schnittstelle hinzu - der Name wurde willkürlich gewählt - mit einer anderen MAC-Adresse:
Hier muss die im Router konfigurierte WDS-Geräteadresse übereinstimmen; Ansonsten kann es sich um eine beliebige gültige MAC-Adresse handeln. Der ursprüngliche MAC von wlan0 bleibt dann für den "normalen" Gebrauch erhalten.
Es ist möglich, sowohl wlan0 als auch wds.wlan0 gleichzeitig zu verwenden - obwohl ich die Zuordnung zu demselben AP nur zweimal getestet habe, nicht zu verschiedenen APs. Ich vermute, sie müssten mindestens auf demselben Kanal sein.
Einige Leute haben gefragt, warum dies verwendet werden soll, wenn VirtualBox WiFi "in Ordnung" überbrücken kann. Die Antwort ist, dass VirtualBox die MAC-Adressen der virtuellen Maschinen nicht sendet. Vielmehr wird NAT auch auf der MAC-Ebene ausgeführt. - 22.08.2014
Direkte WLAN-Brücke
Unter Umständen können Sie auch wlan_kabel verwenden. Es verwendet Paket-Sockets, um Wlan * -Geräte direkt mit Ethernet-Geräten zu verbinden. Mit wlan_kabel können Sie jedoch immer nur einen einzigen MAC gleichzeitig überbrücken. Es hat nicht den Nachteil, von Zugangspunkten gesperrt zu sein, da nur der ursprüngliche MAC des WLAN-Geräts verwendet wird. In Ihrem Fall würde dies bedeuten, dass wlan0 nur von einer VM und nicht einmal vom Host verwendet werden kann. Sie können wlan_kabel hier bekommen . Dies ähnelt der macvlans- Lösung.
Überbrückung mit ipvlan
IP Vlan hat nicht die Einschränkung einer Bridge, die zum Überbrücken eines Netzwerks verwendet werden kann. Details zur Verwendung finden Sie hier
Maskerade-Alternative
Linux-Routing kann stattdessen mit iptables-masquerade und ip_forward verwendet werden, um eine Bridge zu erstellen. Wie bereits erwähnt, muss jedoch ip_forward aktiviert werden, damit Linux sich wie ein Router verhält. Dies muss sorgfältig konfiguriert werden, da dies zu Sicherheitsrisiken führen kann.
Die Schnittstelle br0 hat dann Zugriff auf das wlan0-Netzwerk
Wichtig und verwandt
Außerdem und sehr wichtig, sollten Sie keine veralteten, veralteten Befehle wie ifconfig, brctl usw. verwenden. Die iproute2-Suite enthält Befehle für all dies, einschließlich der Einrichtung virtueller Schnittstellen (für die wir früher openvpn verwenden mussten) und der Erstellung von Bridges. Wenn Sie nicht wissen, wie Sie eine Bridge mit ip einrichten, können Sie loslegen
Mit diesem Befehlssatz erstellen wir eine virtuelle Schnittstelle mit dem Namen tap0, dann eine Brücke mit dem Namen br0, versklaven eth0 und tap0 der Brücke, der wir die IP-Adresse 10.173.10.1 zuweisen, und rufen sie dann auf. Die drei separaten Instanzen zum Aufrufen der Schnittstellen (für tap0, eth0 und br0) sind erforderlich.
Der Trick, mit dem dies funktioniert, ist die Verwendung von proxy.arp, mit dem Ihr PC (nicht Ihr VM / Linux-Container / Netzwerk-Namespace) ARP-Anfragen an deren Stelle beantworten kann.
Mit anderen Worten, wenn Sie IPv4-Weiterleitung zwischen Ihrer Hardwareschnittstelle und Ihrer virtuellen Schnittstelle verwenden, können Sie Ihre VM / LXC / NNS an Ihr LAN anschließen, als wäre es eine physische Schnittstelle, aber dies ist nicht wahr: Sie vergessen das Absolute Grundlegender ARP-Verkehr, der den LAN-Betrieb wirklich ermöglicht. Das Problem ist also: Wenn ich IPv4-Datenverkehr richtig weiterleite, wie kann ich dann auch ARP-Datenverkehr weiterleiten, damit meine VM / LXC / NNS funktionieren? Der Trick ist, Proxy-Arp zu verwenden.
Die vollständige Antwort darauf finden Sie im Blog von Bohdi Zazen mit dem aufschlussreichen Titel: Bridge wireless cards. Er verwendet ein veraltetes Paket, uml-utilities, um mithilfe des Befehls tunctl eine virtuelle Schnittstelle zu erstellen. Dies ist der einzige Befehl, für den er uml-utilities verwendet, sodass Sie das Herunterladen des Pakets sicher vernachlässigen und den Befehl I verwenden können Schreiben Sie oben, um ein Tap- oder Tun-Interface zu erstellen. Ändern Sie einfach den Befehl entsprechend. Erstellen Sie dann ein Veth-Paar für Ihren LXC und stellen Sie nun eine Brücke zwischen tap0 und veth0 her. Für diese Brücke mit dem Namen br0 müssen Sie anstelle der von Bohdi Zazen beschriebenen einfachen Schnittstelle tap0 einen Proxy-Arp ausführen.
Quellen: askubuntu.com , nullroute.eu.org , firejail.wordpress.com , superuser.com
quelle
Ich mochte den Proxy-Arp-Ansatz , aber die ursprüngliche Frage spezifizierte Arch Linux. Hier ist eine Arch Linux-Version einer Raspbian-Implementierung . Ich habe mich sehr bemüht, den ursprünglichen Ansatz aus dem hier erwähnten Debian-Wiki mit und ohne Erfolg an netctl anzupassen . Alles funktionierte auf der Kommandozeile, aber nicht im Profil.
ExecUpPost
ExecDownPre
Die Schritte:
IPForward=yes
. Ich habe WPA Supplicant verwendet , um die drahtlose Netzwerkschnittstelle zu verwalten.enable-reflector=yes
innerhalb von festlegen/etc/avahi/avahi-daemon.conf
. starten und aktivieren,avahi-daemon.service
falls noch nicht geschehen.Dieser Ansatz funktionierte für mich auf einem Himbeer-Pi-Modell B + mit ArchLinuxArm und einem USB-WLAN-Adapter mit dem RT5370-Chipsatz. Da der Pi WLAN nur für einen Drucker mit Ethernet bereitstellt, möchte ich, dass er unempfindlich gegen grobe Beanspruchung ist. Als Nächstes muss die SD-Karte als schreibgeschützt konfiguriert werden .
quelle