内网客户 通过 公网域名/ip 访问内网web服务器 出错

这篇博客介绍了在内网客户端和WWW服务器都位于NAT后的环境中,如何通过启用DNS修正来解决客户端无法访问WWW服务器的问题。客户端的DNS请求被外部DNS服务器响应为WWW服务器的映射公共IP,导致访问失败。通过在ASA设备上配置"dns"关键字,可以修正DNS响应,将A记录指向内网IP,从而允许客户端正确连接到内网Web服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一内部局域网中,
client  内网地址为 10.0.0.2    
web  服务器内网地址为 10.0.0.1    外网地址为  211.6.15.1    域名为  xx.love.com

问题:在内网10.0.0.2的机器上访问   外网地址 211.6.15.1 或者域名  xx.love.com  都无法访问,


 解决原理:就是内网用户向外网用户发送DNS查询,外网DNS会给内网用户回复,如果防火墙上面加了DNS参数,防火墙就会监控DNS回包,如果发现DNS回包的地址是映射到内网了,那么防火墙就会修改DNS回包把answer的地址改为内网的地址。


一些解决方法:

1.
        ASA5500新版本开发了这个FEATURE能解决这个问题,以前的PIX是不能解决这个问题的,
因为你这个现象是数据流从同一个接口出去再从同一个接口再回来,防火墙认为这是攻击行为,理所当然地拒绝掉。
用下面这个命令:
same-security-traffic permit  intra-interface
!##
intra-interface 
Permits communication in and out of the same interface. 
允许数据流能够从同一个接口进出。


2.
         启用ASA的  DNS Rewrite 技术, 在你NAT 后加上DNS关键字,
  例如 Static (Inside, outside) 202.100.1.2 192.168.1.2 dns ,
 对于内部PC访问服务器发出的DNS查询解析到地址,ASA帮忙转换成内部服务器地址,再将查询结果发给内部PC。
asa82cfg.pdf 第460页。


3.
       通过公网dns访问自己内部的web服务器的这种模式有两种模式,一种是WEB服务器放在自己的内网,一种是 web服务器防在自己的DMZ区,两种alias用法稍微有不一样。
如果是在内网的话,用法如下
   alias (inside)  服务器内网地址   服务器公网地址
如果是在dmz区,用法如下
   alias (inside)  服务器外网地址    服务器DMZ地址 


4.
可以修改客户机10.0.0.2的 hosts文件,添加一个映射
 linux客户机:
     文件位置   /etc/hosts
   查看一下  cat /etc/hosts
   127.0.0.1  localhost  
    添加以下一行命令
    10.0.0.1 xx.love.com

 windows客户机:
 文件位置   C:/Windows/System32/drivers/etc/hosts
  查看文件
   # For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com   
添加一下一行命令
10.0.0.1 xx.love.com


5.最简单的方法
   直接访问内网地址吧!!!  10.0.0.1   



详细了解  请看思科官网 讲解:

背景信息

在典型的 DNS 交换中,客户端将 URL 或主机名发送到 DNS 服务器,以确定该主机的 IP 地址。DNS 服务器接收请求,查找该主机的“名称到 IP 地址”映射,然后将包含 IP 地址的 A 记录提供给客户端。虽然此过程在许多情况下都进行得很好,但也会发生一些问题。如果客户端和客户端尝试访问的主机均位于 NAT 后面的同一专用网络上,但客户端使用的 DNS 服务器位于另一个公共网络上,则会发生这些问题。

方案:两个 NAT 接口(内部、外部)

拓扑

在此场景中,客户端和客户端尝试访问的 WWW 服务器均位于 ASA 的内部接口上。将动态 PAT 配置为允许客户端对 Internet 进行访问。将带有 access-list 的静态 NAT 配置为不但允许 Internet 主机访问 WWW 服务器,而且允许 WWW 服务器访问 Internet。

内网客户 通过 公网域名/ip  访问内网web服务器 出错 - 朝鲜程序员 - 朝鲜程序员的博客

此图说明了这种情况。在这种情况下,地址为 192.168.100.2 的客户端希望使用 server.example.com URL 来访问地址为 192.168.100.10 的 WWW 服务器。客户端的 DNS 服务由地址为 172.22.1.161 的外部 DNS 服务器提供。由于 DNS 服务器位于另一个公共网络上,因此,它不知道 WWW 服务器的专用 IP 地址。然而,它知道 WWW 服务器的映射地址 172.20.1.10。因此,DNS 服务器包含 server.example.com 到 172.20.1.10 的“IP 地址到名称”映射。

问题:客户端无法访问 WWW 服务器

