Überbrückung von Wifi zu Ethernet unter Ubuntu funktioniert nicht


22

Unter Windows konnte ich die WLAN-Verbindung über die Ethernet-Verbindung meines Laptops überbrücken, sodass eine Reihe von Geräten, die nur für Ethernet geeignet sind, die WLAN-Verbindung unterbrechen konnten (Raspberry Pi, Xbox usw. usw.). Ich versuche jetzt, dasselbe in Ubuntu zu tun, dh das Setup wäre:

WLAN-Router ---> WLAN auf dem Laptop ---> Brücke zum Ethernet ---> Gerät, für das das Internet an den Ethernet-Port angeschlossen werden muss

Jetzt habe ich versucht, dies mit brctl in Ubuntu zum Laufen zu bringen

Ich habe den folgenden Befehl verwendet:

sudo brctl addif br0 eth0 wlan0

Und erhalten Sie den folgenden Fehler:

can't add wlan0 to bridge br0: Operation not supported

Ich hoffe, dass jemand helfen kann, da ich es ablehne zu glauben, dass etwas, das ich unter Windows sehr einfach tun kann, unter Linux nicht möglich ist.

Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. Vielen Dank


Sehr ähnlich Problem behandelt in [ askubuntu.com/questions/155041/...
Legionair

Antworten:


10

Das geht nicht. Sie können keine WiFi-Client-Verbindung überbrücken. Wenn Sie könnten, würden wir WDS nicht brauchen, wir würden nur überbrücken.

Das Problem ist sehr einfach - ein Zugangspunkt wird durch die WiFi-Spezifikation daran gehindert, Datenverkehr über das WiFi-Netzwerk zu übertragen, es sei denn, etwas autorisiert diese Übertragung. Dies ist größtenteils ein Relikt aus der Zeit, als WiFi-Netzwerke sehr langsam waren und wenn überhaupt schlechte Sicherheit hatten.

Die Bridge hat nur eine Client-Verbindung zum Access Point. Dies autorisiert den Access Point nur zur Übertragung des für die Bridge bestimmten Datenverkehrs. Da alle mit der Bridge verbundenen Computer keine Clients des Zugriffspunkts sind, hat der Zugriffspunkt keinen Grund, für sie gebundenen Datenverkehr über die WiFi-Verbindung zu senden. Also wird es nicht so sein.

Leider reicht WiFi wie Ethernet aus, sodass man leicht erwarten kann, dass es sich wie Ethernet verhält. Aber es ist gerade anders genug, um dich zu beißen.

Die WDS-Konfiguration ist eine spezifische Berechtigung für einen Access Point, Datenverkehr zu senden, der für keinen seiner Clients gebunden ist. Wenn beide Endgeräte WDS unterstützen, enthalten sie die Adresse des Überbrückungsendpunkts sowie die Adresse des Ziels, wodurch der Zugriffspunkt zum Senden des Datenverkehrs autorisiert wird.

Sie müssen etwas anderes als Bridging verwenden, um dies zu tun. Zum Beispiel Routing mit NAT. Sie können auch den Vier-Adressen-Modus verwenden, wenn beide Enden der WLAN-Verbindung dies unterstützen.


3
Sie können dieses Problem lösen, indem Sie die Mac-Adressen mit ebtables
ccarton 26.10.13

Mir ist aufgefallen, dass eine Person hier sagt, Sie können in Ubuntu ... und ich habe so etwas auch in Windows gemacht ... obwohl Sie sagen, es ist unmöglich, also können Sie vielleicht erklären, was der Unterschied zwischen diesem und diesem ist. Unter Windows, wenn Sie dies tun youtube.com/watch?v=96Z1_6rX5qU WiFi mit dem Internet verbunden.Kein Kabel im Ethernet-Anschluss..oder Kabel eines anderen Computers im Ethernet-Anschluss. Dann wählen WiFi - Adapter und Ethernet - Adapter, es überbrückt sie, n dann kann ein anderer Computer sein Kabel anschließen und nutzen die Internetverbindung Der Laptop ist immer noch ein WiFi - Client Ich denke (und nicht ein Access Point)
barlop

1
@DavidSchwartz Wenn eine Person einen Laptop ohne funktionierendes WLAN und keinen Netzwerkschalter zum Anschließen für den Internetzugang hat, aber ein anderer Laptop über einen WLAN-Internetzugang verfügt und es keinen freien WLAN-USB-Stick gibt. Dann scheint die einzige Lösung die Überbrückungsfälschung zu sein. Wenn beide Laptops einen funktionierenden WLAN-Adapter hätten, könnten sie beide nur eine Verbindung zum wichtigsten WLAN-Zugriffspunkt herstellen, ohne dass zusätzliche Zugriffspunkte und WDS erforderlich wären. Ich habe die Überbrückungsfälschung verwendet, als ein Laptop keine WLAN-Verbindung herstellen konnte.
Barlop

1
Falsch. Für den Anfang ist ein WDS eine WiFi-Verbindung, nicht anders als die anderen. Zweitens gibt es diese netten Geräte, die als Client-Bridges oder Media-Bridges bezeichnet werden, die über einen AP verbunden sind und 3-5 verkabelte Buchsen, die Hubs usw. sein können, transparent überbrücken Wie viele MACs können sie überbrücken, aber am Ende ... gibt es einen Weg. Zum Teufel, sogar Linux lässt Sie den WDS-Modus als STA verwenden, wenn Sie 4addr über den Befehl iw auf dem Gerät als Modus festlegen und der Treiber dies zulässt. Sie können überbrücken ... es ist nur ... unter Vorbehalt.
Svartalf

1
@DavidSchwartz: Routing? Ernst? Hier ist ein Hinweis. Die Anwendung kann über mehr als 500 Knoten im Netzwerk verfügen. Können SIE das Routing auf diese Weise ordnungsgemäß ausführen? "Echtes WDS"? Kann ich sicher sein, dass es mit Cisco, Aruba, Ubiquiti und anderen zusammenarbeitet? Wenn ja, dann ja, wenn nicht, dann ist die Prämisse ein Problem, das nicht in Frage kommt. Ich habe es ziemlich gut mit dem Wahnsinn zu tun, den ich mit dem WDS-Station-Modus versuche ... aber wird es mit etwas anderem als einem Hostapd oder einem ähnlichen abgeleiteten Linux-Gerät funktionieren?
Svartalf

3

Ich hatte ein ähnliches Problem mit LXC. Ich habe das Überbrückungsproblem bei WLAN-Geräten umgangen. Zunächst benötigen Sie ein Ersatz-Ethernet-Gerät im Computer. Der Trick besteht darin, eine Route vom Ethernet-Gerät zum WLAN zu erstellen.

Wählen Sie in der Serverdatei / etc / network / interfaces ein nicht verwendetes Netzwerk für Ihre virtuellen Hosts aus, dh 10.0.0.0. Weisen Sie Ihrer Ersatz-Ethernet-Schnittstelle eine IP zu, hier ist es eth0 und überbrückt sie folgendermaßen:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

Sobald dies erledigt ist, können Sie den MASQUERADE-Weg gehen, wie Kostyantyn hier zuvor geantwortet hat. Diese sollten sich in rc.local oder in einem Skript befinden, das Sie beim Booten oder vor dem Starten der virtuellen Domänen ausführen müssen:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

Konfigurieren Sie auf dem virtuellen Server statische IP-Adressen in / etc / network / interfaces. Ich verwende das Netzwerk 10.0.0.0. Wenn Sie weitere virtuelle Hosts erstellen, werden Sie wahrscheinlich 3 verwenden, und so weiter. Wenn Sie viele haben, können Sie in Betracht ziehen, einen DHCP-Server für diese zu installieren. Die .1 ist das zuvor konfigurierte Gateway.

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

Konfigurieren Sie auch einen DNS-Server, meiner war der Netzwerk-Router, in /etc/resolv.conf:

nameserver 192.168.1.1

Hoffe das hilft


Dies ist ein Trick der Ebene 3 und keine wirkliche "Überbrückung" - sobald Sie iptables verwenden, leiten Sie.
Svartalf

0

Ich denke, was Sie wirklich brauchen, ist keine Brücke, aber auch:

  • SNAT (wenn WLAN eine statische IP hat) (siehe diese Seite )

oder

  • MASQUERADE (wenn WLAN eine dynamische IP hat - das heißt, die IP ändert sich)

1) erstelle forwarding_enable_file.shmit folgendem Inhalt:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Führen Sie die Datei aus:

