J'essaie de configurer mon Raspberry Pi comme un pont, en utilisant Debian Wheezy. J'ai un hostapd.conf
: (certains détails ont changé pour des raisons de sécurité, et oui, je sais que le WEP n'est pas bon) ...
interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0
Et cela en /etc/network/interfaces
:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0
Tout semble aller bien, mais je ne peux pas m'associer à la connexion sans fil pontée - même si les voyants clignotants sur la clé USB suggèrent que des paquets sont échangés.
J'ai lu quelque part que toutes les cartes / périphériques ne fonctionneront pas en mode hostap - ils ne transmettront pas les paquets dans un sens: est-ce vrai? (L'info était un peu vieille) - c'est ma carte:
[ 3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[ 3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[ 3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[ 3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[ 3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[ 3.830645] usb 1-1.3.1: SerialNumber: 12345
Alors, qu'est-ce que je me suis trompé ici?
Mise à jour : J'ai donc fait d'autres investigations et je peux obtenir le pont, mais apparemment cela détruit la connexion Ethernet (filaire), ce qui est étrange. Par exemple, sur le RPi:
Démarrez le système ...
ping 192.168.62.1
(routeur) - cela fonctionne
La tentative d'association avec un LAN sans fil ... échoue (ou plutôt "avec une connectivité limitée" sur un téléphone Android - pas bon)
brctl showmacs br0
Cela montre simplement mac de wlan0 et mac de téléphone à ce stade
brctl addif br0 eth0 wlan0
À ce stade, je peux maintenant associer le téléphone au réseau sans fil, mais ...
ping 192.168.62.1
...échoue
Et de même, je ne peux plus envoyer de ping au RasPi à partir d'une autre machine du réseau
Fonctionnement
ifconfig br0
Suggère que le pont supprime des paquets ...
Des idées?
Mise à jour supplémentaire : Le /etc/network/interfaces
fichier maintenant (et pour la séquence ci-dessus) se lit comme suit:
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
la source
iw dev wlan0 info
montre-t-on? Et googler sur l'ID de votre appareil montre que vous avez besoin d'un noyau récent ou de modules sans fil pour exécuter cet appareil en mode AP. Regardez ça . Quel noyau etath9k
pilote utilisez-vous?Réponses:
Des ponts simplifiés:
Il y a un projet sur sourceforge fait juste pour votre situation. http://sourceforge.net/projects/bridger/ Il vient même comme un paquet deb.
En ce qui concerne la «suppression» des paquets:
Avez-vous vérifié si iptables est réglé sur drop par défaut?
sudo iptables --list
devrait dire "ACCEPTER, ACCEPTER, ACCEPTER" pour une boîte de ce type. Si tel est le problème, désactivez-le.Acheminez-vous même les paquets, mon frère? Assurez-vous que la ligne "net.ipv4.ip_forward = 1" n'est PAS commentée dans /etc/sysctl.conf (c'est par défaut), puis redémarrez votre réseau.
Le mode promiscuous n'est pas pris en charge par votre dongle sans fil. (ce qui signifie qu'il ne peut pas accepter les paquets qui ne lui sont pas destinés)
Pont pur contre pont partagé:
iface br0 inet dhcp indique un pont partagé , ce qui signifie que le pont lui-même obtient une adresse IP et peut être un point de terminaison pour le trafic.
Un pont pur n'obtient pas d'adresse IP et transfère uniquement le trafic entre les deux interfaces
Échantillon de pont partagé / etc / network / interfaces fichier de configuration (Debian / Ubuntu)
Redémarrez le réseau:
sudo /etc/init.d/networking restart
après avoir effectué des modifications de configuration réseau complexes, il est plus facile de simplement redémarrer plutôt que de vous assurer que tout a redémarré correctement lors du redémarrage.Vous pensez que vous avez des problèmes de routage:
Éliminez DNS en tant que cause en testant avec
ping 8.8.8.8
. Si cela fonctionne, vous avez probablement un problème DNS sur votre réseau.Vérifiez votre passerelle avec,
sudo ip route
espérons-le, que vous voyezdefault via 192.168.1.1 dev br0 proto dhcp
(en supposant que votre passerelle est 192.168.1.1). S'il est manquant ou incorrect, corrigez-lesudo ip route add default via 192.168.1.1
. Testez à nouveau:ping 8.8.8.8
Renouvelez votre IP de pont partagé avec
dhclient br0
et retestez avecping 8.8.8.8
Vérifiez vos interfaces «esclaves» avec
ifconfig
et assurez-vous que eth0 et wlan0 n'ont PAS d'adresse IP. Ils font maintenant partie du pont. S'ils le font, assurez-vous de les supprimer de tous les fichiers de configuration, de les définir sur 0.0.0.0 statique ou quelque chose.Si AUCUN de cela ne fonctionne, essayez cette application de pontage Debian, et si cela ne fonctionne pas, votre dongle sans fil ne prend pas en charge le mode promiscuous. (voir au dessus)
Si cela fonctionne à tout moment ici, redémarrez et assurez-vous qu'il fonctionne toujours.
la source
eth0
etwlan0
dans cet exemple? Plus précisément, comment définissez-vous le SSID et toute authentificationwlan0
?J'ai des ponts sans fil travaillant sur Debian Linux et Openwrt, donc je connais très bien ce problème.
Vous avez manqué une commande importante: vous avez oublié de dire à votre pilote sans fil de transmettre des trames à 4 adresses (parfois incorrectement / historiquement appelées WDS), ce qui est nécessaire pour le pontage 802.11 / sans fil. Pour ce faire, utilisez la commande "iw dev wlan0 set 4addr on". Utilisez une instruction "pre-up" dans votre fichier d'interface Debian sur le pont pour l'appliquer avant de lancer le pont. Notez que le mode de trame à 4 adresses nécessite la prise en charge du pilote et certains anciens pilotes ou matériel 802.11 merdiques peuvent ne pas le prendre en charge.
Je soupçonne également fortement que vos problèmes peuvent avoir été compliqués par un bogue dans le noyau Linux qui affecte spécifiquement les interfaces pontées. J'ai moi-même rencontré ce bogue et j'ai dû compiler mon propre wpa_supplicant à partir des sources car la version de Debian est ancienne et affectée. wpa_supplicant et hostapd partagent une base de code commune, mais je ne suis pas sûr que cela affecte hostapd ainsi que wpa_supplicant.
Il y a un compromis autour du problème ici:
https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040
J'ai l'impression que c'est dans la version 2.5, et je sais que c'est dans la source 2.6 actuelle. La version actuelle de Debian est 2.4, ce qui est cassé. Veuillez harceler le projet Debian pour mettre à jour leurs paquets wpasupplicant et hostapd.
Voici un exemple de configuration pour un client de pont sans fil utilisant WPA / WPA2 avec un pont sans fil entre les interfaces wlan0 et eth0, l'hôte obtenant une adresse DHCP sur l'interface br0 (remplacez "dhcp" par "manual" pour aucune adresse IP). Pour une situation où vous voulez être l'AP, incluez les commandes interface = et bridge = dans hostapd.conf et omettez les commandes wpa- * ci-dessous.
Dans votre fichier / etc / network / interfaces:
Et assurez-vous que votre wpa_supplicant est la version 2.5 ou ultérieure. Cela ne fonctionnera pas avec wpa_supplicant 2.4 et les versions actuelles du noyau.
Je dois également noter qu'il existe actuellement un bug de course dans ifup où les interfaces de pont peuvent ne pas apparaître au démarrage, mais c'est un tout autre problème.
la source
Vous semblez avoir besoin d'un transfert IP.
essayer
cat /proc/sys/net/ipv4/ip_forward
Si c'est un
0
problème:echo 1 > /proc/sys/net/ipv4/ip_forward
la source
sys.net.ipv4.ip_forward
est pour le routage IPv4, NAT, etc. Bridges fonctionne une couche en dessous dans la pile réseau.Le pontage ne peut fonctionner que lorsqu'une interface reçoit tous les paquets, sinon ils verront les paquets qui leur sont adressés uniquement. Votre configuration actuelle peut décrire une configuration pour un routeur mais pas pour un pont.
eth0 et wlan0 ne devraient pas avoir d'adresse IP (c'est-à-dire 0.0.0.0) et si vous le souhaitez, vous pouvez toujours utiliser une adresse IP pour br0.
Voici également une documentation officielle: http://wiki.debian.org/BridgeNetworkConnections
la source
configurer wlan0
vi / etc / network / interface
vi /etc/sysctl.conf
vi /etc/rc.local
la source