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인 것을 알 수 있습니다. 따라서 이 규칙은 어떤 패킷과도 일치하지 않습니다.
이 문제를 어떻게 해결할 수 있나요?