
No Arch Linux, gostaria que a eth0 (conectada ao roteador em ponte) compartilhasse a conexão recebida do wlan0. Li tutoriais, mas não sou experiente em comandos como outros usuários e não entendo completamente.
Responder1
ATUALIZAR
Não é possível fazer a ponte entre interfaces sem fio (modo cliente também conhecido como estação) e com fiode acordo com este tópico no linux-ath5k-devel.
Configurar NAT
Em vez disso, deve-se configurar o NAT:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Atribuindo um IP
Então você deve atribuir endereços IP a si mesmo:
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
Instale o daemon dhcp
Instale um servidor dhcp e adicione o seguinte texto ao seu arquivo de configuração (em /etc/dhcpd.conf ou algo semelhante)
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.120;
option routers 10.0.0.1;
option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}
Inicie o dhcpd
Então inicie /etc/init.d/dhcpd start
E é isso!
Leia abaixo apenas se você estiver interessado na configuração de ponte que não funciona
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
Primeiro você cria uma interface bridge eu escolho um nome arbitráriominha ponteem seguida, adicione interfaces a ele.
Você deve solicitar um novo endereço IP (isso será necessário apenas se você quiser obter um IP válido para o próprio dispositivo de ponte):
dhclient -d mybridge
Responder2
Paraponte wi-fiinterface você pode usar iw
a ferramenta paraativar 4addrda mesma maneira:
# iw dev <wifiInterface> set 4addr on
ou seja:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
Agora deve funcionar. Você pode mostrar pontes usando:
# brctl show
Responder3
Ponte wlan e 4addr:
Fazer uma ponte entre wlan0 é uma dor. Normalmente você não pode adicioná-lo a uma interface de ponte (brctl retorna "Operação não permitida"), e usar o filtro "em ponte" do VirtualBox resulta em uma grande confusão de conflitos ARP e DHCP. A causa disso é que os quadros 802.11 contêm apenas três endereços por padrão: os endereços MAC de ambos os dispositivos sem fio (laptop e AP) e do destinatário final (como na Ethernet). Sempre se assume que existe apenas um originador possível.
O 802.11 pode transportar o quarto endereço MAC do originador, e este é usado no modo WDS pelos repetidores. Este recurso também pode ser habilitado no Linux, usando iw, e habilitar este modo permitirá que wlan0 seja usado em interfaces de ponte, bem como com redes em ponte do VirtualBox:
iw dev wlan0 set 4addr on
No entanto, com 4addr ativado, você provavelmente será completamente ignorado pelo AP: a associação é bem-sucedida, mas todos os quadros de dados desaparecem no éter. Isso pode ser por motivos de segurança (porque é muito difícil falsificar o endereço MAC de origem. Sim.) No meu roteador (executando OpenRG), é necessário ativar o modo "WDS" para a interface AP sem fio, adicionar um dispositivo WDS restrito ao meu endereço MAC do laptop e adicione-o à ponte LAN. Pacotes 4addr agora funcionam.
Porém, há outro problema com isso – o roteador agora rejeita pacotes de três endereços do laptop, o que pode ser bastante inconveniente (ter que alternar 4addr toda vez que a rede WLAN é alterada). A solução alternativa é adicionar, no laptop, uma segunda interface wireless vinculada ao mesmo dispositivo, mas com um endereço MAC diferente. Primeiro desfaça a configuração anterior:
iw dev wlan0 set 4addr off
Em seguida, adicione uma segunda interface – o nome foi escolhido arbitrariamente – com um endereço MAC diferente:
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up
Aqui deve corresponder ao endereço do dispositivo WDS configurado no roteador; fora isso, pode ser qualquer endereço MAC válido. O MAC original do wlan0 permanece para uso "normal".
É possível usar wlan0 e wds.wlan0 ao mesmo tempo – embora eu só tenha testado a associação ao mesmo AP duas vezes, e não a APs diferentes. Acho que eles precisariam estar pelo menos no mesmo canal.
Algumas pessoas perguntaram por que usar isso quando o VirtualBox pode conectar o WiFi "muito bem". A resposta é que o VirtualBox não envia os endereços MAC das máquinas virtuais; em vez disso, ele também executa NAT na camada MAC. – 22/08/2014
Ponte wlan direta
Sob certas circunstâncias, você também pode usar wlan_kabel. Ele usa soquetes de pacotes para conectar diretamente dispositivos wlan* com dispositivos Ethernet. No entanto, você só pode conectar um único MAC por vez com wlan_kabel. Não tem a desvantagem de ser barrado por pontos de acesso, pois apenas o MAC original do dispositivo wlan é utilizado. No seu caso, isso significaria que wlan0 só poderia ser usado por uma VM e nem mesmo pelo host. Você pode terwlan_kabel aqui. Isto é semelhante aomacvlanssolução.
Fazendo uma ponte com ipvlan
IP Vlan não tem a limitação de uma ponte, ela pode ser usada para conectar uma rede detalhes sobre como usá-lapode ser encontrado aqui
Alternativa de máscaras
O roteamento Linux pode ser usado com iptables-masquerade e ip_forward para obter uma ponte, mas como mencionado, isso requer a ativação do ip_forward e fará com que o Linux atue como um roteador. Isso precisa ser configurado com cuidado, pois pode apresentar alguma preocupação de segurança.
# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24 -j MASQUERADE
A interface br0 terá então acesso à rede wlan0
Importante e relacionado
Além disso, e muito importante, você não deve usar comandos obsoletos e obsoletos comoifconfig, brctl, e assim por diante. O pacote iproute2 contém comandos para tudo isso, incluindo a configuração de interfaces virtuais (algo para o qual tivemos que usar o openvpn) e a criação de pontes. Se você não sabe como configurar uma bridge com ip, vamos lá
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0
ip addr add 10.173.10.1/24 dev br0
ip link set br0 up
Com este conjunto de comandos, criamos uma interface virtual chamada tap0, depois uma ponte chamada br0, depois escravizamos eth0 e tap0 à ponte, à qual atribuímos um endereço IP 10.173.10.1, e depois trazemos tudo à tona. As três instâncias separadas de ativação das interfaces (para tap0, eth0 e br0) são necessárias.
O truque para fazer isso funcionar é usar proxy.arp, que permite que seu PC (não seu contêiner VM/Linux/namespace de rede) responda a consultas ARP em seu lugar.
Em outras palavras, ao usar o encaminhamento IPv4 entre sua interface de hardware e sua interface virtual, você pensa que pode conectar sua VM/LXC/NNS à sua LAN como se fosse uma interface física, mas isso não é verdade: você está esquecendo absolutamente tráfego ARP fundamental, que é o que realmente permite que a LAN opere. Então, o problema é: se eu encaminhar corretamente o tráfego IPv4, como posso encaminhar também o tráfego ARP, para que meu VM/LXC/NNS funcione? O truque é usar proxy-arp.
A resposta completa para isso está emBlog de Bohdi Zazen, com o título revelador: Placas wireless Bridge. Ele usa um pacote obsoleto, uml-utilities, para criar uma interface virtual por meio do comando tunctl: este é o único comando para o qual ele usa uml-utilities, para que você possa negligenciar com segurança o download do pacote e usar o comando I escrevi acima para criar uma interface tap ou tun, como você quiser, basta modificar o comando de acordo. em seguida, crie um par veth para seu LXC e agora crie uma ponte entre tap0 e veth0. Essa ponte, chamada br0, é o que você deve usar como proxy-arp, em vez da interface tap0 simples descrita por Bohdi Zazen.
Fontes:askubuntu.com,nullroute.eu.org,firejail.wordpress.com,superusuário.com
Responder4
4addr conforme descrito em outras respostas é certamente a melhor maneira quando suportado pelo adaptador/driver, mas nem todos o fazem. O NAT pode funcionar para algumas coisas, mas obter comunicação adequada nos dois sentidos na LAN se tornará problemático (por exemplo, conectar uma impressora ou acessar outros dispositivos IoT do outro lado do NAT). Qualquer coisa que dependa de transmissão/multicast (por exemplo, descoberta automática, bonjour) falhará no NAT.
A alternativa é usar um proxy ARP (parprouted), conforme descrito emhttps://wiki.debian.org/BridgeNetworkConnectionsProxyArp. Eu configurei isso em um Raspberry Pi para uma impressora e funciona perfeitamente (adicionei um sono de 10 segundos nos post-up
comandos para permitir que ele obtenha um endereço IP primeiro, pode ter a ver com a lentidão do meu antigo RPi...)