Netplan (пере)удаляет маршрут из основной таблицы маршрутизации в другую политику маршрутизации

Netplan (пере)удаляет маршрут из основной таблицы маршрутизации в другую политику маршрутизации

Общий обзор таков: у меня есть сервер Impish Ubuntu с двумя интерфейсами, адресами 172.16.2.103/24и 10.1.2.10/24. Я хотел бы, чтобы трафик по умолчанию проходил через шлюз 172.16.2.254. Однако, когда я указываю исходный адрес , 10.1.2.10я хочу, чтобы у него был шлюз 10.1.2.254. Дальнейшее работает в 99% случаев, но я хочу, чтобы ядро ​​выбирало исходный IP 172.16.2.103 даже при обращении к 10.1.2.0/24. Это было возможно в /etc/networks/interfaces , но я не смог разобраться с этим с помощью netplan.

Вот что у меня в конфигурации netplan:

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

Как я уже сказал, в основном это работает нормально. У меня есть политика маршрутизации (она же правило ip), которая означает, что если я меняю адрес источника пакетов, я просматриваю таблицу маршрутизации 10. Однако есть дополнительный маршрут, который я хочу удалить из основного.

Вот что я вижу, просматривая таблицы маршрутизации:

IN1:  me@host:~$ ip route
OUT1: default via 172.16.2.254 dev ens160 proto static
OUT2: 172.16.2.0/24 dev ens160 proto kernel scope link src 172.16.2.103
OUT3: 10.1.2.0/24 dev ens192 proto kernel scope link src 10.1.2.10

IN2:  me@host:~$ ip route list table 10
OUT5: default via 10.1.2.254 dev ens192 proto static

Я хотел бы удалить OUT3 или, точнее, переместить его в таблицу маршрутизации 10, чтобы в основной таблице маршрутизации не было ссылки layer2 на 10.1.2.0/24. Я могу сделать это вручную следующим образом:

me@host:~$ sudo ip route del 10.1.2.0/24 dev ens192

Но я не вижу, как встроить это в netplan. Раньше я бы добавил оператор up, /etc/network/interfacesно теперь это не вариант.

Заранее спасибо.

решение1

Я бы не назвал это решением, скорее обходным путем. Моя проблема была в том, что я хотел удалить нежелательный маршрут: обходной путь - создатьдругоймаршрут с более высоким приоритетом!

network:
  ethernets:
    ens160:
      addresses:
      - 172.16.2.103/24
      routes:
      - to: 0.0.0.0/0
        via: 172.16.2.254
      # ** ADDITIONAL ROUTE **
      - to: 0.0.0.0/0
        via: 172.16.2.254
        table: 172
      # **********************
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain
      optional: yes
    ens192:
      addresses:
      - 10.1.2.10/24
      routing-policy:
      - from: 10.1.2.10
        table: 10
      # ** ADDITIONAL ROUTING POLICY **
      - to: 172.16.2.0/24
        table: 172
      # *******************************
      routes:
      - to: 0.0.0.0/0
        via: 10.1.2.254
        table: 10
      optional: yes
  version: 2

Обратите внимание на дополнительную политику маршрутизации и маршрут для интерфейса ens160. Это создаст еще одну таблицу маршрутизации с именем 172, и у нее будет один маршрут по умолчанию, такой же, как маршрут по умолчанию основной таблицы (172.16.2.254). Теперь, когда я маршрутизируюк172.16.2.0/24, вместо того, чтобы проходить через основную таблицу с неправильным маршрутом, он будет проходить через таблицу маршрутизации 172.

Я все равно был бы признателен, если бы вы узнали, есть ли способ удалить маршрут в основной таблице, но теперь у меня есть функционирующая система, поэтому через 2 недели я отмечу это как принятое решение.

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