Ping uma interface do outro

2

Eu tenho um computador (rodando Linux) com 2 interfaces eth0 e eth1.
eth0 com endereço 10.0.0.100/24
eth1 com endereço 192.168.1.100/24
Eles estão conectados a duas redes diferentes (10.0.0.0/24 e 192.168.1.0/24), essas redes estão conectadas com um roteador. Outros computadores em 10.0.0.0 podem fazer ping em um computador em 192.168.1.0.

Mas se eu, neste computador, tentar

ping -I eth0 192.168.1.100

Eu não recebo nenhuma resposta. Se eu ouvir na eth1, recebo o pedido icmp de 10.0.0.100, mas ele não envia nenhuma resposta.

Eu tentei definir algumas rotas estáticas, mas não fiz nenhuma diferença. Eu também li no kernel rp_filter e mudei para 2 (e 0 e 1), mas também não fiz diferença.

Alguém sabe por que e como resolver isso?

A única razão pela qual eu queria fazer isso era medir a performance entre as duas redes usando um único computador.

    
por rdrmntn 19.02.2012 / 15:15

3 respostas

7

A solução mais simples é desabilitar a filtragem de caminho inverso. Por padrão, o linux filtra os pacotes que entram em uma interface que ele acha que deveria ter entrado em uma interface diferente (porque o pacote corresponde à sub-rede da outra interface).

Para fazer isso

echo 'net.ipv4.conf.eth0.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.eth1.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.lo.rp_filter = 0' >> /etc/sysctl.conf
sysctl -p

Isso adiciona a configuração ao arquivo de configuração sysctl e, em seguida, recarrega a configuração. Você também pode desativar temporariamente a configuração fazendo echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter .

    
por 19.02.2012 / 16:27
1

Você provavelmente precisará configurar várias rotas padrão para ambas as interfaces com o iproute2, de modo que os pacotes vindos de uma interace sejam respondidos na mesma interface

    
por 19.02.2012 / 15:33
0

Resposta de Patrick

To do this

echo 'net.ipv4.conf.eth0.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.eth1.rp_filter = 0' >> /etc/sysctl.conf
echo 'net.ipv4.conf.lo.rp_filter = 0' >> /etc/sysctl.conf
sysctl -p

não funcionou para mim no Ubuntu 16.04.

Isso funcionou:

sysctl -w net.ipv4.conf.all.rp_filter=0
    
por 20.10.2016 / 16:21