Общий обзор таков: у меня есть сервер 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 недели я отмечу это как принятое решение.