Netplan статические маршруты с интерфейсами Vlan

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

все работает так, как я ожидал. Меня беспокоит то, что я не верю, что эти добавленные вручную маршруты сохранятся после перезапуска. Если есть более легкое решение, позволяющее сохранить эти маршруты, я открыт для этого.

Спасибо,

2
задан 29 October 2019 в 00:12

1 ответ

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 значение, не Ваш локальный адрес.

0
ответ дан 2 December 2019 в 05:51

Другие вопросы по тегам:

Похожие вопросы: