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

これで、ラップトップからWebサイトにアクセスするたびに、トラフィックがWi-Fiルーターのトンデバイスに移動し、そこからサーバーに移動することがわかります。ただし、このトラフィックのSRC IPアドレスは192.168.1.102(WiFiルーターの発信インターフェイスIP)です。それで、サーバーはこのトラフィックを無視すると思います。

SRC IPを10.8.0.2に変更するためにSNATingルールに一致するパケット数を見ると、数が0であることがわかります。したがって、このルールはどのパケットとも一致しません。

この問題をどのように解決できますか?

関連情報