개인 서브넷을 유지하면서 하나의 Wireguard 인터페이스에서 다른 인터페이스로 NAT를 시도하고 있습니다. 이것이 내 설정입니다. 여기서 중요한 점은 인터페이스에 서브넷이 겹치는 것입니다.
내 VPN 서버에는 세 가지 인터페이스가 있습니다. 공용 ens3
개인 Wireguard wg0
(172.16.1.1/24) 및 VPN 서비스 Wireguard wg1
(172.28.112.173/12)
ens3
인터넷에 액세스할 수 있는 라우팅 가능한 공용 IPv4 주소가 있는 공용 인터페이스입니다.
wg0
172.16.1.0/24 네트워크의 모든 장치에 대한 Wireguard 인터페이스입니다. 내 모든 장치는 이 인터페이스에 연결되어 서로 통신할 수 있으며 현재 NAT를 사용하고 있습니다 ens3
.
wg1
172.16.0.0/12 네트워크의 VPN 공급자에 대한 Wireguard 터널입니다. VPN 공급자는 IP 주소를 할당하고 공용 인터넷에 대한 라우터의 인터페이스는 172.16.0.1에 있습니다.
iptables를 NAT로 설정하면 ens3
모든 것이 예상대로 작동합니다. 172.16.1.0/24의 장치는 공용 인터페이스를 사용하여 서로 통신하고 ens3
인터넷에 액세스할 수 있습니다.
iptables를 NAT로 설정하면 장치가 wg1
공용 인터페이스를 사용하여 인터넷에 액세스할 수 없습니다. wg1
실제로 tcpdump는 상자가 라우터에서 wg0
라우터로 패킷을 전달하고 있음을 보여 주며 이는 ens3
분명히 제대로 작동하지 않습니다.
wg0
나의 궁극적인 목표는 클라이언트가 NAT를 통해 wg1
활성화되어 wg0
있고 wg1
재할당되거나 변경될 수 없는 서브넷에 액세스 하도록 하는 것입니다 . 정책 기반 라우팅을 사용하면 이 작업을 수행할 수 있을 것 같지만 며칠 동안 다양한 구성을 시도한 후에도 여전히 작동하지 않습니다. 누구든지 나에게 통찰력을 줄 수 있다면 매우 감사하겠습니다!
iptables 덤프:
# Generated by xtables-save v1.8.2 on Sat Jun 19 03:43:54 2021
*nat
:PREROUTING ACCEPT [15677:1866069]
:INPUT ACCEPT [10279:816931]
:POSTROUTING ACCEPT [5314:492688]
:OUTPUT ACCEPT [4806:467393]
-A PREROUTING -i ens3 -p udp -m udp --dport 1701 -m comment --comment "Also allow 1701/udp for WireGuard" -j REDIRECT --to-ports 500
-A PREROUTING -i ens3 -p udp -m udp --dport 443 -m comment --comment "Also allow 443/udp for WireGuard" -j REDIRECT --to-ports 500
-A POSTROUTING -o ens3 -j MASQUERADE
COMMIT
# Completed on Sat Jun 19 03:43:54 2021
# Generated by xtables-save v1.8.2 on Sat Jun 19 03:43:54 2021
*filter
:INPUT DROP [2775:810347]
:FORWARD ACCEPT [1048627:1182856653]
:OUTPUT ACCEPT [14961117:11097488012]
-A INPUT -m state --state RELATED,ESTABLISHED -m comment --comment "Allow ALL RELATED, ESTABLISHED" -j ACCEPT
-A INPUT -i lo -m state --state NEW -m comment --comment "Allow ALL from lo" -j ACCEPT
-A INPUT -p icmp -m state --state NEW -m comment --comment "Allow ICMP" -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m multiport --dports 22 -m comment --comment "Allow SSH" -j ACCEPT
-A INPUT -i wg0 -m state --state NEW -m comment --comment "Allow ALL from wg0" -j ACCEPT
-A INPUT -p udp -m state --state NEW -m multiport --dports 500 -m comment --comment "Allow WireGuard" -j ACCEPT
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m comment --comment "Clamp MSS to PMTU" -j TCPMSS --clamp-mss-to-pmtu
COMMIT
# Completed on Sat Jun 19 03:43:54 2021
라우팅 테이블 덤프:
default via 161.129.xxx.xxx dev ens3
161.129.xxx.xxx/24 dev ens3 proto kernel scope link src 161.129.xxx.xxx
172.16.1.0/24 dev wg0 proto kernel scope link src 172.16.1.1