iptables 不根据源 IP 捕获数据包

iptables 不根据源 IP 捕获数据包

我正在Debian8 上创建一个代理服务器,并尝试对DNAT从另一台服务器转发的传入数据包执行此操作。

这是我的iptables DNAT规则:

iptables -t nat -A PREROUTING -s 10.1.10.10/10 -j DNAT --to-destination 192.168.2.3 --persistent 

但是,没有检测到任何数据包并将其发送到192.168.2.3。在 中,wireshark我看到许多传入数据包的源 IP 为10.1.10.76,但它们没有获得新的目标 IP。

由于我的服务器是proxy没有interface源 IP 的10.1.10.10/10,所以我在想 iptables 是否没有监听所有数据包。

更新

看起来 nat 规则被命中,但是目标 IP 没有改变:

Every 2.0s: iptables -nvL -t nat                                                              Mon Jun 18 10:36:39 2018

Chain PREROUTING (policy ACCEPT 1647 packets, 75652 bytes)
 pkts bytes target     prot opt in     out     source               destination
  285 18890 DNAT       all  --  *      *       10.1.10.10/10       ! 10.1.10.10/10        to: 192.168.2.3 persistent

我只有和eth0,并且eth1附带一个私有 IP 和单个公共 IP。 ip route list仅包含default via 192.168.2.255

答案1

添加:

iptables -A FORWARD -d 192.168.2.3 -j ACCEPT

使其工作。显然需要允许转发数据包。

答案2

我在用

iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT

允许所有 DNAT 数据包通过,这通常是您开始使用 NAT 时想要的。

请参阅man iptables-extensions此处了解更多详情。

相关内容