使用 nat 规则将 80/443 流量转换为 Web 服务器,但内部用户无法使用外部 IP/域名访问它

使用 nat 规则将 80/443 流量转换为 Web 服务器,但内部用户无法使用外部 IP/域名访问它

我正在使用 Cisco ASDM for ASA

我的内部网络称为 soa。我的外部接口称为 outside。假设我的 ISP isp 给我的外部 IP 是 yyyy。我的网络内部有一个 Web 服务器,其静态 IP 为 xxx110。我配置了 2 条静态 nat 规则(一条用于 http,另一条用于 https)。

源是 xxx110。接口是外部,服务(http 或 https)。

也许我做错了,但是当我运行数据包跟踪器时,我选择外部接口,对于源 IP,我使用了 8.8.8.8,而目标 IP 是我的外部 IP 地址,yyyy

当我运行它时,它显示数据包已成功遍历,共计 9 个步骤。

对于我的其他测试,我切换到 soa 接口,输入该网络上的 ip,并保持目的地不变。此测试有 2 个步骤,然后在我的访问列表中失败。

当我看到失败的规则时,它是我捕获的全部内容,即来源:任何目的地:任何,服务:ip 操作:拒绝。

我需要制定什么规则来允许我的 soa 网络访问通过我的外部 IP 地址出去和返回(当然,使用我的 DNS 中附加到该 IP 的域名)?

答案1

不确定 Cisco 是否适用,但在 Linux 和 *BSD 上,这行不通。即使您尝试从内部网络连接到外部地址,数据包也不会通过外部接口,因为内核太聪明了,会注意到自己的地址并消耗数据包。由于数据包永远不会通过您的外部接口,因此端口转发的 NAT 规则永远不会适用。

http://www.openbsd.org/faq/pf/rdr.html#reflect有关此内容的一些(BSD 偏向的)文档。

答案2

内部 LAN 的外部 NAT 查找不适用于 BSD 或 LINUX。但是有一种方法可以欺骗 Cisco ASA,尽管最佳实践表明不能这样做。如果您绝对需要它,请使用它。Cisco ASA 8.0.x 的命令语法是:

static (dmz,outside) <YOUR-PUBLIC-IP-ADDR> <YOUR-DECLARED-HOST-NAME> netmask 255.255.255.255

static (dmz,inside) <YOUR-PUBLIC-IP-ADDR> <YOUR-DECLARED-HOST-NAME> netmask 255.255.255.255

答案3

通过 NAT 路由器使用公共 IP 地址访问内部服务器通常称为 NAT 反射。

大多数路由器(从基本的家用路由器到价值 1000 美元以上的路由器)都支持此功能。思科不支持。

最好的解决方案是分割 DNS - 设置一个内部 DNS 服务器,该服务器具有服务器的私有 IP 地址而不是公共 IP 地址,因此 LAN 上的客户端仍然可以访问。

相关内容