Por que a tabela principal está envolvida, já que configurei o roteamento para usar uma tabela de roteamento personalizada?

Por que a tabela principal está envolvida, já que configurei o roteamento para usar uma tabela de roteamento personalizada?

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é outra interface Ethernet virtual, 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

Quero usar roteamento baseado em políticas neste cenário; em particular, quero usar uma tabela de roteamento personalizada quando a interface de entrada de pacotes de rede for vethYou a ppp0interface.

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 da política 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 esta configuração, se eu estiver no namespace e executar ping em 10.0.0.5, não recebo respostas (nem a resposta ARP).
Os pacotes de solicitação chegam à interface vethY (vi isso usando o wireshark), mas nenhuma resposta é gerada.
Se meu cache arp estiver vazio, quando uma solicitação arp for enviada, nenhuma resposta arp será enviada de volta.

Em vez disso, se eu adicionar a regra
10.0.0.0/24 dev vethY scope link
também na tabela principal, todos os pacotes fluirão da maneira correta.

Por que não recebo respostas se não adiciono esta regra na tabela principal?
Por que a tabela principal está envolvida, já que configurei o roteamento para usar T1 para todos os pacotes vindos de vethY ou ppp0?

informação relacionada