Ubuntu 16.10: roteamento baseado em origem: os pacotes não são redirecionados

1

Estou tentando configurar o roteamento baseado na origem em minha máquina ubuntu. Como exemplo mais simples, estou tentando configurar a única interface na minha máquina. Todas as configurações tiradas daqui: link

rota ip

10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15

rtgate da tabela da mostra da rota do ip

default via 10.0.2.2 dev enp0s3
10.0.2.0/24 dev enp0s3  scope link  src 10.0.2.15

regra ip

0:      from all lookup local
32764:  from all to 10.0.2.15 lookup rtgate
32765:  from 10.0.2.15 lookup rtgate
32766:  from all lookup main
32767:  from all lookup default

Mas quando estou tentando sujar 8.8.8.8 eu sempre recebo mensagem 'A rede está inacessível': ping 8.8.8.8

connect: Network is unreachable

ping -I enp0s3 8.8.8.8

ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable

Eu também tentei adicionar o gateway falso / não-existente (10.0.2.16) no global, mas recebi mensagens 'Destination Host Unreachable'. Parece que os pacotes de 10.0.2.15 não são encaminhados para 10.0.2.2 e os pacotes apenas são encaminhados para o gateway padrão. ip route flush cache não ajuda. Alguém tem alguma ideia?

Grande atualização

Ubuntu

Esta manhã eu continuei minha pequena investigação. No começo, eu reconfigurei meu ubuntu-machine: havia outra interface adicionada ao gateway padrão.

root@metalmachine:~# ip route
default via 10.0.4.2 dev enp0s9
10.0.2.0/24 dev enp0s3  proto kernel  scope link  src 10.0.2.15
10.0.4.0/24 dev enp0s9  proto kernel  scope link  src 10.0.4.15

Segmente o mesmo: para configurar o roteamento baseado em origem para enp0s3.

root@metalmachine:~# ip route show table rtgate
default via 10.0.2.2 dev enp0s3

root@metalmachine:~# ip rule
0:      from all lookup local
32765:  from 10.0.2.15 lookup rtgate
32766:  from all lookup main
32767:  from all lookup default

Sim. O mesmo problema ocorreu. Quando estou executando ping -I enp0s3 8.8.8.8 , as respostas ICMP vêm com sucesso de 8.8.8.8 MAS elas vêm através de enp0s9. tcpdump -i enp0s3 -n ainda está silencioso e quando eu estou desligando respostas enp0s9 param de vir.

Debian

Ok, eu tentei configurar o mesmo recurso no Debian 8.7.

root@metalmachine:~# ip route
default via 10.0.3.2 dev eth1
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15
10.0.3.0/24 dev eth1  proto kernel  scope link  src 10.0.3.15

root@metalmachine:~# ip route show table backup
default via 10.0.2.2 dev eth0

root@metalmachine:~# ip rule
0:      from all lookup local
32765:  from 10.0.2.15 lookup backup
32766:  from all lookup main
32767:  from all lookup default

Foi o que consegui com a execução de tcpdump -i eth0 -n & :

root@metalmachine:~# ping -I eth0 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 10.0.2.15 eth0: 56(84) bytes of data.
11:36:34.432372 ARP, Request who-has 8.8.8.8 tell 10.0.2.15, length 28
11:36:35.430668 ARP, Request who-has 8.8.8.8 tell 10.0.2.15, length 28
^C

root@metalmachine:~# arp -an
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
? (8.8.8.8) at <incomplete> on eth0
? (10.0.3.2) at 52:54:00:12:35:02 [ether] on eth1

Bem, parece que o sistema tenta resolver o ARP para 8.8.8.8 e não importa o 8.8.8.8 localizado em rede diferente. E não importa qual proxy-arp esteja desabilitado em todas as interfaces:

root@metalmachine:~# cat /proc/sys/net/ipv4/conf/*/proxy_arp
0
0
0
0
0

Mas quando tentei o ping -I 10.0.2.15 8.8.8.8 :

PING 8.8.8.8 (8.8.8.8) from 10.0.2.15 : 56(84) bytes of data.
11:54:58.434966 IP 10.0.2.15 > 8.8.8.8: ICMP echo request, id 1430, seq 1, length 64
10:54:58.446248 IP 8.8.8.8 > 10.0.2.15: ICMP echo reply, id 1430, seq 1, length 64
64 bytes from 8.8.8.8: icmp_seq=1 ttl=63 time=11.4 ms

Depois de assistir aos contadores da eth0, eu estava convencido de que os pacotes passavam pela eth0. FUNCIONA! Mas há algumas conclusões:

  1. O Ubuntu 16.10 com iputils-s20150815 não encaminha pacotes para a tabela de roteamento especificada por ip rule s, ou estou fazendo errado. ping -I enp0s3 8.8.8.8 envia pacotes pela rota padrão.
  2. ping utility de iputils-s20150815 no Ubuntu 16.10 tem alguns problemas com -I argumento ou estou fazendo errado. Por exemplo: ping -I 10.0.2.15 8.8.8.8 retorna ping: unknown iface 10.0.2.15
  3. O utilitário ping do iputils-s20121221 no Debian 8.7 tenta resolver o ARP para o host da rede diferente ou Estou fazendo errado .

Por favor, alguém poderia me dizer onde estou errado?

    
por user2754098 06.03.2017 / 14:41

0 respostas