Я ищу руководство по правильной настройке этой сети. У меня есть экземпляр сервера 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 и при обоих интерфейсах. Если есть какая-либо другая полезная информация, которую я могу предоставить, пожалуйста, дайте мне знать.
Заранее спасибо.