![iptables 问题](https://linux22.com/image/541638/iptables%20%E9%97%AE%E9%A2%98.png)
我有一个小型网络,有一个有效的 IP 和一个带有 3 个网络接口(LAN、WAN、DMZ)的防火墙。
- 我想在此有效 IP 上启用 PAT,以将 http 流量重定向到我的 DMZ 中的服务器。(完成)
- 我想在这个 IP 上启用 MASQ,以阻止来自我的 LAN 的流量(已完成)
- 我也想从我的 LAN 访问 DMZ 上的 http 服务器。(部分)
问题:
在上述情况下,我无法从 LAN 访问 DMZ 中的 http 服务器,因为它具有 MASQ 使用的 IP(我拥有的唯一有效 IP)。解决这个问题的最佳选择是什么?
网络接口:
- eth0(广域网)
- eth1(DMZ)
eth2(局域网)
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -A FORWARD --o eth1 -d 2.2.2.2 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -p tcp --dport 80 -j DNAT --to 2.2.2.2
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A 转发 -i eth1 -o eth0 -j 接受
/sbin/iptables -A 转发 -i eth2 -o eth0 -j 接受
答案1
我对您的解释有点困惑。因此,我在此仅使用一个示例场景:
- eth0 = WAN = 123.11.22.33
- eth1 = DMZ = 192.168.1.0/24
- eth2 = LAN = 172.16.0.0/16
并且给出了网络服务器192.168.1.55
# First, allow LAN & DMZ to access the outside world
-t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Now, allow outside access to the webserver
-t nat -A PREROUTING -i eth0 -d 123.11.22.33 -p tcp --dport 80 -j DNAT --to 192.168.1.55:80
# Finally, allow forwarding
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -d 191.168.1.55 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i eth2 -j ACCEPT
如果您需要更高的安全性,请随意扩展上面的最后两行,例如:
-N eth1_fwd
-N eth2_fwd
-A FORWARD -i eth1 -g eth1_fwd
-A FORWARD -i eth2 -g eth2_fwd
-A eth1_fwd -s ...... -j ACCEPT
...
-A eth2_fwd -s ...... -j ACCEPT
...
希望这能有所帮助。别忘了添加通向 eth0 默认网关的默认路由 :)
编辑:哎呀,后面的规则中的 iface 错误
答案2
听起来你只是有标准发夹型NAT问题。
解决该问题的一个常见方法是为 DMZ 中的主机分配一个位于不同子网的私有 IP,并设置拆分 DNS。您将私有地址提供给内部主机,外部主机将获得公共地址。然后,您有防火墙规则允许内部客户端访问私有 DMZ 子网,并且您有一个 NAT 和规则,用于从地址/端口转发到 DMZ 中的 Web 服务器。
答案3
举一个可能由拓扑结构引起的问题的例子 - 如果您的内部网络 DMZ 和 LAN 使用重叠子网,那么这可能会导致您看到的问题,因为 LAN 机器不会将发往 DMZ 机器的数据包发送到防火墙/默认路由(因为它会认为 DMZ 机器是本地的)。
话虽如此,您说从 LAN 浏览 1.1.1.1:80 不起作用。这是有道理的,因为您的 DNAT 规则仅限于来自 eth0(-i eth0)的数据包,因此它不会对来自 eth2 并前往 1.1.1.1:80 的数据包进行 DNAT。我认为没有充分的理由将该 PREROUTING 规则限制为特定的以太网接口。
从 LAN 主机访问 2.2.2.2:80 有效吗?