É possível ter Wi-Fi e Ethernet conectados à mesma rede?

É possível ter Wi-Fi e Ethernet conectados à mesma rede?

Estou executando o Arch Linux (em um Raspberry Pi 3) e tentei conectar a Ethernet e o Wi-Fi à mesma rede. routeme 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 addrme 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 wlan0as eth0interfaces 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.

informação relacionada