我正在Debian
8 上创建一个代理服务器,并尝试对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
此处了解更多详情。