如果在这种情况下未启用 DNS 修正或其他解决方案,则当客户端发送获取 server.example.com 的 IP 地址的 DNS 请求时将无法访问 WWW 服务器。这是因为,客户端接收的 A 记录包含 WWW 服务器的映射的公共地址:172.20.1.10。当客户端尝试访问此 IP 地址时,安全设备会丢弃数据包,因为它不允许在同一个接口上重定向数据包。当 DNS 修正处于禁用状态时配置的 NAT 部分如下所示:

ciscoasa(config)#show running-config
: Saved
:
ASA Version 7.2(1)
!
hostname ciscoasa


!--- Output suppressed.

access-list OUTSIDE extended permit tcp any host 172.20.1.10 eq www


!--- Output suppressed.

global (outside) 1 interface
nat (inside) 1 192.168.100.0 255.255.255.0
static (inside,outside) 172.20.1.10 192.168.100.10 netmask 255.255.255.255
access-group OUTSIDE in interface outside 


!--- Output suppressed.

当 DNS 修正处于禁用状态时 ASDM 中的配置如下所示:

内网客户 通过 公网域名/ip  访问内网web服务器 出错 - 朝鲜程序员 - 朝鲜程序员的博客

 下面是当 DNS 修正处于禁用状态时事件的数据包捕获:

  1. 客户端发送 DNS 查询。

    No.     Time      Source          Destination       Protocol Info
    1       0.000000  192.168.100.2   172.22.1.161      DNS      Standard query 
                                                                 A server.example.com
    
    Frame 1 (78 bytes on wire, 78 bytes captured)
    Ethernet II, Src: Cisco_c8:e4:00 (00:04:c0:c8:e4:00), Dst: Cisco_9c:c6:1f 
    (00:0a:b8:9c:c6:1f)
    Internet Protocol, Src: 192.168.100.2 (192.168.100.2), Dst: 172.22.1.161 
    (172.22.1.161)
    User Datagram Protocol, Src Port: 50879 (50879), Dst Port: domain (53)
    Domain Name System (query)
        [Response In: 2]
        Transaction ID: 0x0004
        Flags: 0x0100 (Standard query)
        Questions: 1
        Answer RRs: 0
        Authority RRs: 0
        Additional RRs: 0
        Queries
            server.example.com: type A, class IN
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
    
  2. DNS 查询由 ASA 执行 PAT 并被转发。请注意,数据包的源地址已更改为 ASA 的外部接口。

    No.     Time      Source           Destination         Protocol Info
    1       0.000000  172.20.1.2       172.22.1.161        DNS      Standard query 
                                                                    A server.example.com
    
    Frame 1 (78 bytes on wire, 78 bytes captured)
    Ethernet II, Src: Cisco_9c:c6:1e (00:0a:b8:9c:c6:1e), Dst: Cisco_01:f1:22 
    (00:30:94:01:f1:22)
    Internet Protocol, Src: 172.20.1.2 (172.20.1.2), Dst: 172.22.1.161 
    (172.22.1.161)
    User Datagram Protocol, Src Port: 1044 (1044), Dst Port: domain (53)
    Domain Name System (query)
        [Response In: 2]
        Transaction ID: 0x0004
        Flags: 0x0100 (Standard query)
        Questions: 1
        Answer RRs: 0
        Authority RRs: 0
        Additional RRs: 0
        Queries
            server.example.com: type A, class IN
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
  3. DNS 服务器用 WWW 服务器的映射地址予以回复。

    No.     Time      Source          Destination       Protocol Info
    2       0.005005  172.22.1.161    172.20.1.2        DNS      Standard query response 
                                                                 A 172.20.1.10
    
    Frame 2 (94 bytes on wire, 94 bytes captured)
    Ethernet II, Src: Cisco_01:f1:22 (00:30:94:01:f1:22), Dst: Cisco_9c:c6:1e 
    (00:0a:b8:9c:c6:1e)
    Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 172.20.1.2 
    (172.20.1.2)
    User Datagram Protocol, Src Port: domain (53), Dst Port: 1044 (1044)
    Domain Name System (response)
        [Request In: 1]
        [Time: 0.005005000 seconds]
        Transaction ID: 0x0004
        Flags: 0x8580 (Standard query response, No error)
        Questions: 1
        Answer RRs: 1
        Authority RRs: 0
        Additional RRs: 0
        Queries
            server.example.com: type A, class IN
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
        Answers
            server.example.com: type A, class IN, addr 172.20.1.10
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
                Time to live: 1 hour
                Data length: 4
                Addr: 172.20.1.10
    
  4. ASA 撤消 DNS 响应的目标地址的转换并将数据包转发到客户端。请注意,在未启用 DNS 修正的情况下,应答中的地址仍然是 WWW 服务器的映射地址。

    No.     Time      Source         Destination         Protocol Info
    2       0.005264  172.22.1.161   192.168.100.2       DNS      Standard query response
                                                                  A 172.20.1.10
    
    Frame 2 (94 bytes on wire, 94 bytes captured)
    Ethernet II, Src: Cisco_9c:c6:1f (00:0a:b8:9c:c6:1f), Dst: Cisco_c8:e4:00 
    (00:04:c0:c8:e4:00)
    Internet Protocol, Src: 172.22.1.161 (172.22.1.161), Dst: 192.168.100.2 
    (192.168.100.2)
    User Datagram Protocol, Src Port: domain (53), Dst Port: 50879 (50879)
    Domain Name System (response)
        [Request In: 1]
        [Time: 0.005264000 seconds]
        Transaction ID: 0x0004
        Flags: 0x8580 (Standard query response, No error)
        Questions: 1
        Answer RRs: 1
        Authority RRs: 0
        Additional RRs: 0
        Queries
            server.example.com: type A, class IN
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
        Answers
            server.example.com: type A, class IN, addr 172.20.1.10
                Name: server.example.com
                Type: A (Host address)
                Class: IN (0x0001)
                Time to live: 1 hour
                Data length: 4
                Addr: 172.20.1.10
    
  5. 此时,客户端尝试访问地址为 172.20.1.10 的 WWW 服务器。ASA 将为此通信创建连接项。然而,因为它不允许数据流从内部流到外部再流回内部,所以连接会超时。ASA 日志显示以下内容:

    %ASA-6-302013: Built outbound TCP connection 54175 for 
    outside:172.20.1.10/80 (172.20.1.10/80) to inside:192.168.100.2/11001 
    (172.20.1.2/1024)
    
    %ASA-6-302014: Teardown TCP connection 54175 for outside:172.20.1.10/80 to 
    inside:192.168.100.2/11001 duration 0:00:30 bytes 0 SYN Timeout
    

