端口回流与dns-map与域内NAT

端口回流与dns-map与域内NAT

回流的概念:

端口回流与dns-map与域内NAT









 

 

端口回流&DNS-map&域内NAT

组网分析:

某企业内部一台主机建了个WEB服务站点端口80,然后在网关Router上映射80端口到WebServer80端口,这样外网上上就能以公网地址202.38.1.1:80的地址访问到WebServer的站点了。

但是Host A通过公网地址却无法访问服务器,如果Router支持端口回流的话那么HostA就可以通过公网地址访问内部服务器。

原因分析:

端口回流与dns-map与域内NAT

 

 

如上图可以很明显的看出报文①发送到RouterRouter根据NAT映射将目标地址改为10.110.10.1端口回流与dns-map与域内NAT10.110.10.1发送报文②。但是源地址不变仍为10.110.10.3端口回流与dns-map与域内NAT10.110.10.3。而后Web Server接收报文②后,发回③报文给HostA。注意此报文发送没有经过Router而是直接走二层。所以就导致了一个问题,HostA的请求目标为202.38.1.1,但是回应的源地址为10.110.10.1端口回流与dns-map与域内NAT10.110.10.1。所以导致会话不能建立。(但是ICMP是可以的,因为ICMP是基于进程号—sequence number)

解决方法:

1)     Host AWeb Server的地址设置为不同网段,这一步可以通过划分vlan解决,即服务器和主机在不同的网段。或者可以在路由器的内网接口下配置sub地址,也能解决此问题。只要数据流经过Router就可以正常访问。

2)     路由器支持端口回流,其原理如下:

当路由器收到Host A发送的向202.38.1.1发送的TCP请求报文时,路由器将目标地址改为NAT的映射后的私网地址(10.110.10.1端口回流与dns-map与域内NAT10.110.10.1),端口为80。同时也把请求报文的源地址改为内部网关的地址即10.110.10.10端口回流与dns-map与域内NAT10.110.10.10,端口1025。之后Web服务器收到此请求报文。并对其回应。因为报文的源地址为网关地址。所以此报文会再经过网关。从而再次转换。达到HostA可以正常访问服务器的目的。其实这一步也可以理解为基于源地址转换的NAT。即本文后面要说到的域内NAT

 

为什么说是端口回流,因为在大多数soho级的路由器中-D-Link的路由有一个专门的选项为“端口回流”(此特性要看具体型号)如下:

 

 端口回流与dns-map与域内NAT

通过NAT完成“端口回流“

 

但是在中高端企业级路由器上则没有这么一说。因为此功能完全可以由路由器NAT来完成。假设RouterH3C的路由器。配置如下:

acl number 2000

 rule 10permit source 10.110.10.0 0.0.255.255

 rule 15deny

#

acl number 3000

 rule 10permit ip source 10.110.10.0 0.0.255.255 destination 10.110.10.10端口回流与dns-map与域内NAT10.110.10.10

 rule 15 denyip

#

interface GigabitEthernet1/1

description inside

 nat outbound2000(此处也可用acl 3000)

 nat serverprotocol icmp global 202.38.1.1 inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1

 nat serverprotocol tcp global 202.38.1.1 telnet inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1telnet

 nat serverprotocol tcp global 202.38.1.13389端口回流与dns-map与域内NAT202.38.1.13389 inside 10.110.10.1 3389

 ip address10.110.10.10 255.255.0.0

#

interface GigabitEthernet1/2

description outside

nat outbound 2000

 nat serverprotocol icmp global 202.38.1.1 inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1

 nat serverprotocol tcp global 202.38.1.1 telnet inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1telnet

 nat serverprotocol tcp global 202.38.1.13389端口回流与dns-map与域内NAT202.38.1.13389 inside 10.110.10.1 3389

 ip address202.38.1.1 255.255.255.0

如上所示,外网口和内网口的配置全部相同。这样内网数据在访问web的服务器地址时202.38.1.1,在内网接口G1/1根据NATServer将目标地址转换为内网地址10.110.10.1端口回流与dns-map与域内NAT10.110.10.1,源地址根据nat outbound 2000把源地址改为G1/1接口的地址。即和上面端口回流原理一样。如此即可建立连接。

或者很简单的将内网的PCWeb Server分到不同的网段。PC改为10.111.10.3端口回流与dns-map与域内NAT10.111.10.3网关为10.111.10.1端口回流与dns-map与域内NAT10.111.10.1,配置如下:

interface interface GigabitEthernet1/1

 descriptioninside

 nat serverprotocol icmp global 202.38.1.1 inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1

 nat serverprotocol tcp global 202.38.1.1 telnet inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1telnet

 nat serverprotocol tcp global 202.38.1.13389端口回流与dns-map与域内NAT202.38.1.13389 inside 10.110.10.1 3389

 ip address10.110.10.10 255.255.0.0

