Il collegamento WiFi a Ethernet su Ubuntu non funziona


22

Quando eseguivo Windows sono stato in grado di collegare la mia connessione wifi attraverso la connessione Ethernet del mio laptop in modo che una gamma di dispositivi solo Ethernet potesse ripristinare il mio wifi (Raspberry Pi, Xbox ecc. Ecc.). Ora sto provando a fare lo stesso con Ubuntu, ovvero l'installazione sarebbe:

Router wireless ---> Wifi su laptop ---> bridge to Ethernet ---> Dispositivo che necessita di internet collegato alla porta Ethernet

Ora ho cercato di farlo funzionare su Ubuntu usando brctl

Ho usato il comando seguente:

sudo brctl addif br0 eth0 wlan0

E ottieni il seguente errore:

can't add wlan0 to bridge br0: Operation not supported

Spero che qualcuno possa aiutare, poiché mi rifiuto di credere che qualcosa che posso fare in Windows molto facilmente non possa essere fatto in Linux.

Se hai bisogno di ulteriori informazioni, fammelo sapere. Grazie


Molto simile problema gestito in [ askubuntu.com/questions/155041/...
Legionair

Risposte:


10

Questo non può essere fatto. Non è possibile collegare una connessione client WiFi. Se potessi, non avremmo bisogno del WDS, faremmo un ponte.

Il problema è molto semplice: un punto di accesso è vietato dalla specifica WiFi dal trasmettere traffico sulla rete WiFi a meno che qualcosa non autorizzi tale trasmissione. Questo è in gran parte una reliquia dei giorni in cui le reti WiFi erano molto lente e avevano una scarsa sicurezza, se del caso.

Il bridge ha solo una connessione client al punto di accesso. Ciò autorizza solo il punto di accesso a trasmettere il traffico diretto per il bridge. Poiché tutte le macchine connesse al bridge non sono client del punto di accesso, il punto di accesso non ha motivo di inviare traffico associato per loro tramite il collegamento WiFi. Quindi non lo farà.

Sfortunatamente, il WiFi è abbastanza come Ethernet che è facile aspettarsi che si comporti come Ethernet. Ma è abbastanza diverso da morderti.

La configurazione WDS è un'autorizzazione specifica per un punto di accesso per l'invio di traffico non associato a nessuno dei suoi client. Quando entrambe le estremità supportano WDS, includono l'indirizzo dell'endpoint ponte e l'indirizzo della destinazione, autorizzando il punto di accesso a inviare il traffico.

Devi usare qualcosa di diverso dal bridge per farlo. Routing con NAT, ad esempio. Puoi anche utilizzare quattro modalità indirizzo, se entrambe le estremità del collegamento WiFi lo supportano.


3
Puoi risolvere questo problema riscrivendo gli indirizzi mac con ebtables
ccarton il

Ho notato che una persona qui dice che puoi farlo su Ubuntu ... e ho fatto qualcosa di simile anche su Windows .. anche se dici che è impossibile, quindi forse puoi spiegare qual è la differenza tra questo e questo. In Windows quando lo fai youtube.com/watch?v=96Z1_6rX5qU WiFi connesso a Internet. Nessun cavo nel connettore Ethernet .. o cavo di un altro componente nel connettore Ethernet. Quindi selezionando l'adattatore WiFi e l'adattatore Ethernet, li collega, n poi un altro computer può collegare il suo cavo e utilizzare la connessione Internet Il portatile è ancora un client WiFi penso (e non un punto di accesso)
barlop

1
@DavidSchwartz Se una persona ha un laptop senza wireless funzionante e senza switch di rete per collegarlo per l'accesso a Internet, ma un altro laptop ha un accesso wireless a Internet e non c'è una chiavetta USB wireless di riserva. Quindi sembra che l'unica soluzione sia la falsificazione ponte. Se entrambi i laptop disponessero di un adattatore di rete wireless funzionante, entrambi potrebbero connettersi al punto di accesso wireless principale, senza bisogno di punti di accesso aggiuntivi e WDS. Ho usato il bridge fakery quando un laptop non poteva fare il wireless.
barlop,

1
Non corretto. Per cominciare, un WDS è una connessione WiFi, non diversamente dagli altri. In secondo luogo, ci sono questi dispositivi cutie chiamati client-bridge o media-bridge che si collegano tramite un AP e collegano in modo trasparente 3-5 jack cablati, che possono essere hub, ecc. Certo, ci sono probabilmente delle limitazioni su come funzionano e quanti MAC possono fare il bridge PER, ma alla fine ... c'è un modo. Al diavolo, anche Linux ti permetterà di utilizzare la modalità WDS come STA se imposti 4addr come modalità sul dispositivo tramite il comando iw e il driver ti consente di farlo. Puoi fare un ponte ... è appena arrivato ...
Svartalf,

1
@DavidSchwartz: Routing? Sul serio? Ecco un suggerimento. L'applicazione può avere più di 500 nodi nella rete. Riesci a fare in modo che il routing funzioni correttamente in questo modo? "Real WDS"? Posso essere certo che funzionerà con Cisco, Aruba, Ubiquiti e altri? Se è così, allora sì ... in caso contrario ... la premessa è un problema immediato. Ho funzionato piuttosto bene con la follia che sto provando con la modalità WDS-Station ... ma funzionerà con qualcosa di diverso da un dispositivo Linux derivato hostapd o simile?
Svartalf,

3

Ho avuto un problema simile con LXC, ho risolto il problema del bridge nei dispositivi wifi. Innanzitutto è necessario un dispositivo Ethernet di riserva nel computer. Il trucco è creare un percorso dal dispositivo Ethernet al wifi.

Nel file del server, cambia / etc / network / interfaces, scegli una rete inutilizzata per i tuoi host virtuali, ovvero 10.0.0.0. Assegna un IP alla tua interfaccia ethernet di riserva, qui è eth0, collegandolo in questo modo:

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

Una volta fatto, puoi seguire la strada MASQUERADE come ha risposto prima qui Kostyantyn. Questi dovrebbero essere in rc.local o in uno script che devi eseguire all'avvio o prima di avviare i domini virtuali:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

Nel server virtuale configurare gli IP statici in / etc / network / interfaces. Sto usando la rete 10.0.0.0, inizierò a utilizzare da .2, quando crei più host virtuali probabilmente utilizzerai 3 e così via. Se ne hai molti puoi prendere in considerazione l'installazione di un server DHCP per quelli. .1 è il gateway, come configurato in precedenza.

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

Configura anche un server DNS, il mio era il router di rete, in /etc/resolv.conf:

nameserver 192.168.1.1

Spero che sia di aiuto


Questo è un trucco di livello 3 e non è davvero un "ponte": nel momento in cui stai usando iptables, stai instradando.
Svartalf,

0

Penso che ciò di cui hai davvero bisogno non sia un ponte ma neanche:

o

  • MASQUERADE (se la WLAN ha un IP dinamico, ovvero IP cambia)

1) creare forwarding_enable_file.shcon il seguente contenuto:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2) Esegui il file:

