이 네트워크를 설정하는 올바른 방법에 대한 지침을 찾고 있습니다. proxmox에서 실행되는 우분투 서버 22.04.2 인스턴스가 있습니다. 두 개의 인터페이스가 VM에 연결되고 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
경로 -n
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 주소가 라우터에 의해 할당되는 동안 비대칭 라우팅으로 보이는 문제가 있습니다. VLAN 100의 내 컴퓨터에서 300 VLAN의 IP 주소에 대한 SSH 세션을 시작하면 약 1분 후에 시간이 초과됩니다. 인터넷 검색 후 찾은 내용을 바탕으로 서버가 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
경로 -n
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
1~2분 후에 SSH 세션이 실패하는 동일한 동작이 여전히 발생합니다. 또한 VM의 node-red 인스턴스를 사용하여 이를 테스트한 결과 약 1분 후에 동일한 동작이 확인되었습니다. TCP 트래픽과 비슷한 문제인 것 같습니다. 다음은 Wireshark 추적의 샷입니다. 유용하다면 이 로그에서 추가 세부정보를 제공할 수 있습니다.
https://i.stack.imgur.com/GYgjq.jpg
23/03/27 편집: 문제가 서버 가상화와 관련이 있는지 확인하기 위해 두 개의 물리적 인터페이스가 있는 물리적 랩톱을 사용하여 유사한 실험을 시도했습니다. 동일한 netplan을 사용하여 동일한 결과를 얻었습니다. 이 시점에서는 문제가 VM 측에 연결된 것으로 보이지 않습니다.
내 질문은 다음과 같습니다
내 Netplan 구성이 정확합니까? 이것이 구성에서 예상되는 결과인지, 라우팅이 올바른지 확실하지 않습니다. 정확하지 않다면 어디서 수정해야 하나요?
그것이 맞다면, 이 문제를 조사할 다음 장소는 어디일까요? VLAN 300에만 액세스하는 가상 머신의 단일 인터페이스로 이동하려고 시도했지만 문제가 없습니다. VLAN을 통과하고 두 인터페이스가 모두 작동하는 경우에만 문제가 됩니다. 제가 제공할 수 있는 다른 유용한 정보가 있으면 알려주시기 바랍니다.
미리 감사드립니다.