sudo ./forwarding_enable_file.sh

3) Geben Sie auf dem Rest des Hosts Ihre Ubuntu-Box als Gateway an.

sudo ip route add default via ubuntu-ip

wo ubuntu-ip sollte von Ihrer ubuntu-Feld IP - Adresse ersetzt werden , dh 192.168.1.10

4) Pingen Sie eine IP-Adresse, z. B. 8.8.8.8, von anderen Hosts aus:

ping 8.8.8.8

5) Überprüfen Sie Ihre DNS-Einstellungen, indem Sie eine Domain pingen, dh:

ping slivkoed.ru

6) Wenn Schritt 4) funktioniert und 5) nicht, dann haben Sie Probleme mit Ihren DNS-Einstellungen. Führen Sie in diesem Fall Folgendes mit Root-Rechten aus:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Führen Sie Schritt 5) erneut aus.

Weitere Informationen zu resolv.conf finden Sie hier .


Kommt darauf an, was du brauchst. Wenn Sie transparente (Wellen Hand) brauchen, nein, das wollen Sie nicht. Ernst. Sie benötigen das Verhalten, das sich beispielsweise in der stillgelegten TEW640-MB-Medienbrücke von Trendnet zeigt (Sitzung im STA-Modus, die an 4 Ethernet-Ports angeschlossen ist). Dies ist wahrscheinlich nur im WDS (4addr) -Modus oder bei ebtables MAC-Masquerading der Fall (was nicht zu verwechseln ist mit dem, was Sie gepostet haben) - beide haben ihre eigenen Schmerzen und Probleme.
Svartalf

