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

3

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?

    
por ica 10.04.2017 / 21:34

0 respostas