18.04. Я пытаюсь настроить свой сервер с 2 интерфейсами VLAN. Каждый интерфейс vlan будет иметь отдельный IP-адрес в отдельной подсети, и оба будут связаны с одним и тем же физическим интерфейсом. Когда я настраиваю интерфейсы VLAN, у меня есть подключение к каждой отдельной подсети через VLAN, но я не могу добавить какие-либо дополнительные маршруты. Мне нужно добавить маршрут по умолчанию со следующим переходом в одну из подсетей (vlan2000), а затем статический маршрут к одной неподключенной подсети через другой vlan (vlan1000). Вот мой файл конфигурации netplan:
network:
renderer: NetworkManager
version: 2
ethernets:
enp0s31f6:
routes:
- to: 0.0.0.0/0
via: 192.168.100.2
metric: 100
- to: 192.168.1.0/24
via: 172.16.100.1
metric: 10
vlans:
vlan1000:
id: 1000
link: enp0s31f6
addresses: [ "172.16.100.2/30" ]
vlan2000:
id: 2000
link: enp0s31f6
addresses: [ "192.168.100.2/24" ]
Я также безуспешно пытался добавить применимые маршруты в каждой иерархии VLAN - например:
vlans:
vlan1000:
id: 1000
link: enp0s31f6
addresses: [ "172.16.100.2/30" ]
routes:
- to: 0.0.0.0/0
via: 192.168.100.2
metric: 100
С обоими из них, после применения конфигурации я получаю следующую ошибку:
Traceback (most recent call last):
File "/usr/sbin/netplan", line 23, in <module>
netplan.main()
File "/usr/share/netplan/netplan/cli/core.py", line 50, in main
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 43, in run
self.run_command()
File "/usr/share/netplan/netplan/cli/utils.py", line 130, in run_command
self.func()
File "/usr/share/netplan/netplan/cli/commands/apply.py", line 93, in command_apply
stderr=subprocess.DEVNULL)
File "/usr/lib/python3.6/subprocess.py", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/vlan1000']' returned non-zero exit status 4.
Если затем применить ее снова, она проходит, но ни один из маршрутов не добавляется в таблицу маршрутизации. Если я удаляю операторы маршрута полностью, это применяется без ошибок. Я не знаю много о netplan, но это похоже на проблему. Итак, я предполагаю, что я делаю что-то в конфигурации неправильно. Где я должен добавить статистические маршруты для интерфейсов vlan?
FTR, когда я добавляю статические маршруты вручную:
sudo ip route add 192.168.1.0/24 via 172.16.100.1 dev vlan1000
все работает так, как я ожидал. Меня беспокоит то, что я не верю, что эти добавленные вручную маршруты сохранятся после перезапуска. Если есть более легкое решение, позволяющее сохранить эти маршруты, я открыт для этого.
Спасибо,
vlans:
vlan1000:
id: 1000
link: enp0s31f6
addresses: [ "172.16.100.2/30" ]
routes:
- to: 0.0.0.0/0
via: 192.168.100.2
metric: 100
Добавление отступа в стороне, эта конфигурация была бы неправильной, потому что Вы пытаетесь здесь добавить маршрут к интерфейсу, который не является интерфейсом, содержащим маршрут к его шлюзу. Маршрут 0.0.0.0/0 должен был бы быть перечислен под интерфейсом vlan2000, учитывая, что сеть, где Ваш маршрут к шлюзу (192.168.100.2).
Но также и, согласно Вашей конфигурации, 192.168.100.2 локальный адрес, что означает, что неправильно использовать его в качестве шлюза. У Вас нет всего Интернета (0.0.0.0/0) непосредственно подключенным к Вашему адресу узла на этом VLAN. Ваш маршрут должен настроить с IP-адресом Вашего маршрутизатора как via
значение, не Ваш локальный адрес.