出力パケットをマークして、IP ルールにそれを認識させるにはどうすればよいでしょうか?

出力パケットをマークして、IP ルールにそれを認識させるにはどうすればよいでしょうか?

ルーティングが設定されています:

# ip rule

0:      from all lookup local
25555:  from all fwmark 0x3000 lookup main
32766:  from all lookup another
32767:  from all lookup default

curl http://ifconfig.io/ip25555 を機能させるために、出力 HTTP リクエスト (例 ) を 0x3000 でマークしようとしています。

# iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 0x3000

しかし、うまくいきません。何が足りないのでしょうか?

答え1

ルーティング コードが fwmark ルールをトリガーするには、デフォルト ルートが必要であることが判明しました。そうでない場合は、パケットが生成されず、直接「ネットワークに到達できません」というメッセージが表示されます。

ルール リストの末尾の nowhere にデフォルト ルートを追加することで、この奇妙なルールを回避しました。

ip route add default via 127.0.0.1 dev lo table 4222222222
ip rule add table 4222222222 priority 4294967295

関連情報