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

216
ica

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

- - - - - - - | 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.

Я создал пользовательскую таблицу маршрутизации с именем ' T1 ', добавив в файл запись "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?

1

0 ответов на вопрос

Похожие вопросы