我有以下设置,最小化来解释问题:
_________
|Desktop |
----------
192.168.2.6|
|
|
------------ |------------------
--------------| Switch | | Firewall server
| ------------ |------------------
|192.168.2.110 | |
---------------- 192.168.1.11| |To ISP
| Server |--------------- ------------| |------------
---------------- 192.168.1.121 |
| |
------------
| Switch |
------------
我已将桌面上的默认网关设置为 192.168.2.110
我已将服务器上的默认网关设置为 192.168.1.11
我已在服务器和防火墙服务器上启用转发
我可以从桌面 ping 到服务器,反之亦然
我可以从服务器 ping 到防火墙服务器,反之亦然。
我也可以从桌面 ping 到 192.168.1.121。
我无法从桌面 ping 通防火墙服务器 192.168.1.11。 我尝试在所有显示的机器上刷新所有 iptables 规则。我遗漏了什么?
编辑:根据要求提供更多信息。所有机器都运行 Linux Ubuntu。桌面是开发机器。服务器运行开发服务器...Mysql、PhP、Apache 等。防火墙服务器有一组 iptables 规则,我在测试 ping 时禁用它们只是为了访问它。
答案1
192.168.2.0/24
您需要在防火墙中添加网络路由。路由应类似以下内容:
route add -net 192.168.2.0/24 gw 192.168.1.121
当数据包来自 192.168.2.0/24 网络时,防火墙不知道该将数据包发送到哪里。服务器可以 ping 通防火墙,因为它直接通过 192.168.1.121 连接。
实际上,当您尝试从桌面访问防火墙时,数据包会到达防火墙(假设服务器的默认网关也设置为防火墙 IP 192.168.1.11),但防火墙无法将其发送回桌面,因为此网络没有可用的路由。它只能将数据包转发到 ISP 的默认网关,最终将被丢弃。