Почему задействована основная таблица, если я настроил маршрутизацию на использование пользовательской таблицы маршрутизации?

Почему задействована основная таблица, если я настроил маршрутизацию на использование пользовательской таблицы маршрутизации?

У меня следующая ситуация:

- - - - - - -
| namespace |-------o      o------
- - - - - - -     vethY   ppp0
          vethX

где:

  • ppp0это интерфейс PPP и его IP-адрес 192.168.100.169/24
  • vethXвиртуальный интерфейс Ethernet внутри пространства имен, его IP-адрес — 10.0.0.3/24
  • vethY— это еще один виртуальный интерфейс Ethernet, его IP-адрес — 10.0.0.5/24, и он также является шлюзом по умолчанию для пространства имен.

Фактически таблица маршрутизации в пространстве имен выглядит следующим образом:

$ 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

В этом сценарии я хочу использовать маршрутизацию на основе политик; в частности, я хочу использовать настраиваемую таблицу маршрутизации, когда входящим интерфейсом сетевых пакетов является vethYили ppp0интерфейс.

Я создал пользовательскую таблицу маршрутизации с именем 'Т1' добавление записи "T1" в файл /etc/iproute2/rt_tables.
Затем я добавил правило маршрутизации политики, которое сообщит системе, когда использовать эту новую таблицу маршрутизации.
Итак, теперь правила маршрутизации политики таковы:

$ 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

Затем я добавил следующие правила в свою пользовательскую таблицу:

$ 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

Последняя строка показывает, какая из них является другой конечной точкой соединения точка-точка.
Кроме того, основная таблица маршрутизации пуста.

При такой конфигурации, если я нахожусь в пространстве имен и пингую 10.0.0.5, я не получаю ответов (ни ответа ARP).
Пакеты запросов достигают интерфейса vethY (я видел это с помощью wireshark), но ответ не генерируется.
Если мой кэш arp пуст, то при отправке запроса arp ответ arp не будет отправлен.

Вместо этого, если я добавлю правило
10.0.0.0/24 dev vethY scope link
также в основную таблицу, все пакеты будут проходить правильным путем.

Почему я не получаю ответов, если не добавляю это правило в основную таблицу?
Почему задействована основная таблица, если я настроил маршрутизацию на использование T1 для всех пакетов, приходящих либо с vethY, либо с ppp0?

Связанный контент