Cisco ASA Hairpinning解决内网使用公网IP访问web服务

简介:

说来挺拗口,是大部分人都会遇到的问题。特别是没有使用单独的DMZ区对外发布服务器的人必须面对的问题。

 

情景说明:

通过Cisco ASA 5520 防火墙,使用公网IP 8.8.8.8(outside),发布了一台WEB服务器,其私网IP是192.168.1.8(inside)。

 

希望实现的目标:

公司内部(位于inside)用户计算机,想使用公网IP 8.8.8.8(或解析成公网IP的域名)访问这台(位于inside)WEB服务器。

 

默认情景下,公司内部inside计算机无法通过公网IP访问到这台inside服务器。因为思科的防火墙不允许inside进来的流量,未经其它接口出去而直接从inside返回(会被ASA直接丢弃)。

 

为实现在公司内部(inside)也能使用公网IP访问同样在inside的这台WWW服务器,思科至少有几种做法:

一是Alias + static NAT,配置别名。

原理就是内部的计算机到外部进行DNS查询时,ASA根据别名配置,将返回的公网IP替换成私网IP,这样其实内部计算机直接使用私网IP访问WWW服务器。(可以使用ping 域名查看返回的IP地址进行验证)

 

二是DNS Doctoring + static NAT。

原理同Alias,是更新版本IOS的功能。在7.0以上的版本中已不推荐使用Alias(若使用了Alias,则ASDM会提示不支持Alias而无法加载配置)。

 

三是 Hairpinning +static NAT。

原理是允许inside进来的流量,未经其它接口出去而直接从inside接口返回。

相关的命令是:same-security-traffic permit intra-interface 俗称:Hairpinning

 

为此花了两天时间琢磨了一下,才发现要7.2及以后的IOS版本才支持Hairpinning。晚上将ASA5520从7.0顺利升级到8.2,Hairpinning配置成功。

 

Hairpinning相关配置如下:

 

 

1、same-security-traffic permit intra-interface

!--- 启用Hairpinning功能,允许流量直接原路径返回。

 

2、nat (inside) 1 192.168.100.0 255.255.255.0

!--- 为内网用户访问公网定义NAT。

 

3、global (outside) 1 interface

!--- 为内网用户访问公网定义global地址。

 

4、global (inside) 1 interface

!--- 为内网用户使用Hairpinning访问内部服务器定义global地址。

 

5、static (inside,outside) 8.8.8.8 192.168.1.8 netmask 255.255.255.255

!--- 使用Static NAT映身一台服务器,公网IP 8.8.8.8,内网IP 192.168.1.8。

 

6、static (inside,inside) 8.8.8.8 192.168.1.8  netmask 255.255.255.255

!--- 为Hairpinning流量返回路径定义NAT映射:8.8.8.8 ----> 192.168.1.8。

 

7、access-list outside_access_in extended permit tcp any host 8.8.8.8 eq 80

!--- 配置ACL对外发布WWW服务,端口为80。

 

8、access-group outside_access_in in interface outside

!--- 将ACL应用到外部接口。











本文转自 qq8658868 51CTO博客,原文链接:http://blog.51cto.com/hujizhou/1869048,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
XML JSON 数据安全/隐私保护
Web服务
【10月更文挑战第18天】Web服务
51 9
|
2月前
|
XML JSON 安全
Web服务是通过标准化的通信协议和数据格式
【10月更文挑战第18天】Web服务是通过标准化的通信协议和数据格式
156 69
|
19天前
|
Go UED
Go Web服务中如何优雅平滑重启?
在生产环境中,服务升级时如何确保不中断当前请求并应用新代码是一个挑战。本文介绍了如何使用 Go 语言的 `endless` 包实现服务的优雅重启,确保在不停止服务的情况下完成无缝升级。通过示例代码和测试步骤,详细展示了 `endless` 包的工作原理和实际应用。
37 3
|
20天前
|
JSON Go UED
Go Web服务中如何优雅关机?
在构建 Web 服务时,优雅关机是一个关键的技术点,它确保服务关闭时所有正在处理的请求都能顺利完成。本文通过一个简单的 Go 语言示例,展示了如何使用 Gin 框架实现优雅关机。通过捕获系统信号和使用 `http.Server` 的 `Shutdown` 方法,我们可以在服务关闭前等待所有请求处理完毕,从而提升用户体验,避免数据丢失或不一致。
18 1
|
26天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
2月前
|
XML JSON 安全
定义Web服务
【10月更文挑战第18天】定义Web服务
63 12
|
29天前
【Azure App Service】PowerShell脚本批量添加IP地址到Web App允许访问IP列表中
Web App取消公网访问后,只允许特定IP能访问Web App。需要写一下段PowerShell脚本,批量添加IP到Web App的允许访问IP列表里!
|
2月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
29 1
|
2月前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
2月前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
29 0