Устранение неполадок маршрутов netplan на сервере 22.04.2

Устранение неполадок маршрутов netplan на сервере 22.04.2

Я ищу руководство по правильной настройке этой сети. У меня есть экземпляр сервера Ubuntu 22.04.2, работающий на Proxmox. К виртуальной машине подключены два интерфейса, а тегирование VLAN выполняется Proxmox.

У меня используются две VLAN. Ens18 на 100, а ens19 на 300. В своих первых попытках я использовал netplan со следующей конфигурацией.

network:  version: 2
  renderer: networkd
  ethernets:
    ens18:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100
    ens19:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 200

маршрут -н

Kernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.86.1    0.0.0.0         UG    100    0        0 ens18
0.0.0.0         192.168.254.1   0.0.0.0         UG    200    0        0 ens19
192.168.86.0    0.0.0.0         255.255.255.0   U     100    0        0 ens18
192.168.86.1    0.0.0.0         255.255.255.255 UH    100    0        0 ens18
192.168.86.16   0.0.0.0         255.255.255.255 UH    100    0        0 ens18
192.168.254.0   0.0.0.0         255.255.255.0   U     200    0        0 ens19
192.168.254.1   0.0.0.0         255.255.255.255 UH    200    0        0 ens19

ifconfig

ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.86.28  netmask 255.255.255.0  broadcast 192.168.86.255
        inet6 fe80::ecc6:d9ff:fe43:6711  prefixlen 64  scopeid 0x20<link>
        ether ee:c6:d9:43:67:11  txqueuelen 1000  (Ethernet)
        RX packets 930  bytes 149307 (149.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 427  bytes 62104 (62.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


ens19: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.35  netmask 255.255.255.0  broadcast 192.168.254.255
        inet6 fe80::443a:61ff:fedc:4864  prefixlen 64  scopeid 0x20<link>
        ether 46:3a:61:dc:48:64  txqueuelen 1000  (Ethernet)
        RX packets 295  bytes 32942 (32.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 1736 (1.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 84  bytes 6368 (6.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 6368 (6.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Хотя это работает и IP-адреса назначаются маршрутизатором, есть проблема с тем, что кажется асимметричной маршрутизацией. Если я начну сеанс SSH с IP-адресом на VLAN 300 с моего компьютера, он будет отключен примерно через минуту. Исходя из того, что я нашел после поиска в Google, я (ограниченно) понимаю, что сервер выбирает кратчайший путь обратно к моему компьютеру, поскольку у него есть интерфейс в подсети VLAN 100.

Продолжение чтения привело меня к установке статических маршрутов через netplan. Я следовал руководству на netplan.io и использовал эту конфигурацию.

network:  version: 2
  renderer: networkd
  ethernets:
      ens18:
          addresses:
            - 192.168.86.28/24
          nameservers:
            addresses: [8.8.8.8]
          dhcp4: no
          routes:
            - to: default
              via: 192.168.86.1
            - to: 192.168.86.0/24
              via: 192.168.86.1
              table: 101
          routing-policy:
            - from: 192.168.86.0/24
              table: 101
      ens19:
          addresses:
            - 192.168.254.35/24
          nameservers:
            addresses: [8.8.8.8]
          dhcp4: no
          routes:
            - to: 192.168.254.0/24
              via: 192.168.254.1
              table: 102
          routing-policy:
            - from: 192.168.254.0/24
              table: 102

маршрут -н

Kernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.86.1    0.0.0.0         UG    0      0        0 ens18
192.168.86.0    0.0.0.0         255.255.255.0   U     0      0        0 ens18
192.168.254.0   0.0.0.0         255.255.255.0   U     0      0        0 ens19

ifconfig

ens18: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        
        inet 192.168.86.28  netmask 255.255.255.0  broadcast 192.168.86.255
        inet6 fe80::ecc6:d9ff:fe43:6711  prefixlen 64  scopeid 0x20<link>
        ether ee:c6:d9:43:67:11  txqueuelen 1000  (Ethernet)
        RX packets 566  bytes 98730 (98.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 101  bytes 12613 (12.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


ens19: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.254.35  netmask 255.255.255.0  broadcast 192.168.254.255
        inet6 fe80::443a:61ff:fedc:4864  prefixlen 64  scopeid 0x20<link>
        ether 46:3a:61:dc:48:64  txqueuelen 1000  (Ethernet)
        RX packets 40  bytes 4812 (4.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 964 (964.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 86  bytes 6566 (6.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86  bytes 6566 (6.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


Я все еще получаю то же самое поведение, когда сеансы ssh терпят неудачу через минуту или две. Я также протестировал это с экземпляром node-red на виртуальной машине и увидел то же самое поведение примерно через минуту. Похоже, что это похожая проблема с трафиком tcp. Вот снимок трассировки wireshark. Я могу предоставить дополнительные сведения из этого журнала, если это будет полезно.

https://i.stack.imgur.com/GYgjq.jpg

edit 03/27/23: Я попробовал провести аналогичный эксперимент, используя физический ноутбук с двумя физическими интерфейсами, чтобы проверить, связана ли проблема с виртуализацией сервера. Используя тот же netplan, я получил те же результаты. На данный момент проблема, похоже, не связана со стороной VM.

У меня есть вопросы:

Правильна ли моя конфигурация netplan? Я не уверен, что это ожидаемые результаты от конфигурации и маршрутизация выглядит правильно. Если она неправильная, где мне следует внести изменения?

Если это правильно, где бы мне дальше заняться этой проблемой. Я пробовал перейти на один интерфейс на виртуальной машине, который имеет доступ только к vlan 300, и никаких проблем не возникло. Проблема возникает только при прохождении через vlan и при обоих интерфейсах. Если есть какая-либо другая полезная информация, которую я могу предоставить, пожалуйста, дайте мне знать.

Заранее спасибо.

Связанный контент