采用dynamicIP的思科ASA Hairpinning

我目前有我的思科ASA 5505防火墙configuration为从外部接口转发端口80到我的dmz接口上的主机。 我还需要允许我的内部接口上的客户端通过在其浏览器中input公共ip / dnslogging来访问dmz中的主机。 按照这里的说明,我可以做到这一点 ,导致以下configuration:

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)

这个工作很好,除了我的networking有一个dynamic的公共IP,并且这个configuration因此会在我的公共IP改变时立即中断。 有没有办法做到我想用dynamicIP?

注意:添加内部DNSlogging不会解决我的问题,因为我有多个dmz主机映射到公共IP上的不同端口。

我想知道为什么内部接口后面的客户端必须input公共IP,他们使用DMZ主机的私有IP是不是更容易。 那么你可以做一个正常的NAT。

静态(dmz,内部)tcp(内部IP范围)www 192.168.1.5 www netmask 255.255.255.255

据我所知,问题在于,当客户端发出DNS请求时,来自Internet的DNS服务器将他当前的ASA外部IP地址返回给他。 之后,客户端尝试连接到该IP,因此一个数据包被发送到外部接口,并且必须返回到DMZ接口。

思科防火墙有一个问题,默认情况下,他们从来没有给出一个包,他们从中获得的同一个接口。思科解决了自7.2版本以后的cli命令:

ASA(config)# same-security-traffic permit intra-interface

所以据我了解,你通过添加第二个静态NAT绕开execealy该行为。 在我看来,如果你删除第二个NAT条目,并启用相同的安全stream量选项,它应该工作。

但是我强烈build议你买一个公共IP 🙂

我认为你唯一的答案是否定的。

ACL或NAT语句无法解释变化的IP地址,这是不可能的。

实际上,您可以使其与内部DNS更改一起工作。

比方说,你有几个服务:

 static (dmz,outside) tcp interface www 192.168.1.5 www netmask 255.255.255.255 static (dmz,outside) tcp interface smtp 192.168.1.6 www netmask 255.255.255.255 static (dmz,outside) tcp interface ftp 192.168.1.9 www netmask 255.255.255.255 

假设您有example.org指向使用dynamicDNS提供商的您不断变化的公共IP地址。

你可以运行一个名字服务器,指向example.org ,例如192.168.1.254,然后使用下面的命令:

 static (dmz,inside) tcp 192.168.1.254 www 192.168.1.5 www netmask 255.255.255.255 static (dmz,inside) tcp 192.168.1.254 smtp 192.168.1.6 www netmask 255.255.255.255 static (dmz,inside) tcp 192.168.1.254 ftp 192.168.1.9 www netmask 255.255.255.255 

然后你把你的客户指向你的内部名字服务器,然后就可以了。

需要注意的是,对于添加的每个新服务,您都必须为内部networking设置静态,为外部接口设置静态,并在内部和外部允许ACL。 但是,当您的公共IP更改时,您的stream量仍将继续stream向您想要的位置。