桥上的同步代理

桥上的同步代理

我正在尝试在桥接接口(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,http 服务器 (192.168.0.1) 连接到 eth2。

有了这些规则,当我尝试curl 192.168.0.1从客户端运行时,我遇到了超时。看来正常的tcp请求不会通过。

当我在 br0 上运行 tcpdump 时,我没有看到任何 syn-ack 和 ack 数据包。似乎所有 syn 数据包都在 synproxy 目标中丢失了。

有任何想法吗?

答案1

在发送 syn-ack 回复时,synproxy 模块会查找您的路由表。您应该添加所需的路由,以便它可以根据给定的路由发送 syn-ack 回复。

相关内容