
Estou executando o Arch Linux (em um Raspberry Pi 3) e tentei conectar a Ethernet e o Wi-Fi à mesma rede. route
me mostra o seguinte:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 1024 0 0 eth0
default gateway 0.0.0.0 UG 1024 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
gateway 0.0.0.0 255.255.255.255 UH 1024 0 0 eth0
gateway 0.0.0.0 255.255.255.255 UH 1024 0 0 wlan0
ip addr
me mostra o seguinte:
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.1.103/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 85717sec preferred_lft 85717sec
inet6 fe80::ba27:ebff:fee4:4f60/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether b8:27:YY:YY:YY:YY brd ff:ff:ff:ff:ff:ff
inet 192.168.1.102/24 brd 192.168.1.255 scope global dynamic wlan0
valid_lft 85727sec preferred_lft 85727sec
inet6 fe80::ba27:ebff:feb1:1a35/64 scope link
valid_lft forever preferred_lft forever
Ambas wlan0
as eth0
interfaces conseguiram obter um endereço IP do roteador.
Mas acontece que apenas uma dessas interfaces funciona. A outra interface não pode receber ping e não pode ser conectada. Normalmente é a Ethernet que funciona, mas às vezes é o Wi-Fi.
O que está acontecendo? O que posso fazer para que isso funcione?
Responder1
Como você descobriu, do ponto de vista do roteamento, embora seja possível, não é ideal ter endereços da mesma rede em interfaces diferentes.
O roteamento espera uma rede diferente por interface e, em última análise, uma delas terá precedência sobre a outra no roteamento, uma vez que se sobrepõem.
A solução recomendada para ter mais de uma interface conectada à mesma rede é agregá-las em uma interface bridge.
A interface da ponte "possuirá" o endereço IP, e as interfaces reais reais serão agrupadas como uma entidade virtual única em br0
.
allow-hotplug eth0
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
Debian Linux: Configure interfaces de rede como uma ponte/switch de rede
Responder2
Isto é mais um adendo do que uma solução completa. [Já que não tenho “pontos de reputação” suficientes para comentar.]
Primeiro você precisa fazer com que ambas as interfaces funcionem de forma independente. Então, em vez de fazer a ponte, você também pode balancear a carga das conexões de saída em ambas as interfaces.
https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html
Comecei com isso, dois dispositivos com rota padrão para internet configurada pelo gerenciador de rede:
❯ ip route
default via 192.168.0.1 dev eno1 proto dhcp metric 100
default via 192.168.0.1 dev wlp4s0 proto dhcp metric 600
169.254.0.0/16 dev wlp4s0 scope link metric 1000
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.246 metric 100
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.213 metric 600
Então usei o comando descrito aqui em balanceamento de carga:
https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html
❯ P1=192.168.0.1
❯ P2=192.168.0.1
❯ IF1=eno1
❯ IF2=wlp4s0
❯ ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
nexthop via $P2 dev $IF2 weight 1
Voála! Eu recebo conexões através de ambos os dispositivos.
❯ ip route
default
nexthop via 192.168.0.1 dev eno1 weight 1
nexthop via 192.168.0.1 dev wlp4s0 weight 1
default via 192.168.0.1 dev eno1 proto dhcp metric 100
default via 192.168.0.1 dev wlp4s0 proto dhcp metric 600
169.254.0.0/16 dev wlp4s0 scope link metric 1000
192.168.0.0/24 dev eno1 proto kernel scope link src 192.168.0.246 metric 100
192.168.0.0/24 dev wlp4s0 proto kernel scope link src 192.168.0.213 metric 600
Isso pode dificultar a depuração se eu tiver problemas de conexão;)
E ainda não sei como persistir a configuração durante as reinicializações, especialmente em combinação com o gerenciador de rede.