解决方案:“dns”关键字

使用“dns”关键字进行 DNS 修正
### 多通道 IIS 配置与实现方法 #### 1. 使用多个 IP 地址配置多通道 为了使 IIS 支持多通道访问,可以为每台 Web 服务器分配多个 IP 地址。这允许不同的网站绑定到不同 IP 上运行,从而实现物理隔离并增强性能。 对于 Windows Server 2003 和 IIS 6.0 来说,可以通过网络适配器设置来增加额外的 IP 地址[^1]。一旦设置了这些地址,则可以在 IIS 中分别为各个站点指定对应的 IP 绑定: ```powershell # 设置新的IP地址 (假设使用PowerShell命令行工具) New-NetIPAddress -InterfaceAlias "Ethernet" -IPv4Address "192.168.1.101" -PrefixLength 24 ``` #### 2. 利用主机头名区分不同站点 除了基于 IP 的分离外,还可以利用 DNS 解析和 HTTP 请求中的 Host 字段来进行逻辑上的分隔。当客户端发起请求时,IIS 可依据所携带的目标域名将流量导向相应的虚拟主机实例。 在 IIS 管理界面里编辑目标站点属性,并为其设定唯一的主机头名称即可完成此操作: ![Host Header Configuration](https://example.com/host_header_config.png) #### 3. 实现 SSL/TLS 加密下的多通道支持 如果希望在同一硬件平台上托管多个 HTTPS 协议服务而不会造成冲突的话,那么就需要考虑如何处理 SSL 证书关联问题了。通常有两种方案可供选择: - **SNI(Server Name Indication)** 技术:这是一种较新版本 TLS/SSL 握手过程中引入的功能,它能让浏览器告知服务器自己想要连接的具体域名,进而让后者返回匹配的那个公私钥对儿给前者验证身份。不过需要注意的是 SNI 并不是所有旧版操作系统都兼容良好。 - 对于不完全支持 SNI 的场景来说,最稳妥的办法还是继续沿用独立 IP 方案——即每个启用 HTTPS 的应用都要独占一个公网 IPv4 或者至少是内网静态路由可达的内部 IP 资源[^4]。 #### 4. 自动化批量部署与维护 考虑到实际生产环境中可能涉及大量相似甚至相同的配置项调整工作量巨大且容易出错的情况,因此建议采用 PowerShell Scripting 或其他 DevOps 工具链(比如 Ansible、Chef)来自动生成所需变更脚本或直接执行远程命令集以达到高效运维的目的。 ```powershell # 创建一个新的IIS站点并通过Powershell自动加载初始配置文件 Import-Module WebAdministration New-IISSite -Name "MySite" -BindingInformation "*:80:" -PhysicalPath C:\inetpub\wwwroot\Mysite Set-ItemProperty IIS:\Sites\MySite -name bindings.collection -value @{protocol="http";bindinginformation="*:80:"} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值