我目前将 Cisco ASA 5505 防火墙配置为将端口 80 从外部接口转发到我的 dmz 接口上的主机。我还需要允许我内部界面上的客户端通过在浏览器中输入公共 ip / dns 记录来访问 dmz 中的主机。我可以按照此处的说明进行操作,从而得到以下配置:
static (dmz,outside) tcp interface www 192.168.1.5 www netmask 255.255.255.255
static (dmz,inside) tcp 74.125.45.100 www 192.168.1.5 www netmask 255.255.255.255
74.125.45.100
(我的公网IP在哪里,192.168.1.5
是dmz主机的IP)
这很好用,除了我的网络有一个动态的公共 IP,因此一旦我的公共 IP 发生变化,这个配置就会中断。有没有办法用动态 ip 做我想做的事?
注意:添加内部 DNS 记录并不能解决我的问题,因为我有多个 dmz 主机映射到公共 IP 上的不同端口。
我想知道为什么内部接口后面的客户端必须输入公共 IP,他们使用 DMZ 主机的私有 IP 会不会更容易。然后你可以做一个正常的 nat 例如。
静态 (dmz,inside) tcp (Inside IP Range) www 192.168.1.5 www 网络掩码 255.255.255.255
据我所知,您的问题是,当客户端发出 DNS 请求时,来自 Internet 的 DNS 服务器会将 ASA 的当前外部 IP 地址返回给他。之后,客户端尝试连接到该 IP,因此数据包被发送到外部接口,并且必须返回到 DMZ 接口。
思科防火墙有一个问题,默认情况下,它们永远不会从它们进入的同一个界面中提供一个包。自 7.2 版本以来,思科使用以下 cli 命令解决了这个问题:
ASA(config)# same-security-traffic permit intra-interface
据我了解,您通过添加第二个静态 NAT 绕过了该行为。在我看来,如果您删除第二个 NAT 条目并激活 same-security-traffic 选项,它应该可以工作。
但我强烈建议您购买公共 IP :-)
我想你会得到的唯一答案是不。
ACL 或 NAT 语句无法解释 IP 地址的变化,它只是不可能发生。
实际上,您可以使其与内部 DNS 更改一起使用。
例如,假设您有几个服务:
假设您
example.org
使用动态 DNS 提供程序指向您不断变化的公共 IP 地址。example.org
您可以运行一个指向192.168.1.254的内部名称服务器,并使用以下命令:然后您将您的客户指向您的内部名称服务器并使用它。
需要注意的是,对于您添加的每个新服务,您必须为内部网络设置一个静态,为外部接口设置一个静态,并允许来自内部和外部的 ACL。但是,当您的公共 IP 发生变化时,您的流量仍会流向您希望它去的地方。