Linux/iptables - 겹치는 서브넷 간의 NAT

Linux/iptables - 겹치는 서브넷 간의 NAT

개인 서브넷을 유지하면서 하나의 Wireguard 인터페이스에서 다른 인터페이스로 NAT를 시도하고 있습니다. 이것이 내 설정입니다. 여기서 중요한 점은 인터페이스에 서브넷이 겹치는 것입니다.

내 VPN 서버에는 세 가지 인터페이스가 있습니다. 공용 ens3개인 Wireguard wg0(172.16.1.1/24) 및 VPN 서비스 Wireguard wg1(172.28.112.173/12)

ens3인터넷에 액세스할 수 있는 라우팅 가능한 공용 IPv4 주소가 있는 공용 인터페이스입니다.

wg0172.16.1.0/24 네트워크의 모든 장치에 대한 Wireguard 인터페이스입니다. 내 모든 장치는 이 인터페이스에 연결되어 서로 통신할 수 있으며 현재 NAT를 사용하고 있습니다 ens3.

wg1172.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

관련 정보