iptables의 SNAT 문제

iptables의 SNAT 문제

openvpn을 통해 집에 있는 특정 장치의 트래픽을 다시 라우팅하려고 합니다. 이를 위해 가정용 WiFi 라우터와 서버 사이에 OpenVPN 터널을 만들었습니다.

이것은 내 설정입니다.

Wifi router's outgoing interface IP: 192.168.1.102
Wifi router's openvpn tun0: 10.8.0.2
Server's openvpn tun0: 10.8.0.1

My PC                   WiFi                                          Server
                              ,- 10.8.0.2(tun0)    10.8.0.1(tun0) --.
                             |                                      |  _
 __  _                       '                 .-,(   ),-.          ' |-|
[__]|=|    wireless     ___|_      VPN      .-(           )-.   VPN   |=|
/::/|_|  <- - - - - >  [__...]  < - - - >  (    internet     ) < - >  |=|
                          .                 '-(          ).-'         "^"
                          |                    '-.(  ).-'
                          `-- 192.168.1.102

서버 iptable 구성:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED, ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o eth2 -j ACCEPT

Wi-Fi 라우터 구성(새로운 라우팅 테이블 openvpn-route 사용):

ip route add default via 10.8.0.1 dev tun0 table openvpn-route
ip rule add fwmark 0x1 table openvpn-route
iptables -t mangle -A PREROUTING -m mac --mac-source aa:aa:aa:aa:aa:aa -j MARK --set-mark 1
iptables -A POSTROUTING -t nat -o tun0 -p tcp --dport 80 -j SNAT --to 10.8.0.2

이제 랩탑에서 웹사이트를 방문할 때마다 트래픽이 Wi-Fi 라우터의 tun 장치로 이동하고 거기에서 서버로 이동하는 것을 볼 수 있습니다. 하지만 이 트래픽의 SRC IP 주소는 192.168.1.102(WiFi 라우터의 나가는 인터페이스 IP)입니다. 그래서 서버가 이 트래픽을 무시한다고 생각합니다.

SRC IP를 10.8.0.2로 변경하기 위해 SNATing 규칙과 일치하는 패킷 수를 보면 개수가 0인 것을 알 수 있습니다. 따라서 이 규칙은 어떤 패킷과도 일치하지 않습니다.

이 문제를 어떻게 해결할 수 있나요?

관련 정보