
TCPソケットを介してVPNサーバーに接続するVPNアプリケーションがあります。setsockopt
TCPソケットパケットをおよびとしてマークしましたSO_MARK
。ping 10.0.0.1
VPNゲートウェイを正常にpingできます。
その後、VPNを介してすべてのトラフィックをルーティングしてみました。別のテーブルを作成し、ip route add default via 10.0.0.1 dev tun0 table 200
デフォルトゲートウェイを使用して追加しますip rule add lookup 200
。
ただし、VPN 独自のパケットが VPN を通過し始めます。 VPNを直接実行しますが、ip rule add fwmark 1234 lookup main
私のパケットはVPNから除外されます。 tcpdumpでこれを見ることができ、eth0
VPNサーバーが応答します。ただし、着信パケットはTCPソケットに転送されません。カーネルがそれらを捨てているようです。なぜ?