web-dev-qa-db-fra.com

Filaire vers un pont sans fil sous Linux

J'essaie de configurer mon Raspberry Pi en tant que pont, en utilisant Debian Wheezy. J'ai un hostapd.conf: (certains détails ont changé pour la 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 ceci dans /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 pour le mieux, mais je ne peux pas 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 fonctionneraient pas en mode hostap - ils ne transmettront pas les paquets dans une seule direction: est-ce vrai? (L'information était un peu ancienne) - ceci 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?

Mettre à jour: J'ai donc effectué d'autres recherches et je peux installer le pont, mais apparemment, cela détruit la connexion Ethernet (câblée), ce qui est étrange. Par exemple, sur le RPi:

Démarrez le système ...

ping 192.168.62.1 

(routeur) - cela fonctionne

Tentative d'association avec un réseau local sans fil ... échoue (ou plutôt "avec une connectivité limitée" sur un téléphone Android - rien de bon)

brctl showmacs br0

Cela montre juste les 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 cingler le RasPi à partir d’une autre machine du réseau.

Fonctionnement

ifconfig br0

Suggère que le pont laisse tomber des paquets ...

Des idées?

Mise à jour supplémentaire: Le fichier /etc/network/interfaces lit maintenant (et pour la séquence ci-dessus):

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
17
adrianmcmenamin

Ponts faciles:

Il existe un projet sur sourceforge conçu spécialement pour votre situation. http://sourceforge.net/projects/bridger/ Cela vient même sous forme de paquet deb.

En ce qui concerne le "largage" des paquets:

  1. Avez-vous vérifié si iptables est défini sur drop par défaut? Sudo iptables --list devrait indiquer "ACCEPT, ACCEPT, ACCEPT" pour une boîte de ce type. Si c'est le problème, éteignez-le.

  2. Etes-vous même en train de transférer les paquets, bro? Assurez-vous que la ligne "net.ipv4.ip_forward = 1" n'est PAS commentée dans /etc/sysctl.conf (par défaut), puis redémarrez votre réseau.

  3. 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é:

  1. 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 du trafic.

  2. Un pont pur ne reçoit pas d'adresse IP et ne fait que transférer le trafic entre les deux interfaces.

  3. Pont partagé Exemple de fichier de configuration/etc/network/interfaces (Debian/Ubuntu)

 # Ce fichier décrit les interfaces réseau disponibles sur votre système 
 # Et comment les activer. Pour plus d'informations, voir interfaces (5). 
 
 # L'interface réseau en boucle 
 Auto lo 
 Iface lo inet loopback 
 
 # Pont entre eth0 et wlan0 
 Auto br0 
 Iface br0 inet dhcp 
 Liaison IP préparée en amont eth0 vers le bas 
 Liaison IP préparée en amont wlan0 vers le bas 
 pre-up brctl addbr br0 
 pré-up brctl addif br0 eth0 wlan0 
 pre-up ip addr flush dev eth0 
 .____.] 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 

Redémarrez le réseau: Sudo /etc/init.d/networking restart Après avoir modifié la configuration du réseau, il est plus facile de redémarrer plutôt que de s’assurer que tout est redémarré correctement lors du redémarrage.

Vous pensez avoir des problèmes de routage:

  1. Éliminez le 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.

  2. Vérifiez votre passerelle avec Sudo ip route si tout va bien vous voyez default 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-le Sudo ip route add default via 192.168.1.1. Testez à nouveau: ping 8.8.8.8

  3. Renouvelez votre adresse IP de pont partagé avec dhclient br0 et relancez un test avec ping 8.8.8.8

  4. Vérifiez vos interfaces 'esclaves' avec ifconfig et assurez-vous que eth0 et wlan0 n'ont PAS d'adresse IP. Ils font partie du pont maintenant. Si tel est le cas, assurez-vous de les supprimer de tous les fichiers de configuration, de les définir sur static 0.0.0.0 ou quelque chose du genre.

Si NONE, cela ne fonctionne pas, essayez cette application de pontage Debian. Si cela ne fonctionne pas, votre clé électronique 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.

10
MattPark

Certains ponts sans fil fonctionnent sous Debian Linux et Openwrt, je connais donc très bien ce problème.

Vous avez oublié une commande importante: vous avez oublié de dire à votre pilote sans fil de transmettre des trames à 4 adresses (parfois appelées WDS de manière incorrecte/historique), requises pour le pontage 802.11/sans fil. Faites-le avec 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 faire apparaître le pont. Notez que le mode de trame à 4 adresses nécessite le support du pilote et que certains anciens pilotes ou matériels 802.11 peuvent ne pas le prendre en charge.

Je soupçonne aussi fortement que vos problèmes ont pu être compliqués par un bogue dans le noyau Linux qui affecte spécifiquement les interfaces pontées. J'ai rencontré ce bogue moi-même et j'ai dû compiler mon propre wpa_supplicant à partir de 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 tout à fait sûr que cela affecte hostapd ainsi que wpa_supplicant.

Il existe une solution de rechange pour résoudre le problème ici:

https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca604

J'ai l'impression que cela se trouve dans la version 2.5, et je sais que cela se trouve dans la source 2.6 actuelle. La version actuelle de Debian est la 2.4, qui est cassée. 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" car aucune adresse IP). Pour une situation où vous souhaitez être le point d'accès, incluez les commandes interface = et bridge = dans hostapd.conf et omettez les commandes wpa- * ci-dessous.

Dans votre fichier/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

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 devrais également noter qu’il ya actuellement un bug de course dans ifup où les interfaces de pont peuvent ne pas arriver au démarrage, mais c’est un tout autre problème.

6

Vous semblez avoir besoin de transfert d'adresse IP.

essayez cat /proc/sys/net/ipv4/ip_forward

Si c'est 0 issue: echo 1 > /proc/sys/net/ipv4/ip_forward

3
CSᵠ

configurer wlan0

vi/etc/network/interface

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

vi /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
0
netawater

Le pontage ne peut fonctionner que lorsqu'une interface reçoit tous les paquets, sinon ils recevront des paquets vus qui ne leur sont adressés. Votre configuration actuelle peut décrire une configuration pour un routeur mais pas pour un pont.

eth0 et wlan0 ne doivent pas avoir d’adresses IP (c’est-à-dire 0.0.0.0) et, si vous le souhaitez, vous pouvez toujours utiliser une adresse IP pour br0.

Voici quelques documents officiels également: http://wiki.debian.org/BridgeNetworkConnections

0
John Wilcox