-1

Sie müssen die Schnittstellen herunterfahren, bevor Sie sie überbrücken können.

ifconfig eth0 down

ifconfig wlan0 down


1
Immer noch der gleiche Fehler mit beiden Schnittstellen nach unten
Zac Powell

@Zac Powell verwenden Sie Network-Manager? Ich habe in der Vergangenheit einige Erfahrungen gemacht, die mich stören könnten. In diesem Fall können Sie versuchen, den Dienst zu
beenden

Ja, ok, also sollte ich versuchen, beide herunterzufahren und den Netzwerkmanager zu stoppen, dann den Birdge zu machen und dann alles wieder hochzufahren?
Zac Powell

ja, mit service network-manager stop, dann mach dein Ding, beginne es erneut mitservice network-manager start
Legionair

funktioniert immer noch nicht: / alles ist heruntergefahren, aber es wird immer noch der gleiche Fehler
angezeigt

-4
sudo iw dev wlan1 set 4addr on

Möchten Sie erklären, wie das OP-Problem gelöst werden kann?
Braiam

@Braiam Meine Antwort erklärt ziemlich genau, warum dies funktionieren würde, wenn es vom AP unterstützt würde.
David Schwartz

Leider funktioniert es nicht mit vielen APs. Wie es sein Problem lösen KANN, wenn es mit den meisten APs richtig funktioniert, ist, dass es dem AP die Möglichkeit gibt, der in jedem 802.11-Frame angegebenen Zahl eine zusätzliche MAC hinzuzufügen, um Frames für mehr als nur den authentifizierten MAC weiterzuleiten.
Svartalf

Aus einer anderen Antwort: serverfault.com/a/554663/280693
jhutar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.