두 개의 내부 NIC에서 라우팅이 동일하게 작동하지 않음

두 개의 내부 NIC에서 라우팅이 동일하게 작동하지 않음

mu Ubuntu 22.04 서버에는 내부 NIC 2개와 외부 NIC 1개가 인터넷에 연결되어 있습니다. Netplan과의 인터페이스를 다음과 같이 정의했습니다.

network:
  ethernets:
    eno1:
      dhcp4: true
      dhcp4-overrides:
        route-metric: 100
    enp2s0:
      addresses:
        - 172.16.1.1/24
      nameservers:
        addresses:
        - 127.0.0.53
        - 8.8.8.8
        search:
        - wombats.org
      routes:
        - to: default
          via: 192.168.0.254
        - to: 172.16.1.0/24
          via: 172.16.1.1
          metric: 200
          table: 101
      routing-policy:
        - from: 172.16.1.0/24
          table: 101
    wlp8s0:
      dhcp4: no
      addresses:
        - 172.16.2.1/24
      routes:
        - to: 172.16.2.0/24
          via: 172.16.2.1
          metric: 20
          table: 102
      routing-policy:
        - from: 172.16.2.0/24
          table: 102
  version: 2

enp2s0에 연결된 컴퓨터는 인터넷과 내부적으로 완벽하게 라우팅됩니다. 동일한 컴퓨터가 wlp8s0을 통해 연결되면 enp2s0(172.16.1.1/24)에서 관리하는 네트워크에도 연결할 수 없습니다. 다음은 enp2s0을 통해 연결된 두 개의 라우팅 테이블입니다.

ip r
default via 172.16.1.1 dev enxf8e43b9d4867 proto dhcp metric 100 
169.254.0.0/16 dev enxf8e43b9d4867 scope link metric 1000 
172.16.1.0/24 dev enxf8e43b9d4867 proto kernel scope link src 172.16.1.3 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

wlp8s0을 통해 연결됨:

ip r
default via 172.16.2.1 dev wlp0s20f3 proto dhcp metric 20600 
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000 
172.16.2.0/24 dev wlp0s20f3 proto kernel scope link src 172.16.2.4 metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

눈에 띄는 차이점은 두 구성 모두에서 기본 경로의 메트릭입니다. 두 서브넷이 모두 동일하게 구성되어 있으므로 이는 DHCP 서버에서 발생하지 않습니다. ufw를 비활성화하고 iptables를 추가하려고 시도했습니다. 그러나 그 모든 것이 결과를 바꾸지는 않았습니다.

왜 wlp8s0의 트래픽을 라우팅할 수 없는지 이해할 수 없습니다! 하나의 NIC는 케이블이고 다른 하나는 Wi-Fi라는 사실이 차이점을 설명합니까? 동일한 방식으로 IP를 제공받아서는 안 됩니다.

당신의 도움을 주셔서 감사합니다. 1월

답변1

이 문제에 대한 해결책은 두 가지였습니다. 먼저 두 인터페이스(서브넷) 모두에서 가장을 수행해야 합니다.

-A POSTROUTING -s 172.16.1.0/24 -o eno1 -j MASQUERADE
-A POSTROUTING -s 172.16.2.0/24 -o eno1 -j MASQUERADE

그렇다면 덜 중요한 것은 인터페이스가 캐리어 유무에 관계없이 제공된다는 것입니다. 이 작업은 /etc/netplan/00-installer-config.yaml에서 다음 줄을 사용하여 수행됩니다.

    enp2s0:
      ignore-carrier: true

wlp8s0도 마찬가지입니다. 그리하지 않으면

관련 정보