ip address 10.111.10.1 255.255.0.0 sub

而此种方式不需要内网接口配置nat outbound,比较简单。

ping的效果:

C:\Users\MELODY>ping 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1

 

正在 Ping10.111.10.1端口回流与dns-map与域内NAT10.111.10.1 具有 32 字节的数据:

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

 

 

C:\Users\MELODY>ping 202.38.1.1

 

正在 Ping202.38.1.1 具有 32 字节的数据:

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

来自 202.38.1.1 的回复字节=32 时间<1ms TTL=255

 

上下比较对于ICMP来说即使ping的目标和回应的地址不同,凭借ICMPsequencenumber-ICMP也是可达的。由此我们更应想到,对NATServer的原理:当数据包进入接口时对数据包的目标地址进行NATServer的转换,在出接口时对数据包的源地址进行转换---如果地址都匹配NAT Server配置的地址。

 

关于域内NAT

我相信,凡事配置过防火墙的工程师都应配置过域内NAT,域内NAT的原理和如上H3C路由器的内网接口配置natoutbound的原理如出一辙。只是防火墙配置的位置为域内,而路由器为接口。具体配置可参考我之前的“华赛USG 域内NAT”一文。

 

关于dns-map

Dns-mapH3C的一个技术。natdns-map命令用来配置一条域名到外部IP地址、端口号、协议类型的映射。此命令用于配置内部服务器的“域名-外部IP地址、端口、协议类型”的映射,使内部主机在内部网络无DNS服务器的情况下,可以使用不同的域名区别并访问对应的内部服务器。最多允许配置16条映射。

该功能的实现是对原有DNSALG的补充和修改DNS ALG模块的处理流程:内网DNS服务器发向其上级DNS服务器的DNS回应报文中的地址,使用natserver命令中设置的DNS映射地址替换原有DNS回应报文中的地址。

配置dns-map后的处理流程:对外网DNSserver发向内网PCDNS回应报文中,如果该报文中包含的域名是使用dns-map命令中定义的,那么替换该报文中的公网地址为使用nat server命令映射的私网地址。

 

配置实例:

客户需求:

1)     使用H3C路由器作为NAT设备作easynat实现内网对公网的访问

2)     内部服务器能够被外网以域名方式访问,域名已注册,能被公网dns服务器正确解析为202.38.1.1

3)     内网用户也能像外网用户一样通过域名访问内网服务器

 

参考配置:

nat dns-map www123.com 202.38.1.180端口回流与dns-map与域内NAT202.38.1.180 tcp

nat dns-map ftp.123.com 202.38.1.121端口回流与dns-map与域内NAT202.38.1.121 tcp

nat dns-map smtp.123.com 202.38.1.125端口回流与dns-map与域内NAT202.38.1.125 tcp

nat dns-map pop.123.com 202.38.1.1110端口回流与dns-map与域内NAT202.38.1.1110 tcp

#

acl number 2000

 rule 10permit ip source 10.110.0.0 0.0.255.255

#

interface GigabitEthernet1/1

 descriptioninside

ip address 10.110.10.10 255.255.0.0

#

interface GigabitEthernet1/2

 descriptionoutside

nat outbound 2000

 nat serverprotocol tcp global 202.38.1.1 www inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1www

 nat serverprotocol tcp global 202.38.1.1 smtp inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1smtp

 nat serverprotocol tcp global 202.38.1.1 pop3 inside 10.110.10.1端口回流与dns-map与域内NAT10.110.10.1pop3

 nat serverprotocol tcp global 202.38.1.14899端口回流与dns-map与域内NAT202.38.1.14899 inside 10.110.10.1 4899

 nat serverprotocol tcp global 202.38.1.18080端口回流与dns-map与域内NAT202.38.1.18080 inside 10.110.10.1 8080

nat server protocol udp global 202.38.1.1 dns inside10.110.10.1端口回流与dns-map与域内NAT10.110.10.1dns

ip address 202.38.1.1 255.255.255.0

 

要替换的报文如下:

端口回流与dns-map与域内NAT

 

 

由上可以看出,dns-map将匹配的域名和公网地址的DNS回应报文的解析地址改为了内网地址,如此内网的PC就可以通过内网地址访问服务器了。只是将DNS解析请求发到了公网而已。之后的数据走的都是二层了。但是有个弊端就是PC与服务器的数据流没有经过三层,降低了安全性。



转自:http://melodyyayun.blog.51cto.com/2111476/956326
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值