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
これで、ラップトップからWebサイトにアクセスするたびに、トラフィックがWi-Fiルーターのトンデバイスに移動し、そこからサーバーに移動することがわかります。ただし、このトラフィックのSRC IPアドレスは192.168.1.102(WiFiルーターの発信インターフェイスIP)です。それで、サーバーはこのトラフィックを無視すると思います。
SRC IPを10.8.0.2に変更するためにSNATingルールに一致するパケット数を見ると、数が0であることがわかります。したがって、このルールはどのパケットとも一致しません。
この問題をどのように解決できますか?