I ponti semplificati:
C'è un progetto su sourceforge fatto apposta per la tua situazione. http://sourceforge.net/projects/bridger/ Arriva anche come pacchetto deb.
Per quanto riguarda l'eliminazione dei pacchetti:
-
Hai controllato se iptables è impostato su default drop?
sudo iptables --list
dovrebbe dire "ACCETTA, ACCETTA, ACCETTA" per una casella di questo tipo. Se questo è il problema, disattivalo. -
Inoltri anche i pacchetti, fratello? Assicurati che la riga "net.ipv4.ip_forward=1" NON sia commentata in /etc/sysctl.conf (lo è per impostazione predefinita), quindi riavvia la rete.
-
La modalità promiscua non è supportata dal tuo dongle wireless. (il che significa che non può accettare pacchetti che non sono destinati ad esso)
Bridge puro contro Bridge condiviso:
-
iface br0 inet dhcp indica un condiviso bridge, il che significa che il bridge stesso ottiene un IP e può essere un endpoint per il traffico.
-
Un ponte puro non ottiene un indirizzo IP e inoltra solo il traffico tra le due interfacce
-
Ponte condiviso Esempio di file di configurazione /etc/network/interfaces (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
Riavvia la rete:sudo /etc/init.d/networking restart
Dopo aver apportato complesse modifiche alla configurazione di rete, è più semplice riavviare piuttosto che assicurarsi che tutto sia stato riavviato correttamente al riavvio.
Pensi di avere problemi di instradamento:
-
Elimina DNS come causa testando con
ping 8.8.8.8
. Se funziona, probabilmente hai un problema DNS nella tua rete. -
Controlla il tuo gateway con
sudo ip route
si spera che tu vedadefault via 192.168.1.1 dev br0 proto dhcp
(supponendo che il tuo gateway sia 192.168.1.1). Se manca o è errato, correggilosudo ip route add default via 192.168.1.1
. Riprova:ping 8.8.8.8
-
Rinnova il tuo IP bridge condiviso con
dhclient br0
e riprova conping 8.8.8.8
-
Controlla le tue interfacce 'slave' con
ifconfig
e assicurati che eth0 e wlan0 NON abbiano indirizzi IP. Adesso fanno parte del ponte. Se lo fanno, assicurati di rimuoverli da tutti i file di configurazione, impostandoli su static 0.0.0.0 o qualcosa del genere.
Se NESSUNO di questi funziona, prova quell'app di bridging debian e, se non funziona, il tuo dongle wireless non supporta la modalità promiscua. (vedi sopra)
Se funziona in qualsiasi momento qui, riavvia e assicurati che funzioni ancora.
Ho alcuni bridge wireless che funzionano su Debian Linux e Openwrt, quindi conosco molto bene questo problema.
Hai perso un comando importante:hai dimenticato di dire al tuo driver wireless di trasmettere frame a 4 indirizzi (a volte impropriamente/storicamente chiamati WDS), che è necessario per il bridging 802.11/wireless. Fallo con il comando "iw dev wlan0 set 4addr on". Usa un'istruzione "pre-up" nel tuo file delle interfacce Debian sul bridge per applicarla prima di aprire il bridge. Tieni presente che la modalità frame a 4 indirizzi richiede il supporto del driver e alcuni vecchi driver o hardware 802.11 scadenti potrebbero non supportarla.
Ho anche il forte sospetto che i tuoi problemi possano essere stati complicati da un bug nel kernel di Linux che riguarda specificamente le interfacce con bridge. Mi sono imbattuto in questo bug da solo e ho dovuto compilare il mio wpa_supplicant dai sorgenti perché la versione in Debian è vecchia e interessata. wpa_supplicant e hostapd condividono una base di codice comune, ma non sono del tutto sicuro che questo abbia influenzato hostapd e wpa_supplicant.
C'è un impegno per aggirare il problema qui:
https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040
Ho l'impressione che sia nella versione 2.5 e so che è nell'attuale sorgente 2.6. L'attuale versione di Debian è la 2.4, che non funziona. Si prega di infastidire il progetto Debian per aggiornare i loro pacchetti wpasupplicant e hostapd.
Ecco una configurazione di esempio per un client bridge wireless che utilizza WPA/WPA2 con un bridge wireless tra le interfacce wlan0 ed eth0, con l'host che ottiene un indirizzo DHCP sull'interfaccia br0 (sostituisci "dhcp" con "manual" per nessun indirizzo IP). Per una situazione in cui vuoi essere l'AP, includi i comandi interface=e bridge=in hostapd.conf e ometti i comandi wpa-* di seguito.
Nel tuo file /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
E assicurati che il tuo wpa_supplicant sia la versione 2.5 o successiva. Non funzionerà con wpa_supplicant 2.4 e le attuali versioni del kernel.
Dovrei anche notare che attualmente c'è un race bug in ifup in cui le interfacce bridge potrebbero non essere visualizzate al momento dell'avvio, ma questo è un altro problema.
Sembra che tu abbia bisogno dell'inoltro ip.
prova cat /proc/sys/net/ipv4/ip_forward
Se è 0
problema:echo 1 > /proc/sys/net/ipv4/ip_forward