Se houver 2 NICs na mesma máquina, um cliente TCP em uma NIC pode se conectar a um servidor TCP na outra NIC?

1

Eu uso o TUN / TAP para criar um tun NIC tun0 com IP 10.10.10.2, e eu tenho um NIC% realeth0 com IP 202.112.34.49

Em seguida, executo um cliente TCP que vincula seu soquete a 202.112.34.49 e uma ligação de servidor TCP 10.10.10.2. mas não consigo estabelecer uma conexão tcp entre eles.

Assim, um cliente TCP em uma NIC pode se conectar a um servidor tcp na outra NIC?

    
por misteryes 17.05.2013 / 19:12

2 respostas

2

Pacotes para endereços locais sempre serão executados na interface lo ; eles nunca deixarão a máquina. (Pacotes para endereços locais que chegam em interfaces não lo são considerados marcianos .)

Em outras palavras, seus pacotes devem ficar presos na interface lo em algum lugar, possivelmente devido a um firewall. Verifique sua iptables-save output e faça um tcpdump na interface lo para esses pacotes para depurar este problema.

    
por 17.05.2013 / 20:58
2

Nem o cliente TCP nem o servidor TCP estão "ligados" a nenhum NIC. Interfaces individuais são consideradas nas camadas 1 e 2, enquanto o TCP opera na camada 4. Exceto para opções de soquete muito especiais, como SO_BINDTODEVICE , os pontos de extremidade TCP não estão conectados a nenhuma interface de rede.

Seu servidor e cliente TCP estão ligados a diferentes endereços IP locais. Conectar entre eles deve funcionar bem.

    
por 17.05.2013 / 20:59