iptables MARK はゲートウェイを変更できますが、CONNMARK は変更できません。

iptables MARK はゲートウェイを変更できますが、CONNMARK は変更できません。

異なるホストから別の高速ゲートウェイにいくつかのトラフィックを送信するルーティングテーブルがあります。

ip route show table 88
default via 192.168.88.1 dev eno3
192.168.88.0/24 dev eno3 scope link src 192.168.88.4

そして、設定されたパケットタグに基づいて転送するルーティングルールは次のとおりです。

32765:  from all fwmark 0x58 lookup 88

この接続を介していくつかのトラフィックをルーティングするiptablesルールがあります。

*mangle
-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
COMMIT

このルールは正常に動作しますが、長寿命の接続はタグを失い、最終的に高速ゲートウェイではなくデフォルトゲートウェイを介してルーティングされます。

ルールをCONNMARKに設定してみました。

-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88

パケットは表示されていますが(図を参照iptables -L -vv -t mangle)、無効なゲートウェイから送信されました。

私の問題をどのように解決できますか?私はDebianを使用しています。

根本的な問題は、ソースポート12345とソースホスト1.2.3.4へのすべての接続とその接続寿命のすべての後続のコンテンツがこのゲートウェイで開始される必要があることです。

関連トラフィックは主にUDPです。

関連情報