ブリッジインターフェイス(eth1とeth2の間)のファイアウォールにsynproxyを実装しようとしています。私のルールは次のとおりです。
/usr/local/sbin/iptables -t raw -i PREROUTING -i br0 -m physdev --physdev-in eth1 -p tcp -m tcp --syn -j CT --notrack
/usr/local/sbin/iptables -A FORWARD -i br0 -m physdev --physdev-in eth1 -p tcp -m tcp -m state --state INVALID,UNTRACKED -j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose
eth1に接続されたクライアントとeth2に接続されているhttpサーバー(192.168.0.1)があります。
これらのルールを適用すると、curl 192.168.0.1
クライアントで実行しようとするとタイムアウトが発生します。通常のTCP要求は進まないようです。
br0 で tcpdump を実行すると、syn-ack パケットと ack パケットは表示されません。すべての syn パケットが synproxy 宛先から失われたようです。
どんなアイデアがありますか?
ベストアンサー1
Syn-ack応答を送信すると、synproxyモジュールはルーティングテーブルを見つけます。特定のパスに基づいてsyn-ack応答を送信できるように、必要なパスを追加する必要があります。