我正在尝试使用本地重定向我的 Ubuntu 计算机上的端口iptables
。类似于透明代理。我想捕获任何试图离开我的系统的端口 80 并将其重定向到远程主机和端口。
我可以使用 NAT 和预路由功能来实现此目的iptables
吗?
答案1
试试这个iptables
规则:
$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80
上面说的是:
- 将以下规则添加到 NAT 表 (
-t nat
)。 - 此规则将附加 (
-A
) 到出站流量 (OUTPUT
)。 - 我们只对 TCP 流量感兴趣 (
-p tcp
)。 - 我们只对目标端口为 80 ( ) 的流量感兴趣
--dport 80
。 - 当我们匹配时,跳转到 DNAT (
-j DNAT
)。 - 将此流量路由到其他服务器的 IP @ 端口 80 (
--to-destination IP:80
)。
什么是DNAT?
DNAT
This target is only valid in the nat table, in the PREROUTING and OUTPUT
chains, and user-defined chains which are only called from those chains.
It specifies that the destination address of the packet should be modified
(and all future packets in this connection will also be mangled), and
rules should cease being examined.
参考
答案2
这可以变得更加具体,以便仅对到特定目标主机的流量进行操作。例如,当 postfix 出错并且队列中的邮件想要发送到旧的 IP 地址时。
iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25
答案3
这可以让您将端口转换为所有 IP 地址。这里的主要区别是该字段中缺少 IP 地址--to-destination
。
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80