서버 22.04.2의 netplan 경로 문제 해결

서버 22.04.2의 netplan 경로 문제 해결

이 네트워크를 설정하는 올바른 방법에 대한 지침을 찾고 있습니다. 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을 통과하고 두 인터페이스가 모두 작동하는 경우에만 문제가 됩니다. 제가 제공할 수 있는 다른 유용한 정보가 있으면 알려주시기 바랍니다.

미리 감사드립니다.

관련 정보