Brücken leicht gemacht:
Es gibt ein Projekt auf Sourceforge, das speziell für Ihre Situation erstellt wurde. http://sourceforge.net/projects/bridger/ Es kommt sogar als Deb-Paket.
In Bezug auf das 'Verwerfen' von Paketen:
-
Haben Sie überprüft, ob iptables auf Standard-Drop eingestellt ist?
sudo iptables --list
sollte für eine Box dieses Typs "AKZEPTIEREN, AKZEPTIEREN, AKZEPTIEREN" lauten. Wenn das das Problem ist, schalten Sie es aus. -
Leitest du die Pakete überhaupt weiter, Bruder? Stellen Sie sicher, dass die Zeile „net.ipv4.ip_forward=1“ in /etc/sysctl.conf NICHT kommentiert ist (das ist standardmäßig der Fall), und starten Sie dann Ihr Netzwerk neu.
-
Promiscuous-Modus wird nicht unterstützt durch Ihren drahtlosen Dongle. (was bedeutet, dass es keine Pakete annehmen kann, die nicht für es bestimmt sind)
Pure Bridge vs. Shared Bridge:
-
iface br0 inet dhcp zeigt ein gemeinsames an bridge, was bedeutet, dass die Bridge selbst eine IP erhält und ein Endpunkt für den Datenverkehr sein kann.
-
Eine reine Brücke erhält keine IP-Adresse und leitet den Datenverkehr nur zwischen den beiden Schnittstellen weiter
-
Geteilte Brücke Beispiel für eine /etc/network/interfaces-Konfigurationsdatei (Debian/Ubuntu)
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # Bridge between eth0 and wlan0 auto br0 iface br0 inet dhcp pre-up ip link set eth0 down pre-up ip link set wlan0 down pre-up brctl addbr br0 pre-up brctl addif br0 eth0 wlan0 pre-up ip addr flush dev eth0 pre-up ip addr flush dev wlan0 post-down ip link set eth0 down post-down ip link set wlan0 down post-down ip link set br0 down post-down brctl delif br0 eth0 wlan0 post-down brctl delbr br0
Starten Sie das Netzwerk neu:sudo /etc/init.d/networking restart
Nachdem Sie komplexe Änderungen an der Netzwerkkonfiguration vorgenommen haben, ist es einfacher, einfach neu zu starten, anstatt sicherzustellen, dass beim Neustart alles ordnungsgemäß neu gestartet wird.
Sie glauben, dass Sie Routing-Probleme haben:
-
DNS als Ursache beseitigen durch Testen mit
ping 8.8.8.8
. Wenn dies funktioniert, liegt wahrscheinlich ein DNS-Problem in Ihrem Netzwerk vor. -
Überprüfen Sie Ihr Gateway mit
sudo ip route
hoffentlich sehen Siedefault via 192.168.1.1 dev br0 proto dhcp
(vorausgesetzt, Ihr Gateway ist 192.168.1.1). Wenn es fehlt oder falsch ist, korrigieren Sie essudo ip route add default via 192.168.1.1
. Nochmals testen:ping 8.8.8.8
-
Erneuern Sie Ihre gemeinsame Bridge-IP mit
dhclient br0
und erneut mitping 8.8.8.8
testen -
Überprüfen Sie Ihre 'Slave'-Schnittstellen mit
ifconfig
und stellen Sie sicher, dass eth0 und wlan0 KEINE IP-Adressen haben. Sie sind jetzt ein Teil der Brücke. Wenn dies der Fall ist, stellen Sie sicher, dass Sie sie aus allen Konfigurationsdateien entfernen, sie auf statisch 0.0.0.0 oder so setzen.
Wenn KEINES davon funktioniert, versuchen Sie diese Debian-Bridging-App, und wenn das nicht funktioniert, unterstützt Ihr drahtloser Dongle keinen Promiscuous-Modus. (siehe oben)
Wenn es hier zu irgendeinem Zeitpunkt funktioniert, starten Sie es neu und stellen Sie sicher, dass es immer noch funktioniert.
Ich habe einige drahtlose Brücken, die unter Debian Linux und Openwrt arbeiten, daher bin ich mit diesem Problem sehr vertraut.
Sie haben einen wichtigen Befehl verpasst:Sie haben vergessen, Ihrem Wireless-Treiber mitzuteilen, dass er 4-Adress-Frames (manchmal falsch/historisch WDS genannt) übertragen soll, was für 802.11/Wireless-Bridging erforderlich ist. Tun Sie dies mit dem Befehl „iw dev wlan0 set 4addr on“. Verwenden Sie eine „pre-up“-Anweisung in Ihrer Debian-Schnittstellendatei auf der Brücke, um sie anzuwenden, bevor Sie die Brücke hochfahren. Beachten Sie, dass der 4-Adressen-Frame-Modus Treiberunterstützung erfordert und einige alte beschissene 802.11-Treiber oder -Hardware dies möglicherweise nicht unterstützen.
Ich vermute auch stark, dass Ihre Probleme möglicherweise durch einen Fehler im Linux-Kernel kompliziert wurden, der speziell überbrückte Schnittstellen betrifft. Ich bin selbst auf diesen Fehler gestoßen und musste meinen eigenen wpa_supplicant aus den Quellen kompilieren, da die Version in Debian alt und betroffen ist. wpa_supplicant und hostapd teilen sich eine gemeinsame Codebasis, aber ich bin mir nicht ganz sicher, ob dies sowohl hostapd als auch wpa_supplicant betrifft.
Es gibt hier einen Workaround-Commit für das Problem:
https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040
Ich habe den Eindruck, dass dies in der 2.5-Version enthalten ist, und ich weiß, dass es in der aktuellen 2.6-Quelle enthalten ist. Die aktuelle Debian-Version ist 2.4, die kaputt ist. Bitte belästigen Sie das Debian-Projekt, damit es seine wpasupplicant- und hostapd-Pakete aktualisiert.
Hier ist eine Beispielkonfiguration für einen drahtlosen Bridge-Client, der WPA/WPA2 mit einer drahtlosen Bridge zwischen den Schnittstellen wlan0 und eth0 verwendet, wobei der Host eine DHCP-Adresse auf der br0-Schnittstelle erhält (ersetzen Sie „dhcp“ durch „manual“ für keine IP-Adresse). Für eine Situation, in der Sie der AP sein möchten, fügen Sie die Befehle interface=und bridge=in hostapd.conf ein und lassen Sie die wpa-*-Befehle unten weg.
In Ihrer Datei /etc/network/interfaces:
allow-auto br0
iface br0 inet dhcp
bridge_ports wlan0 eth0
bridge_stp off
bridge_waitport 5
bridge_fd 0
wpa-ssid mynetwork
wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
wpa-iface wlan0
wpa-bridge br0
pre-up iw dev wlan0 set 4addr on
post-down iw dev wlan0 set 4addr off
Und stellen Sie sicher, dass Ihr wpa_supplicant Version 2.5 oder höher ist. Es funktioniert nicht mit wpa_supplicant 2.4 und aktuellen Kernel-Versionen.
Ich sollte auch beachten, dass es derzeit einen Race-Bug in ifup gibt, bei dem Bridge-Schnittstellen beim Booten möglicherweise nicht angezeigt werden, aber das ist ein ganz anderes Problem.
Sie scheinen eine IP-Weiterleitung zu benötigen.
versuchen Sie es mit cat /proc/sys/net/ipv4/ip_forward
Wenn es 0
ist Ausgabe:echo 1 > /proc/sys/net/ipv4/ip_forward