외부 수신 트래픽을 인터페이스로 라우팅하는 데 도움을 줍니다.

외부 수신 트래픽을 인터페이스로 라우팅하는 데 도움을 줍니다.

VPS 공용 IP 포트 27016 또는 3202로의 트래픽을 Wireguard VPN 터널로 강제 실행하기 위해 IP 경로를 생성하는 데 도움이 필요합니다.

맥락상 고정 IP를 사용하여 Steam 게임 서버를 대중에게 공개할 수 있도록 이 VPS를 만들었습니다. Wireguard를 통해 게임 서버를 VPS에 성공적으로 연결했습니다. 게임 서버에서 WAN으로의 모든 트래픽은 VPS를 통해 라우팅되지만 인바운드 트래픽(예: 서버 쿼리)은 VPN으로 라우팅되지 않으므로 게임 서버로 라우팅되지 않습니다. . 이는 게임 서버에서 Wireshark를 실행하여 확인되었습니다.

게임 서버는 Proxmox에서 호스팅되는 Windows Server 22 VM입니다. VPS는 Ubuntu 22.10을 실행하는 DigitalOcean Droplet입니다.

내 생각에 경로는 다음과 같아야 하지만 올바르게 수행하는 방법은 완전히 확실하지 않습니다.

publicIP (eth0 interface) > VPN Tunnel (wg0 interface; 192.168.69.1) > VPN peer (192.168.69.2) > Game server (10.11.12.150)

지적 재산권

  • VPS 공용 IP: 162.243.164.xxx
  • VPN 게이트웨이: 192.168.69.1
  • 게임 서버 VPN IP: 192.168.69.2
  • 게임 서버 로컬 IP: 10.11.12.150

VPS Wireguard 구성

[Interface]
PrivateKey = KEY
Address = 192.168.69.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = KEY
AllowedIPs = 192.168.69.2
PersistentKeepalive = 25

VPS IP 라우팅

default via 162.243.164.1 dev eth0 proto static 
10.10.0.0/16 dev eth0 proto kernel scope link src 10.10.0.5 
10.116.0.0/20 dev eth1 proto kernel scope link src 10.116.0.2 
162.243.164.0/24 dev eth0 proto kernel scope link src 162.243.164.xxx 
192.168.69.0/24 dev wg0 proto kernel scope link src 192.168.69.1

VPS IP 주소

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 6a:24:cf:89:d5:04 brd ff:ff:ff:ff:ff:ff
        altname enp0s3
        altname ens3
        inet 162.243.164.xxx/24 brd 162.243.164.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet 10.10.0.5/16 brd 10.10.255.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::6824:cfff:fe89:d504/64 scope link 
           valid_lft forever preferred_lft forever
    3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether ce:21:97:e6:06:14 brd ff:ff:ff:ff:ff:ff
        altname enp0s4
        altname ens4
        inet 10.116.0.2/20 brd 10.116.15.255 scope global eth1
           valid_lft forever preferred_lft forever
        inet6 fe80::cc21:97ff:fee6:614/64 scope link 
           valid_lft forever preferred_lft forever
    5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
        link/none 
        inet 192.168.69.1/24 scope global wg0
           valid_lft forever preferred_lft forever

TCP덤프명령: tcpdump -i any -n udp 및 포트 27016; 결과는 publicip:27016을 한 번 쿼리한 결과입니다.

listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
18:10:47.290457 eth0  In  IP 162.55.52.17.52424 > 162.243.164.xxx.27016: UDP, length 25
18:10:55.926653 eth0  In  IP 141.94.81.117.35441 > 162.243.164.xxx.27016: UDP, length 25

아직 배우는 중이므로 도움이나 안내를 주시면 대단히 감사하겠습니다.

추가 정보

다음은 게임 서버(클라이언트/피어)의 Wireguard 구성입니다.

[Interface]
PrivateKey = KEY
Address = 192.168.69.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = KEY
AllowedIPs = 0.0.0.0/0
Endpoint = VPS PUBLIC IP

내가 시도한 것

성공하지 못한 채 VPS의 PostUp에 다음 IPTable을 연결하려고 했습니다.

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 27016 -j DNAT --to-destination 192.168.69.1:27016; iptables -A FORWARD -i eth0 -o wg0 -p udp --dport 27016 -j ACCEPT;

다음 명령을 실행하여 IP 경로와 규칙을 만들어 보았습니다.

ip route add table 80 192.168.69.0/24 dev wg0 src 192.168.69.1
ip rule add ipproto udp dport 27016 lookup 80

결과는 변하지 않았습니다.

관련 정보