在我的网络中我想将端口从代理转发到服务器,
因此防火墙将可以到达其 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”。