iptables localport 转发可以吗?

iptables localport 转发可以吗?

在我的网络中我想将端口从代理转发到服务器,

因此防火墙将可以到达其 HTTP 端口,因为在防火墙中转发被禁用。

它看起来像互联网路由器>防火墙>代理>服务器

-> Router   10.0.1.1 <-> 10.0.1.2  Firewall ->
-> Firewall 10.0.2.1 <-> 10.0.2.2  Proxy    ->
-> Proxy    10.0.3.1 <-> 10.0.3.2  Server

防火墙可以连接到代理,但不能连接到服务器,因为路由和转发被禁用。

我希望路由器连接到代理:80,并将其转发到服务器:80

我已经在“代理”中尝试过这个规则,但没有用

#!/bin/sh

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -F
iptables -t nat -F
iptables -X

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dport 80 -j SNAT --to-source 10.0.2.1

有什么建议么?

答案1

我没有看到有关设备上存在的路由的任何信息。如果服务器没有到达防火墙的路由,或者有指向 10.0.3.1 以外的任何地址的路由,则回复将无法返回防火墙。

此外,假设防火墙发起与代理的连接,则源 IP 地址将为 10.0.2.1,并且第二个 iptables 规则不会改变任何内容。

如果您希望仅通过代理上的 iptables 进行此项工作,则应使用以下规则:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dport 80 -j SNAT --to-source 10.0.3.1

或者更好的是,让系统选择 SNAT 地址:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.0.3.2:80
iptables -t nat -A POSTROUTING -p tcp -d 10.0.3.2 --dport 80 -j MASQUERADE

通常,最好准确指定应该匹配的流量,因此您可以在第一条规则中添加源/目标地址,除非您真正的意思是“将所有 http 流量发送到 10.0.3.2”。

相关内容