Eu tenho a seguinte situação:
- - - - - - -
| namespace |-------o o------
- - - - - - - vethY ppp0
vethX
onde:
ppp0
é uma interface PPP e seu endereço IP é 192.168.100.169/24 vethX
é uma interface ethernet virtual dentro do namespace e seu endereço IP é 10.0.0.3/24 vethY
é uma outra interface virtual de ethernet, seu endereço IP é 10.0.0.5/24 e também é o gateway padrão para o namespace Na verdade, a tabela de roteamento no namespace é a seguinte:
$ sudo ip netns exec my_namespace ip route
default via 10.0.0.5 dev vethX
10.0.0.0/24 dev vethX proto kernel scope link src 10.0.0.3
Eu quero usar o roteamento baseado em diretivas neste cenário; em particular, desejo usar uma tabela de roteamento personalizada quando a interface de entrada dos pacotes de rede for a interface vethY
ou ppp0
.
Eu criei a tabela de roteamento personalizada com o nome ' T1 ' adicionando a entrada "T1" no arquivo /etc/iproute2/rt_tables
.
Em seguida, adicionei a regra de roteamento de política que informará ao sistema quando usar essa nova tabela de roteamento.
Então agora as regras de roteamento de políticas são:
$ ip rule
0: from all lookup local
32764: from all iif ppp0 lookup T1
32765: from all iif vethY lookup T1
32766: from all lookup main
32767: form all lookup default
Então adicionei as seguintes regras à minha tabela personalizada
$ ip route show table T1
default via 192.168.100.169 dev ppp0
10.0.0.0/24 dev vethY scope link
192.168.100.180 dev ppp0 scope link
A última linha mostra qual é o outro ponto final do link ponto-a-ponto. Além disso, a tabela de roteamento principal está vazia.
Com essa configuração, se eu estiver no namespace e fizer ping em 10.0.0.5, não receberei respostas (nem a resposta ARP).
Os pacotes de requisição alcançam a interface vethY (já vi isso usando wireshark), mas nenhuma resposta é gerada.
Se meu cache de arp estiver vazio, quando uma requisição arp for enviada, nenhuma resposta arp será enviada de volta.
Em vez disso, se eu adicionar a regra em 10.0.0.0/24 dev vethY scope link
também na tabela principal, todos os pacotes fluem da maneira correta.
Por que não recebo respostas se não adicionar esta regra à tabela principal?
Por que a tabela principal está envolvida, desde que eu configurei o roteamento para usar T1 para todos os pacotes vindos de vethY ou ppp0?
Tags networking ip routing