Eu tenho a seguinte situação no meu host:
veth5
10.0.0.3
o
|
----------------- ------------ ----------------- eth0
| veth1 o--| ---- | br0 |----|--o o--|----o o------o------ internet
| 10.0.0.2 | ------------ | veth3 veth6 | veth7 ppp0
| | | | 192.168.1.2 192.168.100.169
| client | | helper |
----------------- -----------------
A configuração de roteamento foi feita usando roteamento baseado em política. De acordo com isso, um pacote enviado do host para a Internet (por exemplo, usando o ping) entra na minha rede através do veth5 e entra no namespace helper . A partir daqui, ele é encaminhado para veth7, depois para ppp0 e chega à Internet.
A saída do comando ip rule
é:
0: from all lookup local
2997: from 192.168.1.2 lookup T2
2998: from 192.168.100.169 lookup T2
2999: from all iif lo lookup T3
3000: from all iif veth7 lookup T1
3001: from all iif ppp0 lookup T1
4000: from all lookup T4
32766: from all lookup main
32767: from all lookup default
Entradas tabela T1 :
default dev ppp0 scope link
10.0.0.0.0/24 via 192.168.1.1 dev veth7
192.168.1.0/24 dev veth7 scope link
192.168.100.180 dev ppp0 scope link
Entradas tabela T2 :
default dev ppp0 scope link
10.0.0.0.0/24 via 192.168.1.1 dev veth7
192.168.1.0/24 dev veth7 scope link
192.168.100.180 dev ppp0 scope link
Entradas tabela T3 :
default via 10.0.0.1 dev veth5
10.0.0.0/24 dev veth5 scope link
Entradas Tabela T4 :
broadcast 10.0.0.0 dev veth5 proto kernel scope link src 10.0.0.3
local 10.0.0.3 dev veth5 proto kernel scope host src 10.0.0.3
broadcast 10.0.0.255 dev veth5 proto kernel scope link src 10.0.0.3
Entradas tabela local :
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev veth7 proto kernel scope link src 192.168.1.2
local 192.168.1.2 dev veth7 proto kernel scope host src 192.168.1.2
broadcast 192.168.1.255 dev veth7 proto kernel scope link src 192.168.1.2
broadcast 192.168.100.0 dev ppp0 proto kernel scope link src 192.168.100.169
local 192.168.100.169 dev ppp0 proto kernel scope host src 192.168.100.169
A tabela principal e a tabela padrão estão vazias.
Se eu fizer ping de 8.8.8.8 do host, receberei uma resposta, mas se eu fizer ping, por exemplo, www.google.com, a resposta do DNS chegará a ppp0, mas não será encaminhada para veth7
.
Eu tenho o mesmo problema quando envio pacotes TCP: o pacote SYN-ACK de um servidor atinge a interface ppp0, mas não é encaminhado para a interface veth7 de acordo com as regras de roteamento.
Eu acho que esse problema está de alguma forma relacionado à camada 4 dos pacotes, mas não consigo descobrir como.
No entanto, se eu executar o comando ping wwww.google.com
do cliente namespece , recebo de volta a resposta.
Estou usando o Ubuntu 14.04.1 com uma versão do kernel 4.4.0-96-genérica.
Alguém pode me ajudar? Qualquer sugestão / ajuda é mais que bem-vinda.