AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 486312
Accepted
h22
h22
Asked: 2018-12-06 23:52:47 +0800 CST2018-12-06 23:52:47 +0800 CST 2018-12-06 23:52:47 +0800 CST

Por que duas placas de rede não podem funcionar se configuradas para a mesma rede e posso corrigir isso?

  • 772

Preciso conectar os dois dispositivos robóticos ao meu computador e, para isso, gostaria de usar as duas placas de rede conectadas a essas diferentes peças de hardware. Ambos os dispositivos usaram a mesma rede (endereços IP 10.0.0.70 e 10.0.0.21, máscara de rede 255.255.255.0 em ambos os casos).

Descobri que se eu configurar e colocar a rede de qualquer placa única, não funciona sem problemas: posso pingar o dispositivo robótico e tenho todas as outras conectividades com ele. No entanto, assim que coloco o segundo cartão, apenas um dos dois está funcionando. Tentei dar ao computador principal endereços IP diferentes, tentei dar o mesmo, não faz diferença. Tentei especificar o endereço IP do computador host como gateway, diferente para cada placa, o mesmo, sem diferença alguma. Mesmo o ping não funciona em um dos cartões quando ambos estão ativos, e mesmo se eu especificar ao pingar qual interface usar.

Meu kernel é 4.15.0-39-generic #42~16.04.1-Ubuntu SMP qua 24 de outubro 17:09:54 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux.

Ambas as placas de rede podem funcionar juntas se eu as atribuir a redes diferentes. No entanto, seria preferível não alterar as configurações de rede na lateral dos dispositivos robóticos. Não preciso rotear pacotes entre essas duas placas.

Aqui está a configuração de trabalho que recebi:

enp3s0    Link encap:Ethernet  HWaddr 18:d6:c7:00:d9:3e  
          inet addr:10.0.1.30  Bcast:10.0.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:16929681 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56504 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1219898415 (1.2 GB)  TX bytes:5267812 (5.2 MB)

enp6s0    Link encap:Ethernet  HWaddr 18:d6:c7:01:69:35  
          inet addr:10.0.0.22  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::1ad6:c7ff:fe01:6935/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:52316 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16935487 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:4325056 (4.3 MB)  TX bytes:1220948325 (1.2 GB)

Ele para de funcionar assim que eu mudo o IP do primeiro dispositivo para 10.0.0.30 (e o endereço de broadcast muda para 10.0.0.255).

Acabei de tentar na distribuição ao vivo do Kali Linux, mesmo lá não funciona. Sob Kali Linux

ifconfig eth0 10.0.0.21 netmask 255.255.255.0 up
ifconfig eth1 10.0.0.70 netmask 255.255.255.0 up

Novamente, eu esperaria que pelo menos ping -eu deveria funcionar, mas não, para pingar qualquer um, outro deve estar inativo. Como um switch simples pode ter várias portas físicas conectadas à mesma rede e um computador grande não?

network-interface
  • 3 3 respostas
  • 729 Views

3 respostas

  • Voted
  1. telcoM
    2018-12-07T04:48:04+08:002018-12-07T04:48:04+08:00

    Por padrão, o driver de protocolo IP do Linux usa uma otimização que tem o nome técnico de "modelo de sistema final fraco" ou "modelo de host fraco". Veja esta pergunta para mais detalhes.

    O que se resume é que, quando você configura duas NICs com combinações de IP/máscara de rede que pertencem ao mesmo bloco de espaço de endereço IP, o código responsável pelo roteamento de endereços IP de saída assumirá que significa que ambas as NICs estão conectadas ao mesmo segmento de rede física e, portanto, qualquer um deles pode ser usado para conversar com qualquer host que tenha endereço IP nesse bloco. E então ele apenas usa a interface que está listada primeiro na tabela de roteamento para todo o tráfego de saída para esse segmento de rede. Ele não tem o conceito de várias redes físicas distintas usando cópias do mesmo espaço de endereço IP.

    Se o seu sistema tiver o filtro de caminho reverso ( /proc/sys/net/ipv4/conf/*/rp_filter) ativado, ele poderá impedir que você execute ping em um dos robôs mesmo se você especificar a interface de rede (digamos eth1): quando a resposta chegar por meio de eth1, o filtro de caminho reverso verá que o normal o roteamento para esse IP de origem passaria eth0e, portanto, esse pacote de entrada eth1deve ser falso. Você pode ver se isso está acontecendo se habilitar a configuração log_martians :

    for i in /proc/sys/net/ipv4/conf/*/log_martians; do
        echo 1 > $i
    done
    

    Em seguida, tente executar ping em seus robôs e verifique o final da dmesgsaída: você poderá ver mensagens sobre pacotes descartados.

    Sua situação exigiria que o roteamento levasse em consideração o endereço IP de origem ao decidir qual NIC usar para pacotes de saída e, portanto, se comportasse de acordo com o que é chamado de "modelo de sistema final forte" ou "modelo de host forte". Bem, o Linux pode fazer isso usando a funcionalidade de "roteamento avançado", mas definitivamente não é o padrão e é bastante complicado de configurar. Veja minha resposta na pergunta acima mencionada para uma receita de configuração, se você realmente quiser fazê-lo.

    No entanto, como os endereços IP dos robôs não se sobrepõem, a solução mais simples em termos de configuração de software seria obter um pequeno switch de rede barato (ou mesmo um hub) e conectar os dois robôs e um cabo de rede do computador nele.

    Ou se você deseja simplicidade em termos de quantidade mínima de hardware, basta configurar os robôs para usar diferentes segmentos de IP se quiser conectá-los diretamente a várias NICs no mesmo computador.

    • 3
  2. Best Answer
    dirkt
    2018-12-07T07:37:44+08:002018-12-07T07:37:44+08:00

    Como os dispositivos do robô possuem um IP diferente, a maneira mais simples seria criar uma ponte Linux com as duas interfaces ethernet como portas. Algo na linha de

    ip link add name br0 type bridge
    ip link set enp3s0 master br0
    ip link set enp6s0 master br0
    

    Em seguida, defina um único endereço IP na br0interface voltada internamente:

    ip addr add 10.0.0.1/24 dev br0
    

    e você deve estar pronto para ir, sem um interruptor pendurado na cauda da caixa, mas tudo ainda na mesma rede.

    E por favor, por favor , não use o Kali Linux para essas coisas. Leia isto e faça um favor a si mesmo e mude para alguma distro (baseada em Debian, já que Kali também é baseada em Debian) destinada ao trabalho diário. Você terá muito menos problemas. E todas as ferramentas brilhantes que Kali tem também podem ser instaladas.

    • 2
  3. dave_thompson_085
    2018-12-07T10:24:57+08:002018-12-07T10:24:57+08:00

    Para 21 e 70, você pode usar duas sub-redes não sobrepostas 10.0.0.0/26 e 10.0.0.64/26 (/26 = máscara 255.255.255.192). Supondo que nenhuma outra interface inclua 10.0.0.0/25.

    • 1

relate perguntas

  • Como falar diretamente com a câmera IP através da Ethernet (sem switch, hub, roteadores...). Diferentes sub-redes na câmera e na porta Ethernet

  • Combine qualquer interface ethernet com systemd.networkd

  • Obtendo interfaces inesperadas no CentOS 7

  • Para superar as diferenças no formato do ifconfig Ubuntu16.04 e Ubuntu17.01

  • Acessar VM via IP estático (NAT?)

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve