Conecte WiFi e Ethernet simultaneamente

Oct 05 2020

Estou tentando conectar o raspberry a ethernet e wi-fi ao mesmo tempo, mas não funciona.

Informações sobre framboesa:

Modelo : Pi Modelo 3B + V1.3

/etc/dhcpcd.conf :

# A sample configuration for dhcpcd. See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# Most distributions have NTP support.
#option ntp_servers

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate SLAAC address using the Hardware Address of the interface
#slaac hwaddr
# OR generate Stable Private IPv6 Addresses based from the DUID
slaac private

# Example static IP configuration:

interface eth0
static ip_address=10.10.7.201/21
static routers=10.10.0.1
#static domain_name_servers=
#static domain_search=

/ etc / network / interfaces :

#iface default inet dhcp
# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

/etc/wpa_supplicant/wpa_supplicant.conf :

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=it

network={
        ssid="xxxx"
        scan_ssid=1
        proto=RSN
        key_mgmt=WPA-PSK
        psk="xxxx"
        id_str="home"
        pairwise=CCMP TKIP
        group=CCMP TKIP
        priority=5
}

Descrição da rede

Preciso conectar os dois porque:

  • O wi-fi fornece conectividade de rede para ssh e internet (DHCP)
  • A ethernet se conecta à rede local e se comunica com um PLC (controlador lógico programável) (IP estático: 10.10.7.201)

Na verdade, meu laptop está temporariamente conectado a ambas as redes porque o PLC precisa ser programado, então conectei todos ao meu laptop.

Conforme solicitado nos comentários:

O Raspberry está conectado sem fio como uplink do cliente ao roteador de Internet. Não fornece um ponto de acesso. No lado da Ethernet, há um dispositivo com fio conectado ao Raspberry. A sub-rede com fio é local e não tem conexão com a Internet. Eu posso confirmar isso.

  1. Existem mais dispositivos na sub-rede com fio usando um switch?

    No switch estão conectados:

    • Framboesa como 10.10.7.201
    • PLC como 10.10.7.200
    • MeuLaptop como 10.10.7.3
  2. Existem outros dispositivos sem fio conectados ao roteador de Internet?

    Sim, são muitos dispositivos (é a rede da empresa)

  3. Os dispositivos conectados sem fio devem se comunicar com dispositivos conectados com fio?

    Não, o Raspberry é o único dispositivo que deve acessar o dispositivo conectado com fio (PLC). Basicamente, eu tenho um servidor web de frasco Python no raspberry que atua como interface entre o usuário que se conecta à página da web (usando o IP raspberry sem fio) e o PLC (que está na conexão com fio)

  4. ip r resultado:

    default via 10.10.0.1 dev wlan0 proto dhcp src 10.10.4.195 metric 200 
    10.10.0.0/21 dev wlan0 proto dhcp scope link src 10.10.4.195 metric 200
    

Descrição do Problema

O problema é que quando eu conecto o cabo Ethernet, o raspberry está inacessível na rede WiFi e não consegue acessar a internet a partir dele, mas ambos parecem estar conectados ifconfig:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.7.201  netmask 255.255.248.0  broadcast 10.10.7.255
        inet6 fe80::2fc5:49ad:9818:aaa0  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:bf:5a:f8  txqueuelen 1000  (Ethernet)
        RX packets 5364  bytes 388068 (378.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8582  bytes 501093 (489.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 3154  bytes 524871 (512.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3154  bytes 524871 (512.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.4.195  netmask 255.255.248.0  broadcast 10.10.7.255
        inet6 fe80::f7bc:436f:a335:bff9  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:ea:0f:ad  txqueuelen 1000  (Ethernet)
        RX packets 61566  bytes 10678751 (10.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 4374 (4.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Quando eu desconecto o cabo ethernet, o raspberry pode ser acessado na conexão wi-fi e posso conectar a ele usando SSH.

Tentativas

Pesquisei no google como configurar os dois simultaneamente e encontrei este artigo , é muito antigo, mas como você pode ver no comentário deve funcionar.

NOTA :

  • /etc/network/interfacesnão é realmente usado no novo framboesa, portanto, editei o /etc/dhcpcd.conf.
  • /etc/default/ifplugdnão existe, então tentei instalá-lo apt-get install ifplugde cofigurado como na resposta, também adicionei a linha em /etc/rc.local.

Questão

Você tem alguma dica para mim sobre como posso configurar corretamente as duas conexões para funcionar?

Tentei editar o /etc/dhcpcd.confarquivo para definir a métrica:

interface eth0
static ip_address=10.10.7.201/21
metric 300
#static routers=10.10.0.1
#static domain_name_servers=
#static domain_search=

interface wlan0
metric 200

Agora o WiFi está acessível, mas não o cabo Ethernet, talvez eu esteja faltando algum route addcomando para executar?

Respostas

4 Ingo Oct 05 2020 at 10:33

A configuração não deve ser um grande problema porque não há requisitos de roteamento. A sub-rede com fio é isolada da sub-rede sem fio. Portanto, você pode conectar sem fio ao roteador de internet com wpa_supplicant como de costume. As conexões com fio devem funcionar prontamente ao usar apenas endereços IP estáticos e sem resolução de nome. Para ficar mais confortável, você pode habilitar um servidor DHCP na sub-rede com fio e usar o dDNS para a resolução de nomes no domínio DNS .local. Você só precisa garantir que a sub-rede IP na sub-rede com fio seja diferente dos endereços IP na sub-rede sem fio.

Você pode encontrar um exemplo em Como fazer Raspberry Pi 4 como “WIFI” -> adaptador “Ethernet” mas que funciona como um roteador que não precisamos. Basta omitir o roteamento e as coisas de DNS /etc/systemd/network/04-eth0.networkusando este arquivo:

rpi ~# cat > /etc/systemd/network/04-eth0.network <<EOF
[Match]
Name=eth0

[Network]
Address=192.168.4.1/24
LLMNR=no
MulticastDNS=yes
DHCPServer=yes
EOF

Se mDNS (Multicast DNS) for suportado pelos dispositivos, você deve ser capaz de endereçar o RasPi do laptop com ping raspberrypi.locale o PLC do RasPi com, por exemplo ping plc.local. Certifique-se de não habilitar o roteamento / encaminhamento de ip no laptop e no RasPi. Isso pode confundir a rede com loops de conexão.