Usando 2 adaptadores ethernet em uma rede local, a resposta de ping não está aparecendo

0

Eu tenho um laptop rodando com o Ubuntu 15.10. Aqui há um adaptador de rede integrado ao qual eu adicionei outro via USB. Agora tenho duas interfaces de rede que mostram quando eu digito ifconfig. Em seguida, configurei os dois com um IP estático: eno0 - > 192.168.0.21 (nic onboard) eno1 - > 192.168.0.22 (USB-nic)

Ambos os adaptadores são diretamente para um PC de destino diferente com um cabo Ethernet: 192.168.0.21 - > 192.168.0.1 (PC de destino 1) 192.168.0.22 - > 192.168.0.2 (PC de destino 2)

Em seguida, tenho um script Python para enviar pacotes UDP do laptop para o computador de destino:

import socket
import time
#create socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind("192.168.0.21", 2000)
sock.sendto("test", ("192.168.0.1", 2000))

Isso funciona se apenas um adaptador estiver conectado. Quando ambos os adaptadores estiverem conectados, isso funcionará somente para a interface conectada primeiro. Então eu tentei enviar um ping através da interface não está funcionando. Vamos dizer que a interface eno0 está funcionando e pode enviar pacotes UDP com sucesso através do script Python, então isso não funcionará:

ping -I eno1 192.168.0.2

Ele mostra que os pacotes saem do pc, e via Wireshark eu posso vê-los deixando o nic, posso até ver o destino do PC enviando uma resposta mas no termnial ele não mostra e ao abortar com ctrl + c eu vejo que 5 pacotes foram enviados e todos eles se perderam. Ping via eno0 funciona perfeitamente bem para o pc de destino.

Como corrijo isso?

    
por Brilsmurfffje 14.01.2016 / 14:09

1 resposta

0

Eu acho que funciona como deveria. Eu acredito que você tenha problemas com a tabela de roteamento.

Quando você conecta o primeiro adaptador, o roteamento padrão é configurado por meio desse adaptador. Quando você conecta outro, o roteamento padrão já está configurado para o primeiro adaptador. O segundo adaptador não funciona porque não há roteamento que possa usá-lo. Tente digitar /sbin/route de /sbin/route -n . Você verá como os pacotes são roteados.

Eu adicionaria rotas para suas duas conexões, porque se eu entendi corretamente, você só deseja enviar seus pacotes UDP por meio dessas conexões. E quanto ao outro tráfego? Tente assim:

/sbin/route add -net 192.168.0.1 netmask 255.255.255.255 dev eno0
/sbin/route add -net 192.168.0.2 netmask 255.255.255.255 dev eno1

Dessa forma, você especifica que o tráfego para 192.168.0.1 deve passar por eno0 e o tráfego para 192.168.0.2 via eno2. Se você só precisa deles para conexões, deve funcionar. No entanto, se você tiver outra conexão e quiser que ela funcione também. Você precisaria ter certeza de que outras rotas estão corretas também.

Eu recomendaria usar intervalos de endereços diferentes para duas conexões. Dessa forma, você não precisa alterar as tabelas de roteamento manualmente:

eno0: 192.168.0.21, PC1: 192.168.0.1
eno1: 192.168.1.22, PC2: 192.168.1.2
netmask: 255.255.255.0 for all connections
default gateway is not important in this case, because pairs are on the same network range
    
por nobody 14.01.2016 / 16:46