Я предоставляю машины с MAAS, и все машины настроены на две разные подсети:
Сохраняя одинаковую конфигурацию интерфейса в MAAS для всех узлов, при развертывании на 18.04LTS таблица маршрутизации отличается от того, когда я развертываю 16.04LTS, из коробки. При настройке, узлы 18.04 по существу предотвращают соединения из сетей за пределами (1) и (2). например Я не могу ни ssh, ни пропинговать хост 18.04 из публичного интернета. Все хорошо на 16.04 хостов.
И с 16.04, и с 18.04 я могу успешно подключить к общедоступный Интернет (например, wget google.com
) и получить ответы.
Таблица маршрутизации 18.04 в итоге несколько отличается от таблицы 16.04:
# 18.04 machine has IPs 9.9.9.9 (eno1), and 192.168.79.9 (eno2)
ubuntu@18-04:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.79.254 0.0.0.0 UG 0 0 0 eno2
0.0.0.0 9.9.9.254 0.0.0.0 UG 100 0 0 eno1
192.168.79.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
9.9.9.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
9.9.9.254 0.0.0.0 255.255.255.255 UH 100 0 0 eno1
16.04:
ubuntu@16-04:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 9.9.9.254 0.0.0.0 UG 0 0 0 eno1
192.168.79.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
9.9.9.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
Таблица 18.04 не работает должным образом. Я не уверен, почему добавлен дополнительный маршрут к хосту (UH), а предпочтительный маршрут - через eno2 (частная сеть). Я могу видеть входящие интернет-пакеты, поступающие через eno1 (с tcpdump -i eno1), но я предполагаю, что ответы возвращаются на eno2 и теряются.
Есть ли способ настроить MAAS так, чтобы таблицы маршрутизации 18.04 выглядели так же, как таблицы на 16.04?
ОБНОВЛЕНИЕ:
18.04 использует netplan для настройки сетей, и это есть специальные правила для dhcp. Конфигурация сети находится в /etc/netplan/50-cloud-init.yaml, и netplan отдает приоритет статическому маршруту над тем, который получен через dhcp.
Мне пришлось отменить это назначение приоритетов, но единственный способ, которым мне удалось это исправить, - это исправление файлов сетевого плана после развертывания.
eno1:
dhcp4: true
match:
macaddress: c8:1f:66:c9:fd:3c
mtu: 1500
set-name: eno1
eno2:
addresses:
- 192.168.79.110/24
gateway4: 192.168.79.254
match:
macaddress: c8:1f:66:c9:fd:3d
mtu: 1500
nameservers:
addresses:
- 192.168.79.10
- 192.168.79.11
search:
- maas
set-name: eno2
Моей первоначальной идеей было создать файл переопределения с лексикографически большим именем в / etc / netplan /, чтобы удалить запись «gateway4», но я не думаю, что есть какой-либо способ удалить ключ. Вы можете просто переопределить их. Поэтому я отредактировал тот же файл, чтобы добавить маршрут и дать ему более высокую метрику, чем по умолчанию 100 для сетей DHCP.
Вот мой пропатченный маршрут для eno2. eno1 (dhcp) остается без изменений.
eno1:
dhcp4: true
match:
macaddress: ca:fe:ba:be:ca:3c
mtu: 1500
set-name: eno1
eno2:
addresses:
- 192.168.79.110/24
# no need for this. use routes below.
# gateway4: 192.168.79.254
routes:
- to: 0.0.0.0/0
via: 192.168.79.254
# dhcp gateways get 100 by default. make this > 100
metric: 200
match:
macaddress: ca:fe:ba:be:ca:3d
mtu: 1500
nameservers:
addresses:
- 192.168.79.10
- 192.168.79.11
search:
- maas
set-name: eno2
Я также подумал о том, чтобы сделать маршрут dhcp gw метрикой 0 (с переопределением dhcp4), но тогда оба маршрута шлюза имели бы приоритет 0 - и тогда я не совсем согласен с правилами linux.
netplan apply
с обновленным конфигом приводит меня туда, куда я хочу.
Есть ли способ сделать это редактирование как часть автоматизированного развертывания в MAAS?