原先给用户部署了ASA防火墙,给内部服务器地址做了基于端口的static映射后,内网的客户端无法使用外网地址打开内部的网站。查资料,DNS rewrite 只能在一对一的映射后面才能添加。当时我也没找到解决办法。只能给客户内网部署了一台DNS服务器。还好用户的客户端都是DHCP下发。所有内部的客户端访问自己内部的公网域名服务器都通过DNS服务器去解析为内部的地址。
昨天看到了twice nat技术,他能够解决ASA在做了映射后,无法通过outside接口公网地址来访问服务器的问题。
比如:INSIDE接口有一台服务器,IP地址为192.168.1.10,我们将这台服务器的80端口映射出去。outside接口的地址假设为200.1.1.1
object network Inside-server
host 192.168.1.10
nat (Inside,Outside) static interface service tcp 80 80
映射成功后(记得ACL要在outside进站接口上,就算映射没问题,但是外网用户因接口安全级别问题,导致无法访问内部服务器),外网用户可以通过outside接口地址加上80端口访问到我们内部的服务器。但是内网用户,却不能用200.1.1.1地址访问到我们内部服务器。
此时通过twice nat来解决这个问题:
object network inside-server
host 192.168.1.10
object network public-server
host 200.1.1.1
object service www80
service tcp destination eq 80
nat (Inside,Inside) source static any interface destination static public-server inside-server service www80 www80(对于这句话的理解,应该是只要来自INSIDE接口任何客户端去往目的地200.1.1.1的地址,并且real address是192.168.1.10的,映射的端口号为80的,那么都通过Inside的接口去访问。不知道我的理解对不对,不对的希望大家纠正。)
same-security-traffic permit intra-interface(允许从同一个接口进入的流量,也允许从同一个接口出去)
验证:
此时,内网客户端访问200.1.1.1 就可以正常访问了。
TWICE nat 还有个比较好的应用,就是policy nat ,比如说inside有一台客户机访问外网某个地址的时候,可以指定mapped address,而不是使用接口地址。
Twice nat具体是怎么工作的,望高人指点!