Fazer a ponte de Wifi para Ethernet no Ubuntu não funciona

22

Ao executar o Windows, consegui conectar minha conexão Wi-Fi através da conexão Ethernet dos meus laptops, de modo que uma variedade de dispositivos somente Ethernet pudessem usar o meu Wi-Fi (Raspberry Pi, Xbox etc.). Agora estou tentando fazer o mesmo no Ubuntu, ou seja, a configuração seria:

Roteador sem fio ---> Wifi no laptop ---> ponte para Ethernet ---> Dispositivo que precisa de Internet conectado à porta Ethernet

Agora eu tenho tentado fazer isso funcionar no Ubuntu usando brctl

Eu usei o comando abaixo:

sudo brctl addif br0 eth0 wlan0

E obtenha o seguinte erro:

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

Espero que alguém possa ajudar, pois me recuso a acreditar que algo que posso fazer no Windows com muita facilidade não pode ser feito no Linux.

Se precisar de mais informações, entre em contato. obrigado

Zac Powell
fonte
Problema muito semelhante tratado em [ askubuntu.com/questions/155041/…
Legionair

Respostas:

10

Isso não pode ser feito. Você não pode conectar uma conexão de cliente WiFi. Se você pudesse, não precisaríamos do WDS, apenas criaríamos uma ponte.

O problema é muito simples - um ponto de acesso é proibido pela especificação WiFi de transmitir tráfego pela rede WiFi, a menos que algo autorize essa transmissão. Isso é em grande parte uma relíquia dos dias em que as redes WiFi eram muito lentas e tinham pouca segurança, se houver.

A ponte possui apenas uma conexão do cliente com o ponto de acesso. Isso autoriza apenas o ponto de acesso a transmitir o tráfego vinculado à ponte. Como nenhuma máquina conectada à ponte não é cliente do ponto de acesso, o ponto de acesso não tem motivos para enviar tráfego vinculado a eles pelo link WiFi. Portanto, não fará isso.

Infelizmente, o WiFi é suficiente como a Ethernet e é fácil esperar que ele aja como a Ethernet. Mas é apenas diferente o suficiente para morder você.

A configuração do WDS é uma autorização específica para um ponto de acesso para enviar tráfego não vinculado a nenhum de seus clientes. Quando ambas as extremidades oferecem suporte ao WDS, elas incluem o endereço do terminal de ponte e o endereço do destino, autorizando o ponto de acesso a enviar o tráfego.

Você precisa usar algo diferente de ponte para fazer isso. Roteamento com NAT, por exemplo. Você também pode usar o modo de quatro endereços, se as duas extremidades do link WiFi o suportarem.

David Schwartz
fonte
3
Você pode resolver este problema através da re-escrever os endereços MAC com ebtables
ccarton
Percebo que uma pessoa aqui diz que você pode no ubuntu..e eu fiz algo parecido no windows também .. embora você diga que é impossível, então talvez você possa explicar qual é a diferença entre isso e isso. No Windows, quando você fizer isso youtube.com/watch?v=96Z1_6rX5qU Wi-Fi conectado à Internet. Nenhum cabo no conector Ethernet .. ou cabo de outro componente no conector Ethernet. Em seguida, selecionando o adaptador Wi-Fi e Ethernet adaptador, ele preenche-los, n, em seguida, outro computador pode conectar seu cabo e usar a conexão à Internet O laptop é ainda um cliente WiFi Eu acho que (e não um ponto de acesso)
barlop
1
@DavidSchwartz Se uma pessoa tem um laptop sem fio sem fio e sem comutador de rede para conectá-lo ao acesso à Internet, mas outro laptop tem acesso sem fio à Internet e não há pendrive USB sem fio sobressalente. Então parece que a única solução é o fingimento de ponte. Se os dois laptops possuírem um adaptador de rede sem fio funcionando, eles poderão apenas se conectar ao ponto de acesso sem fio principal, sem necessidade de pontos de acesso extras e WDS.
barlop
1
Incorreta. Para iniciantes, um WDS é uma conexão WiFi, não muito diferente dos outros. Em segundo lugar, existem esses dispositivos fofos chamados pontes de cliente ou pontes de mídia que se conectam por meio de um AP e conectam de maneira transparente 3-5 jacks com fio, que podem ser hubs, etc. quantos MACs eles conseguem conectar, mas no final ... existe um caminho. Inferno, mesmo o Linux permitirá que você use o modo WDS como STA, se você definir 4addr como um modo no dispositivo através do comando iw e o driver permitir. Você pode fazer a ponte ... só tem ... condições.
Svartalf 20/09
1
@DavidSchwartz: Routing? A sério? Aqui está uma dica. O aplicativo pode ter mais de 500 nós na rede. Você pode fazer o roteamento funcionar normalmente dessa maneira? "WDS real"? Posso ter certeza de que ele funcionará com Cisco, Aruba, Ubiquiti e outros? Se sim, então sim ... se não ... a premissa é um problema fora da caixa. Eu tenho que trabalhar bastante bem com a loucura que estou tentando no modo Estação WDS ... mas será que funcionará com algo diferente de um dispositivo Linux derivado hostapd ou similar?
Svartalf
3

Eu tive um problema semelhante com o LXC, resolvi a questão da ponte em dispositivos wifi. Primeiro, você precisa de um dispositivo Ethernet sobressalente no computador. O truque é criar uma rota do dispositivo ethernet para o wifi.

No arquivo do servidor, altere / etc / network / interfaces, escolha uma rede não utilizada para seus hosts virtuais, ou seja, 10.0.0.0. Atribua um IP à sua interface Ethernet sobressalente, aqui está eth0, fazendo a ponte desta forma:

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

Uma vez feito, você pode seguir o caminho MASQUERADE, conforme respondido por Kostyantyn aqui antes. Esses devem estar em rc.local ou em um script que você deve executar na inicialização ou antes de iniciar os domínios virtuais:

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

No servidor virtual, configure IPs estáticos em / etc / network / interfaces. Estou usando a rede 10.0.0.0, começarei a usar a partir de .2, quando você criar mais hosts virtuais, provavelmente usará 3 e assim por diante. Se você tiver muitos, considere instalar um servidor dhcp para eles. O .1 é o gateway, conforme configurado anteriormente.

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

Configure também um servidor DNS, o meu era o roteador de rede, em /etc/resolv.conf:

nameserver 192.168.1.1

Espero que isto ajude

Francesc Guasch
fonte
Isso é truque da camada 3 e não é realmente "ponte" - no momento em que você usa o iptables, está encaminhando.
Svartalf 21/09
0

Eu acho que o que você realmente precisa não é uma ponte, mas também:

  • SNAT (se a WLAN tiver um IP estático) (consulte esta página )

ou

  • MASQUERADE (se a WLAN tiver IP dinâmico - ou seja, alterações de IP)

1) crie forwarding_enable_file.shcom o seguinte conteúdo:

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