sudo ./forwarding_enable_file.sh

3) sul resto dell'host specificare la propria casella Ubuntu come gateway NOTA: se alcune delle scatole eseguono anche Linux, è possibile farlo con questo comando:

sudo ip route add default via ubuntu-ip

dove ubuntu-ip dovrebbe essere sostituito dal tuo indirizzo IP ubuntu-box cioè 192.168.1.10

4) prova a eseguire il ping di un IP, ovvero 8.8.8.8 da altri host:

ping 8.8.8.8

5) controlla le tue impostazioni DNS eseguendo il ping di alcuni domini, ovvero:

ping slivkoed.ru

6) se il passaggio 4) funziona e 5) no, allora hai problemi con le tue impostazioni DNS. in tal caso, eseguire con i privilegi di root:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

Eseguire nuovamente il passaggio 5).

Ulteriori informazioni su resolv.conf sono disponibili qui .


Dipende da cosa ti serve. Se hai bisogno di trasparente (lancetta delle onde), no, non lo vuoi. Sul serio. È necessario il comportamento evidenziato da elementi come il bridge multimediale TEW640-MB ritirato da Trendnet (sessione in modalità STA collegata a 4 porte Ethernet.). Ciò è probabile che si verifichi solo con il funzionamento in modalità WDS (4addr) o con il mascheramento MAC ebtables (che non deve essere confuso con ciò che hai pubblicato), entrambi i quali hanno i loro problemi e problemi.
Svartalf,

-1

È necessario disattivare le interfacce prima di collegarle.

ifconfig eth0 down

ifconfig wlan0 down


1
Ottengo ancora lo stesso errore con entrambe le interfacce disattivate
Zac Powell,

@Zac Powell stai usando Network-Manager? Ho avuto alcune esperienze passate che potrebbero interferire. In tal caso, puoi provare a interrompere il servizio e ripristinarlo di nuovo in seguito
Legionair,

Sì lo sono, ok, quindi dovrei provare a metterli entrambi giù e fermare il gestore della rete, quindi fare il birdge e quindi riportare tutto su?
Zac Powell,

sì, con service network-manager stop, quindi fai la tua cosa, ricominciare conservice network-manager start
Legionair

continua a non funzionare: / tutto viene chiuso ma viene visualizzato lo stesso errore
Zac Powell,

-4
sudo iw dev wlan1 set 4addr on

Vuoi spiegare come questo risolve il problema di OP?
Braiam,

@Braiam La mia risposta spiega praticamente perché questo funzionerebbe se fosse supportato dall'AP.
David Schwartz,

Purtroppo, non funziona con molti AP. Per quanto riguarda il modo in cui POTREBBE risolvere il suo problema se funzionasse correttamente con la maggior parte degli AP, è che fornisce l'AP con l'aggiunta di un MAC aggiuntivo al numero indicato in ciascun frame 802.11 per inoltrare frame per più di un semplice MAC autenticato.
Svartalf,

Da un'altra risposta: serverfault.com/a/554663/280693
jhutar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.