web-dev-qa-db-de.com

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

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, d. H. 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

19
Zac Powell

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 Bridging-Endpunkts 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.

8
David Schwartz

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, d. H. 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 mehr 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

3
Francesc Guasch

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.sh mit 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. HINWEIS: Wenn auf einigen der Boxen auch Linux ausgeführt wird, können Sie dies mit folgendem Befehl tun:

Sudo ip route add default via ubuntu-ip

dabei sollte Ubuntu-IP durch Ihre Ubuntu-Box-IP-Adresse ersetzt werden, d. h. 192.168.1.10

4) Pingen Sie eine IP-Adresse, d. H. 8.8.8.8, von anderen Hosts:

ping 8.8.8.8

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

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 .

0
Kostyantyn