2) Execute o arquivo:

sudo ./forwarding_enable_file.sh

3) no restante do host, especifique sua caixa do Ubuntu como um gateway NOTA: se algumas das caixas também estiverem executando o Linux, você poderá fazê-lo com este comando:

sudo ip route add default via ubuntu-ip

onde o ubuntu-ip deve ser substituído pelo seu endereço IP da caixa do ubuntu, ou seja, 192.168.1.10

4) tente executar ping em algum IP, ou seja, 8.8.8.8 de outros hosts:

ping 8.8.8.8

5) verifique suas configurações de DNS executando ping em algum domínio, ou seja:

ping slivkoed.ru

6) se a etapa 4) funcionar e 5) não, você terá problemas com as configurações de DNS. nesse caso, execute com privilégios de root:

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

Execute a etapa 5) novamente.

Mais informações sobre o resolv.conf podem ser encontradas aqui .

Kostyantyn
fonte
Depende do que você está precisando. Se você precisa de transparente (mão em ondas), não, não quer isso. A sério. Você precisa do comportamento evidenciado por coisas como a ponte de mídia aposentada TEW640-MB da Trendnet (sessão no modo STA conectada a 4 portas Ethernet). É provável que isso ocorra apenas com a operação no modo WDS (4addr) ou com o disfarce de ebtables MAC (que não deve ser confundido com o que você postou) - ambos com suas próprias dores e problemas.
Svartalf 21/09
-1

Você precisa derrubar as interfaces antes de fazer a ponte entre elas.

ifconfig eth0 inativo

ifconfig wlan0 down

Escandalista
fonte
1
Ainda obter o mesmo erro com ambas as interfaces para baixo
Zac Powell
@Zac Powell você está usando o Network-Manager? Eu tive algumas experiências passadas que podem interferir. Nesse caso, você pode tentar interromper o serviço e recuperá-lo novamente depois.
Legionair 20/13
Sim, estou bem, então eu deveria tentar derrubá-los e parar o gerenciador de rede, em seguida, fazer o birdge e depois trazer tudo de volta?
Zac Powell #
sim, com service network-manager stop, em seguida, fazer a sua coisa, começar de novo comservice network-manager start
Legionair
ainda não está funcionando: / tudo está desligado, mas ainda obter o mesmo erro
Zac Powell
-4
sudo iw dev wlan1 set 4addr on
Emilio Navarrete Lineros
fonte
Gostaria de explicar como isso resolve o problema do OP?
Braiam
@ Braiam Minha resposta explica basicamente por que isso funcionaria se fosse suportado pelo AP.
21813 David Schwartz
Infelizmente, ele não funciona com muitos APs. Quanto à maneira como PODE resolver o problema dele, se funcionou corretamente com a maioria dos APs, é que ele oferece a capacidade de adicionar um MAC adicional ao número fornecido em cada quadro 802.11 para retransmitir quadros para mais do que apenas o MAC autenticado.
Svartalf 21/09
De outra resposta: serverfault.com/a/554663/280693
jhutar: