Wireguard VPN 연결을 통해 모든 트래픽을 라우팅하기 위해 Linux 가상 머신을 게이트웨이로 올바르게 설정하려면 어떻게 해야 합니까?

Wireguard VPN 연결을 통해 모든 트래픽을 라우팅하기 위해 Linux 가상 머신을 게이트웨이로 올바르게 설정하려면 어떻게 해야 합니까?

몇 주 동안 저는 NordVPN 클라이언트 및 게이트웨이/라우터 역할을 하도록 Mac에서 Linux 가상 머신을 설정하여 VPN 연결을 통해 LAN에 있는 특정 장치의 모든 트래픽을 전달하는 방법을 고민했습니다.

내 설정:

  • 내 LAN 서브넷은 192.168.2.0/24입니다.
  • Parallels Desktop Pro 17.0.1이 설치되어 있고 macOS Big Sur 11.6을 실행하는 Mac Pro가 있고 유선 이더넷을 사용하여 LAN에 연결되어 있습니다.
  • Parallels에서는 Ubuntu 21.04 가상 머신을 설정했습니다. 가상 머신은 두 개의 NIC( enp0s5및 ) 로 구성됩니다 enp0s6.
  • 두 가상 머신 NIC는 모두 호스트의 기본 유선 어댑터에 브리지되며 둘 다 LAN의 DHCP 서버에서 IP를 수신합니다.
  • 가상 머신에는 NordVPN이 설치되어 작동하며 Nordlynx(Wireguard)를 프로토콜로 사용하도록 구성되어 있습니다.

내 의도는 가상 머신을 사용하여 enp0s5인터넷에 액세스하고 NordVPN에 연결하는 동시에 enp0s6LAN의 다른 장치로부터 트래픽을 수신하고 VPN을 통해 전달하는 수신 인터페이스로도 사용하는 것입니다.

먼저 VPN에 연결합니다.

$ nordvpn connect us
Connecting to United States #6918 (us6918.nordvpn.com)
You are connected to United States #6918 (us6918.nordvpn.com)!

그 후 내 인터페이스는 다음과 같습니다.

$ ifconfig
enp0s5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.76  netmask 255.255.255.0  broadcast 192.168.2.255
        ether 00:1c:42:b9:d5:a3  txqueuelen 1000  (Ethernet)
        RX packets 120786  bytes 157627189 (157.6 MB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 17840  bytes 1450595 (1.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.64  netmask 255.255.255.0  broadcast 192.168.2.255
        ether 00:1c:42:59:54:ba  txqueuelen 1000  (Ethernet)
        RX packets 11342  bytes 3589378 (3.5 MB)
        RX errors 0  dropped 6  overruns 0  frame 0
        TX packets 277  bytes 77293 (77.2 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
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 948  bytes 99424 (99.4 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 948  bytes 99424 (99.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

nordlynx: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 10.5.0.2  netmask 255.255.255.255  destination 10.5.0.2
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 39  bytes 14380 (14.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 61  bytes 11396 (11.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

여기에서 간단한 속도 및 연결 테스트를 수행했는데 VPN 연결이 제대로 작동했습니다.

nordlynx좋습니다. 이제 해당 인터페이스를 통해 네트워크의 다른 장치에서 enp0s6 인터페이스로 보낸 모든 트래픽을 전달 하려고 합니다 . 그래서 저는 이렇게 합니다:

iptables --flush
iptables --table nat --flush
iptables --table nat --append POSTROUTING --out-interface nordlynx -j MASQUERADE
iptables --append FORWARD --in-interface enp0s6 -j ACCEPT

또한 IP 전달이 활성화되어 있는지 확인했습니다.

$ cat /proc/sys/net/ipv4/ip_forward
1

마지막으로 게이트웨이 기능을 테스트하기 위해 LAN에 있는 다른 노트북(Macbook Pro)에 고정 IP를 구성하고 기본 게이트웨이를 enp0s6내 가상 머신의 IP( 192.168.2.64)로 설정했습니다.

그런 다음 Macbook에서 웹 검색을 시도했지만 작동하지 않았습니다.

내가 무엇을 놓쳤거나 잘못했나요? 이 문제를 어떻게 가장 잘 해결할 수 있습니까?

얼마나 멀리 갔는지 확인하기 위해 Macbook Pro에서 경로 추적을 시도했지만 Ubuntu VM을 기본 게이트웨이로 설정하여 로컬 LAN 서브넷 외부의 IP를 추적하면 다음과 같은 결과만 나타납니다.

$ traceroute 37.156.192.50
traceroute: findsaddr: write: No such process

Linux VM의 라우팅 테이블은 다음과 같습니다.

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         nordvpn-gw      128.0.0.0       UG    0      0        0 nordlynx
default         _gateway        0.0.0.0         UG    100    0        0 enp0s5
default         _gateway        0.0.0.0         UG    101    0        0 enp0s6
128.0.0.0       nordvpn-gw      128.0.0.0       UG    0      0        0 nordlynx
unn-138-199-52- _gateway        255.255.255.255 UGH   0      0        0 enp0s5
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 enp0s6
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s5
192.168.2.0     0.0.0.0         255.255.255.0   U     101    0        0 enp0s6

도움이나 조언을 보내주셔서 감사합니다. 감사해요!

고쳐 쓰다:@AB의 의견에 따라 VM에서 하나의 네트워크 카드만 사용하도록 설정을 단순화하려고 시도했지만 아무런 차이가 없었습니다.

관련 정보