如何在IOS 8.3中使用NAT发夹(特别是Cisco ASA 5505上的9.1(2)).
谢谢!
更新:
这是我发布到思科支持网站的内容……也许附加信息使我的情况更加清晰
我似乎无法让nat发夹工作……互联网上的大多数说明都指出了如何使用8.3之前的命令执行此操作.
我尝试过以下方法:
same-security-traffic permit intra-interface asa-Box(config-network-object)# object network my-inside-address-obj asa-Box(config-network-object)# nat (inside,inside) static my-outside-address-obj
这没用.
然后我补充说:
access-list hairpin_allow extended permit tcp object Internal_NAT_Range object External_NAT_Range
同
access-group hairpin_allow in interface inside
这也没有用(试图在这里显示尽职调查……).
然后我尝试了:
nat (inside,inside) source static Internal_NAT_Range Internal_NAT_Range destination static External_NAT_Range External_NAT_Range
还是不行.
最后,我执行了这些步骤(见here):
“9.为了避免由于内部发生的路由的非对称性导致的数据包丢失,我们需要ASA绕过对此特定流量的状态检查.为此,我们需要配置以下内容:
ASA(config)#access-list tcp_bypass扩展许可tcp对象Internal_NAT_Range对象External_NAT_Range
!—配置访问列表以指定TCP流量
!—需要通过检查来提高性能.
!—配置类映射并为其指定匹配参数
!—类地图匹配有趣的流量.
ASA(config)#class-map tcp_bypass
ASA(config-cmap)#description“绕过状态防火墙的TCP流量”
ASA(config-cmap)#match access-list tcp_bypass
!—配置策略映射并指定类映射
!—这个类映射的策略映射.
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
!—使用set connection advanced-options tcp-state-bypass
!—命令以启用TCP状态旁路功能.
ASA(config-pmap-c)#set connection advanced-options tcp-state-bypass
!—使用service-policy policymap_name [global | interface intf]
!—命令在全局配置模式下激活策略映射
!—全局在所有接口或目标接口上.
ASA(config-pmap-c)#service-policy tcp_bypass_policy inside“
再说一遍……
我的配置(清洁/之前的任何一个)如下…
... object network External_NAT_Range range x.x.56.3 x.x.59.255 object network Internal_NAT_Range range 172.17.56.3 172.17.59.255 object network InternalIPs subnet 172.17.56.0 255.255.248.0 object network VpnIPs subnet 172.17.63.0 255.255.255.0 object network InternalIPs_OutOnly range 172.17.60.1 172.17.62.254 ... nat (inside,outside) source static InternalIPs InternalIPs destination static VpnIPs VpnIPs no-proxy-arp route-lookup description Un-Nats VPN IPs nat (inside,outside) source dynamic InternalIPs_OutOnly interface description Allows remaining interior network to access the Internet ! object network Internal_NAT_Range nat (inside,outside) static External_NAT_Range net-to-net access-group outside_access_in in interface outside route outside 0.0.0.0 0.0.0.0 x.x.56.1 1 ...
我只是希望能够从内部IP(例如172.17.56.8)访问外部资源,例如http://x.x.56.5
我试图使用DNS篡改.配置更简单,更有效,但是当PTR请求来自互联网时,DNS Doctoring似乎也转换了出站响应以反映我的内部IP,这显然是非常错误的……
您的任何帮助思科专业人士将不胜感激!
谢谢!
解决方法
假设所有其他配置都是正确的,例如路由,访问列表等,您仍然需要使用该命令
same-security-traffic permit intra-interface
为了使来自内部客户端的流量到外部映射的地址允许重新转换为内部服务器地址,即使其“发夹”.
要将内部地址i.i.i.i端口映射到外部地址x.x.x.x,您将在8.3之前使用该命令
static (inside,inside) x.x.x.x i.i.i.i
为了使用从dns获得的外部地址允许内部主机的nat发夹到内部服务器.这与常规的“un-hairpinned”语法不同
static (inside,outside) x.x.x.x i.i.i.i
并且自然也会出现以允许外部客户端使用公共IP调用服务器.
在版本8.3及更高版本中,此语法已被重写,并且ASA的相应发夹端口映射指令将如下所示:
asa-Box(config)# object network my-outside-address-obj asa-Box(config-network-object)# host x.x.x.x asa-Box(config-network-object)# object network my-inside-address-obj asa-Box(config-network-object)# host i.i.i.i asa-Box(config-network-object)# nat (inside,inside) static my-outside-address-obj
这也可以通过常规的“非发夹”指令来补充.
这似乎是我能找到的唯一真正的区别,但我当然非常好奇它在实践中是如何运作的.
我在这里找到了用于端口地址转换的9.1命令语法(即对应于旧的静态命令):
http://www.cisco.com/en/US/docs/security/asa/asa91/configuration/firewall/nat_objects.html#wp1106703
我发现了一个非常出色的发夹语法历史指南,显示了相同的示例设计,因为它将在不同版本中配置:
http://nat0.net/cisco-asa-hairpinning/
祝你好运!