Вопрос или проблема
UBUNTU SERVER 18.04 LTS с 2 GE NICs
eno1: 172.22.1.1/20
eno2: 10.11.1.34/30
netplan yaml:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses: [ 172.22.1.1/20 ]
gateway4: 172.22.0.1
nameservers:
addresses:
- "172.22.0.53"
routing-policy:
- to: 172.22.224.0/19
table: 211
priority: 10
- to: 192.168.201.0/24
table: 200
priority: 20
routes:
- to: 0.0.0.0/0
via: 172.22.0.254
table: 211
- to: 0.0.0.0/0
via: 172.22.0.1
table: 200
eno2:
addresses: [ 10.11.1.34/30 ]
routing-policy:
- from: 10.11.1.34
table: 222
priority: 8
- to: 10.128.0.0/16
table: 222
priority: 5
routes:
- to: 0.0.0.0/0
via: 10.11.1.33
table: 222
Когда я применяю конфигурацию, перезапускаю сеть или использую netplan apply
, работает только одна из этихrouting-policies:
Когда я использую netplan apply
:
-
eno1
:- В первый раз работает только первая routing-policy.
- Во второй раз работает только вторая routing-policy.
- В третий раз работает только первая routing-policy.
-
eno2
- Каждый раз работает только вторая routing-policy.
Я написал файл yaml так, как сказано в примерах netplan.io.
Я не уверен, что это сработает.
Вот мое предложение для netplan yaml
:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses: [ 172.22.1.1/20 ]
gateway4: 172.22.0.1
nameservers:
addresses:
- "172.22.0.53"
routing-policy:
- from: 172.22.1.1
to: 172.22.224.0/19
table: 221
- from: 172.22.1.1
to: 192.168.201.0/24
table: 201
routes:
- to: 0.0.0.0/0
via: 172.22.0.254
table: 221
- to: 0.0.0.0/0
via: 172.22.0.1
table: 201
- to: 172.22.224.0/19
via: 172.22.0.254
- to: 192.168.201.0/24
via: 172.22.0.1
eno2:
addresses: [ 10.11.1.34/30 ]
routing-policy:
- from: 10.11.1.34
table: 222
routes:
- to: 0.0.0.0/0
via: 10.11.1.33
table: 222
- to: 10.128.0.0/16
via: 10.11.1.33
Ниже приведенное работало для меня на системе с двумя сетевыми картами, каждая из которых использует разные шлюзы, интерфейсы и IP:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 172.22.1.1/20
dhcp4: no
dhcp6: no
# addresses: [ 172.22.1.1/20 ]
# gateway4: 172.22.0.1
nameservers:
addresses: [172.22.0.53]
# - "172.22.0.53"
routes:
- to: 0.0.0.0/0
via: 172.22.0.254
table: 200
metric: 100
# table: 211
- to: 0.0.0.0/0
via: 172.22.0.1
table: 200
metric: 100
- to: 172.22.1.0/20
via: 172.22.0.1
table: 200
on-link: true
routing-policy:
- to: 172.22.224.0/19
table: 200
# table: 211
priority: 10
- to: 192.168.201.0/24
table: 200
priority: 20
eno2:
addresses:
- 10.11.1.34/30
dhcp4: no
dhcp6: no
nameservers:
addresses: [???.???.???.???]
# addresses: [ 10.11.1.34/30 ]
routes:
- to: 10.11.1.0/30
via: 10.11.1.33
table: 222
on-link: true
- to: 0.0.0.0/0
via: 10.11.1.33
table: 222
metric: 100
on-link:true
routing-policy:
- from: 10.11.1.34
table: 222
priority: 8
- to: 10.128.0.0/16
table: 222
priority: 5
Полезно запустить следующую команду, чтобы проверить изменения и увидеть возможные ошибки:
sudo netplan --debug apply
Ответ или решение
При работе с сервером Ubuntu 18.04 LTS и использованием сетевой конфигурации Netplan, вы можете столкнуться с проблемой, при которой правила маршрутизации не функционируют так, как ожидается. Давайте подробнее рассмотрим ваш конфигурационный файл и предложим возможные решения.
Проблема конфигурации
Вы указали, что у вас есть два сетевых интерфейса (NIC): eno1
и eno2
, и в каждом из них настроены свои правила маршрутизации. Несмотря на это, при применении конфигурации через netplan apply
, наблюдается, что работают только некоторые из указанных правил.
Конфигурация Netplan
Ваш первоначальный файл конфигурации выглядит следующим образом:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses: [ 172.22.1.1/20 ]
gateway4: 172.22.0.1
nameservers:
addresses:
- "172.22.0.53"
routing-policy:
- to: 172.22.224.0/19
table: 211
priority: 10
- to: 192.168.201.0/24
table: 200
priority: 20
routes:
- to: 0.0.0.0/0
via: 172.22.0.254
table: 211
- to: 0.0.0.0/0
via: 172.22.0.1
table: 200
eno2:
addresses: [ 10.11.1.34/30 ]
routing-policy:
- from: 10.11.1.34
table: 222
priority: 8
- to: 10.128.0.0/16
table: 222
priority: 5
routes:
- to: 0.0.0.0/0
via: 10.11.1.33
table: 222
Анализ конфигурации
-
Конфликты между маршрутами и маршрутной политикой: Ваша текущая конфигурация содержит маршруты и политику маршрутизации для таблиц, которые могут конфликтовать между собой. Указание нескольких маршрутов по умолчанию (
0.0.0.0/0
) в разных таблицах может привести к тому, что только один из них будет обработан. -
Приоритеты маршрутной политики: Приоритеты определяют, какие правила будут применены первыми. Если два правила направляют трафик к одной и той же сети, может возникнуть путаница, какое правило должно быть применено.
-
Отсутствие явных маршрутных записей: Для интерфейсов можно добавить явные маршруты к вашим сетям, что поможет избежать проблем с определением направлений трафика.
Рекомендации по исправлению
Вот предложенная улучшенная версия вашей конфигурации:
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 172.22.1.1/20
nameservers:
addresses:
- "172.22.0.53"
routing-policy:
- from: 172.22.1.1
to: 172.22.224.0/19
table: 211
priority: 10
- from: 172.22.1.1
to: 192.168.201.0/24
table: 200
priority: 20
routes:
- to: 172.22.0.0/20
on-link: true
- to: 0.0.0.0/0
via: 172.22.0.254
table: 211
- to: 0.0.0.0/0
via: 172.22.0.1
table: 200
eno2:
addresses:
- 10.11.1.34/30
routing-policy:
- from: 10.11.1.34
table: 222
priority: 8
- to: 10.128.0.0/16
table: 222
priority: 5
routes:
- to: 10.11.1.0/30
on-link: true
- to: 0.0.0.0/0
via: 10.11.1.33
table: 222
Проверка конфигурации
Для диагностики возможных ошибок вы можете использовать команду:
sudo netplan --debug apply
Эта команда предоставит вам более детальную информацию и позволит выявить проблемы в вашей конфигурации.
Заключение
Правильная настройка маршрутов и маршрутизации в Ubuntu с использованием Netplan требует тщательного внимания, особенно при работе с несколькими интерфейсами. Убедитесь, что все ваши параметры и политики маршрутизации корректны, и обязательно тестируйте изменения для достижения стабильной работы сети.