通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-18 16:22:55 |显示全部楼层
3.2.2 NAPT

在传统的NAT中,路由器进行了地址转换,实现了私网地址的设备可以访问Internet上的设备。但是当只有一个公网地址时,在同一时刻私网内的设备只有一台设备能够访问Internet。为了使私网内多个设备能同时访问Internet,出现了NAPT(Network Address Port Translation),即网络端口地址转换。在NAPT中,不仅源地址进行了转换,源端口也进行了转换。这样一个公网IP地址可以同时被几万个私网主机使用。NAPT是目前实际应用的主流方案。我们来看下面的例子。

A
源地址
源端口
目的地址
目的端口

192.168.1.100
2000
1.1.1.1
80

1.1.1.2
2000
1.1.1.1
80


B
源地址
源端口
目的地址
目的端口

192.168.1.101
2000
1.1.1.1
80

1.1.1.2
2001
1.1.1.1
80


上面的例子中,主机A发出的报文,源端口是2000,经过地址/端口转换后,源地址就变成了路由器的公网地址,端口还是2000。
主机B 发出的报文,源端口是2000,经过地址/端口转换后,源地址就变成了路由器的公网地址,端口变成了2001(因为2000已经被主机A发出的报文占用了)。
对于服务器,可以收到来自路由器的两种报文。虽然地址相同,但源端口号不一样,服务器能够正确区分两种报文,分别做出处理。

A
源地址
源端口
目的地址
目的端口

1.1.1.1
80
1.1.1.2
2000

1.1.1.1
80
192.168.1.100
2000


B
源地址
源端口
目的地址
目的端口

1.1.1.1
80
1.1.1.2
2001

1.1.1.1
80
192.168.1.101
2000


当路由器收到服务器的报文时,可以根据不同的目的端口号进行区分,分别作出转换,并发往主机A和主机B,如上图。这样就实现了私网内的不同主机同时访问Internet服务器的需求。



说明:
严格来说NAT和NAPT是不同的,前者是单纯的地址转换,后者是地址/端口转换。习惯上我们统称为NAT。实际上,非手工配置的动态NAT特性一般实现的是后者。

已有 1 人评分经验 家园分 收起 理由
家园副管03 + 20 + 20 感谢更新

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-20 11:15:49 |显示全部楼层
3.2.3 NAT映射表项与静态映射

NAT的出现破坏了IP网络设计的初衷,使原本对等的网络有了不对称的公/私网之分。在初始状态下,只有私网的主机能够主动向公网的设备发起连接。在发起连接的过程中,路由器将私网侧的地址/端口映射成公网的地址/端口,这个映射关系就是NAT表项,通常是自动完成的。

在上面的例子中,NAT映射表项就是
1.1.1.2:2000 -> 192.168.1.100:2000
1.1.1.2:2001 -> 192.168.1.101:2000
如果公网设备需要主动访问私网主机,那么需要事先在路由器上配置一下NAT映射表项,这就是静态映射。

图3-9.驿站NAT组网图B.png

图3-9 驿站NAT组网图B


在老U的环境中,如果在公网上的PC需要访问私网中的IPC(192.168.1.102)的Web服务,那么需要在路由器上添加一条1.1.1.2:80到192.168.1.102:80的映射关系。这样,老U在Internet上也能访问私网的IPC了。



说明:
上述例子,有些路由器不允许利用WAN口的80端口做端口映射,因为路由器自身也有对外的Web服务。这时可以改成其他端口,例如8080,配置一条“1.1.1.2:8080到192.168.1.102:80“的映射关系;不过,这时外网PC机需要在浏览器输入IP(1.1.1.2)+端口号(8080)

已有 1 人评分经验 家园分 收起 理由
家园副管03 + 20 + 20 感谢更新

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-24 08:48:57 |显示全部楼层
本帖最后由 网语者 于 2015-8-24 08:50 编辑

3.2.4 不同类型的NAT

我们继续本章开头的故事。传达室大爷兢兢业业的收发着同学们与外部交往的信件,学校希望大爷关注下外来信件的来源,关心孩子的身心安全。大爷斟酌了一天,想出了几个方案,以小U为例:
一、只要小U往外寄过信件,以后所有外部寄给小U的信件都放到他所在班级的邮箱。
二、记住小U外寄信件的目的地址,以后只有这个地址寄来的信件,才放到班级信箱里。
三、记住小U外寄信件的目的地址和收件人,以后只有来自这个地址且发件人为这个人的信件,才放到班级信箱里。
四、来招更狠的,小U寄往不同地址和不同收件人的信件,发件地址都不同,比如,寄往报社小李的,发件地址写“南京市第100036-1信箱”,寄往报社小张的,发件地址写“南京市第100036-2信箱”,只要外部来信地址没写对,我都按照非法信件处理。
哇,各位读者,您觉得哪种方式最合适呢?不管怎样,安全和便利通常很难两全。

NAT设备的处理机制也类似的四种方式。按照安全处理级别的依次提升,四种方式分别如下:

Full Cone(全锥型)NAT:内网主机往外访问不同的目标地址和端口号,路由器每次都把该“私网源IP+源端口号“映射到同一个”公网IP地址/端口“;同时,外网的任何主机(包括先前内网主机未曾主动访问过的外网主机)都可以通过该”公网IP+端口号“访问内网主机。
Restricted Cone(限制锥型)NAT:地址/端口映射的情况同全锥型NAT,但外网的主机要访问内网主机的前提是:该内网主机必须先发送过报文给该外网主机的地址——不要求是对应的端口号。
Port Restricted Cone (端口限制锥型)NAT:地址/端口映射情况同全锥型NAT,但外网主机要访问内网主机的前提是:该内网主机必须先发送过报文给该外网主机的地址和端口号。
Symmetric(对称型)NAT:内网主机往外访问不同的目标地址和端口号,路由器每次都把该“私网源IP+源端口号“映射到不同的”公网IP地址/端口“——通常为节约公网IP,外网源IP地址不会发生改变(直接利用路由器WAN口的IP地址),但也可以通过配置公网地址池以使IP地址发生改变。外网主机必须先收到过内网主机的报文,才能访问到该内网主机。
前三种NAT的处理模型中,因为一对“私网IP/端口”统一被映射到同一对“公网IP/端口”,虽然被访问的“公网IP/端口”有多对,所以呈现一对多的模型,很像锥形,所以称为锥型NAT。而对称型NAT中,访问不同的“公网IP+端口”对,NAT路由器都会为同一个“私网IP+端口”对映射为不同的“公网IP+端口”对,呈现一对一的模型,故称为对称型NAT。

我们来举例解释一下四种NAT模型。

1.全锥型NAT(Full Cone NAT)

图3-10.全锥型NAT组网图.png

图3-10 全锥型NAT组网图


这是一种最简单的NAT。当内网主机创建一个UDP socket(192.168.1.100:7070)并通过它第一次向外(1.1.1.1:80)发送UDP数据包时,路由器会为之分配一个固定的公网地址/端口(1.1.1.2:8080)。此后,通过这个socket发送的任何UDP数据包(例如目的地址为2.2.2.2:80)都是通过这个公网地址/端口向外发送。与此同时,任何外部主机都可以使用这个公网地址/端口,向该内网主机socket发送UDP数据包。也就是说,只要主机往外发了一个报文,好像路由器上被打开了一个缺口,之后外部所有的主机都可以通过这个“洞”(公网地址/端口)发送到该内网主机的地址/端口。在上图中,路由器收到来自3.3.3.3:90、2.2.2.2:90、2.2.2.2:80、1.1.1.1:80且目的地址为1.1.1.2:8080的报文都会被转发到192.168.1.100:7070。

2.限制锥型NAT(Restricted Cone NAT)

图3-11.限制锥型NAT组网图.png

图3-11 限制锥型NAT组网图


当内网主机创建了一个UDP socket(192.168.1.100:7070)并通过它第一次向外(1.1.1.1:80)发送UDP数据包时,路由器会为之分配一个固定的公网地址/端口(1.1.1.2:8080)。此后,通过这个socket发送的任何UDP数据包(例如:2.2.2.2:80)都是通过这个公网地址/端口向外发送。到此为止,限制锥型NAT与全锥型NAT完全一致,但是:
限制锥型NAT的限制是:私网主机主动发送过报文的被访问公网设备才能向私网设备发送报文。在上面的例子中,私网主机从未向3.3.3.3发送过报文,因此,从3.3.3.3:90发送到1.1.1.2:8080的报文将被直接丢弃,不会被转发给私网中的主机。而2.2.2.2:90的报文则可被正常转发。

3.端口限制锥型NAT(Port Restricted Cone NAT)

图3-12.端口限制锥型NAT组网图.png

图3-12 端口限制锥型NAT组网图


当内网主机创建一个UDP socket(192.168.1.100:7070)并通过它第一次向外(1.1.1.1:80)发送UDP数据包时,路由器会为之分配一个固定的公网地址/端口(1.1.1.2:8080)。此后,通过这个socket发送的任何UDP数据包(例如:2.2.2.2:80)都是通过这个公网地址/端口向外发送。到此为止,端口限制锥型与限制锥型NAT完全一致,但是:
端口限制锥型NAT的新增限制是:私网主机主动发送过报文的被访问公网设备才能向私网设备发送报文,且端口号也需要一致。在上面的例子中,从2.2.2.2:90发送到1.1.1.2:8080的报文将被直接丢弃,因为私网的主机只给2.2.2.2:80发送过报文,并未向2.2.2.2:90发送过报文。

4.对称NAT(Symmetric NAT)

图3-13.对称NAT组网图.png

图3-13 对称NAT组网图


当内网主机创建一个UDP socket(192.168.1.100:7070)并通过它第一次向外(1.1.1.1:80)发送UDP数据包时,路由器会为之分配一个固定的公网地址/端口(1.1.1.2:8080)。
当内网主机再次使用这个socket(192.168.1.100:7070)并通过它第一次向(2.2.2.2:80)发送UDP数据包时,路由器会为之分配一个另外的的公网地址/端口(1.1.1.2:9090)。
对称NAT与前面几种NAT的显著区别是,同一源地址/端口,对于不同的目的地址/端口,经过路由器映射之后的公网地址/端口是不同的。在外部端口收到报文的处理流程上,只有接收到了内部主机所发送的数据包的外部主机才能向内部主机返回UDP报文,这里的限制是与端口受限锥形NAT一致的。
四种NAT模型都有设备实现,但全锥型的NAT模式实在不够安全,不建议采用。
已有 1 人评分经验 家园分 收起 理由
家园副管06 + 20 + 20

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-25 05:39:29 来自手机 |显示全部楼层
楼主把NAT模式阐述得通俗易懂,赞一个

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-25 07:42:05 |显示全部楼层
比喻得十分形象,便于初学者理解。好贴!期待楼主讲讲P2P原理哈

举报本楼

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-25 08:55:33 |显示全部楼层
3.2.5 ALG

普通NAT实现了对IP报文的IP地址和端口的转换,但对应用层数据载荷中的字段是不作任何处理的。在许多应用层协议中,比如SIP、FTP、TCP/UDP载荷中都带有地址或者端口信息,如果这些内容不能被进行有效的转换,就可能导致问题。而ALG(Application Level Gateway,应用层网关)技术不仅对IP地址/端口进行了转换,而且能对应用层协议进行报文信息的解析,将其中需要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通信的正确性。

这怎么理解呢?我们还是以小U的信件为例聊一聊。小U给爸爸老U寄信件时,传达室大爷改了信封的地址——加上了“南京市第100036信箱转”字样,小U才能收到老U的回信。但小U书信里告诉老U:同乡兼同学的小A的收件地址为23号信箱。于是老U虽然能给儿子小U回信(按信封上的地址),却无法确定小A的收件地址。

不过,小U所在学校属于国家涉密机构,所有外寄信件都要经过传递室“大爷”的审计,大爷看到小U的失误,帮忙把信中小A的收件地址改成了“南京市第100036信箱转23号信箱”。这样,老U收到信件后就知道小A的收件地址了。这个改内容的过程就是ALG的职责。

下面我们以FTP为例解释一下ALG的工作过程。

图3-14.NAT ALG组网图.png

图3-14 NAT ALG组网图


FTP需要用到两个连接:控制连接与数据连接。控制连接专门用于FTP控制命令及命令执行信息的传送;数据连接专门用于实际传输数据(上传或者下载)。

FTP有两种工作模式,PORT模式和PASV模式。

在PORT模式中客户端向FTP服务器的21端口建立起控制连接。这个连接的源地址/端口是192.168.1.100:3333,目的地址/端口是1.1.1.1:21。经过NAT路由器之后源地址被转换成1.1.1.2:3333。 服务器收到后向1.1.1.2:3333发送响应报文,进而通过路由器转换后发送到客户端。这样,FTP的控制连接就正常建立了。

当客户端需要下载文件时,FTP客户端首先会在打开本地某一端口进行侦听,并通过已经建立的控制连接发送PORT命令告诉服务器这个侦听的地址和端口。在上图的例子中,这条命令就是PORT 192.168.1.100,2033——这个信息含在数据载荷部分,并不在IP报文头。载荷部分的数据一般不会被NAT设备修改,除非启用ALG功能。

服务器收到这条命令后就会另外建立起一个连接(数据连接),连接的目的地址/端口是192.168.1.100:2033。但是这是个私网的地址,并不会出现在公网上,服务器无法找到这个地址,也就无法建立这个连接,后续文件自然也不能正常发送了。

如果路由器支持ALG功能,情况就不一样了。当客户端发送PORT命令时,路由器不仅仅对这条报文的源地址进行转换,而且对这条报文的内容也进行了解析和转换。首先路由器找到公网的一个空闲端口(例如20333),并配置一个NAT映射,将从1.1.1.2:20333收到的报文转发到192.168.1.100:2033。然后,路由器将客户端发送的这条PORT报文修改成PORT 1.1.1.2:20333,告诉FTP服务器向路由器映射之后的公网地址/端口发起数据连接。这样,FTP服务收到这条PORT报文后就能够正常建立起数据连接,从而正常发送实际的文件了。                                    
                                             
ALG可以解决某些应用程序协议在NAT环境下的使用问题。但是ALG的局限性也相当多:ALG需要对每种不同的应用层协议(例如:DNS、FTP、H.323(包括RAS、H.225、H.245)、HTTP、ILS、MSN/QQ、NBT、RTSP、SIP、SQLNET、TFTP……)进行不同的适配,不同的路由器支持的协议的数量和实现细节都不一样,有些应用层协议本身也在不停的演进中。因此,在实际应用中经常会遇到ALG相关的各种问题。



说明:
PASV是PORT模式的改进。在PASV模式中,数据连接也是从客户端发起的,这样就规避了NAT的问题。可以说,PASV模式是FTP对NAT网络情况下的一种应用层协议的改进。

点评

网际行者  这个比喻很有意思,赞一个  详情 回复 发表于 2015-8-25 09:07
已有 1 人评分经验 家园分 收起 理由
家园副管06 + 20 + 20

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-25 09:07:20 来自手机 |显示全部楼层
网语者 发表于 2015-8-25 08:55
3.2.5 ALG

普通NAT实现了对IP报文的IP地址和端口的转换,但对应用层数据载荷中的字段是不作任何处理的。 ...

这个比喻很有意思,赞一个

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-25 10:06:19 来自手机 |显示全部楼层
对于传统安防转向IP监控的朋友来说,楼主精心安排的这些知识点值得我们认真掌握

举报本楼

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-26 09:20:35 |显示全部楼层
3.2.6 UPnP

我们继续本周开头的故事。传递室大爷分拣信件时,收到一封收件人为“XXX年级年级长”的信件。大爷可犯难了,因为这个年级长是每月竞选轮换的,他可不知道当月的年级长在哪个班级,所以不知道该把信件放到哪个班级的信箱。小U给大爷出了一招,让年级长的评选负责组织及时把对应的同学姓名和班级号报送给大爷,这样大爷就知道把信件放到哪个班级的信箱了。
其实,NAT设备也存在类似的烦恼。前面我们曾说过,为解决外网设备主动访问NAT内网设备的问题,需要在NAT设备上手工配置NAT表项映射。但如果内网设备的服务IP地址或端口号会发生变更,手工静态配置显然是不合适的,需要有一个动态交互的机制。解决这个问题的特性叫通用即插即用UPnP(Universal Plug and Play)。

UPnP最大的愿景是任何设备一旦连接入网络,所有在网设备马上就能相互知道;这些设备彼此通信,能直接利用对方提供的服务,无需人工干预设置,达到即插即用的效果。

下图是一个典型的广域监控应用示例。NVR通过SOHO路由器连接到Internet网,Internet上的其它终端设备(比如手机、PC)需要查看NVR上的视频监控画面。根据前面的NAT知识,管理员需要在SOHO路由器手工配置端口映射,否则Internet网上的终端设备就无法主动访问内网的NVR。手工配置端口映射,不仅繁琐而且容易出错,有了UPnP,这个问题就迎刃而解了。
UPnP是如何领会管理员意图的呢?我们来以一个实际例子学习下UPnP的运行过程。

图3-15.老U驿站UPnP特性示意图.png

图3-15 老U驿站UPnP特性示意图


UPnP运行可分为三大步骤,如下:
NVR和路由器等设备连入网络后,通过协议交互发现对方的存在;
发现对方的存在后,NVR和路由器都需要报告自己的身份以及有什么样的资源,即能为其他设备提供什么服务;
NVR知道路由器的资源(能够提供端口映射服务)后,于是请求路由器为NVR提供端口映射服务,路由器会将成功与否的结果反馈给NVR。

我们来看下具体的交互过程。

第一步:路由器上电获取到IP地址后,就会向网络报告自己的存在,以组播(组播的细节后面章节会详细讨论,基本的功能特点是:IP报文的目的IP地址或MAC地址为组播地址,UPnP用的是239.255.255.250这一固定组播地址,其他设备只要启用了对应的功能,就能够侦听并接收该报文)的方式向外发送报文,报文里携带有设备名称和设备类型、设备IP地址等信息,用wireshark来分析报文,截图如下:

图3-16.路由器发出的报文解析.png

图3-16路由器发出的报文解析


NVR上电或接入到网络后,与路由器一样,会向网络发送报文报告自己的存在,也是以组播的方式下网发送。

第二步:支持UPnP的NVR会侦听网络中目的地址是239.255.255.250的组播报文。NVR发现了路由器后,根据报文里的内容(即路由器的URL信息)继续向该路由器询问其设备类型以及能提供的服务,路由器就向NVR反馈它具有连接internet的服务、可以提供端口映射功能等。

第三步:NVR通过上述交互后明白了路由器是一台可以连接到Internet的设备,具有提供端口映射功能。刚好NVR就需要这样的服务,需要把端口映射出去。于是,NVR告诉路由器,请帮忙提供地址端口映射服务。下列是用Wireshark的Follow TCP Stream来解析NVR与路由器之间的查询交互报文。从解析出来的报文可以看到,NVR明确告诉路由器,请你在公网接口上侦听,如果在WAN口收到目的端口是50443的TCP报文,请帮忙转换报文,并送给内网IP地址是202.8.20.116、目的端口是443的主机。



POST /ipc HTTP/1.1HOST: 202.8.20.119:1900CONTENT-LENGTH: 588CONTENT-TYPE: text/xml; charset="utf-8"SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#AddPortMapping"USER-AGENT: Linux/3.4.35_hi3535, UPnP/1.0, Portable SDK for UPnP devices/1.6.19
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:AddPortMapping xmlns:u="urn:schemas-upnp-org:service:WANIPConnection:1"><NewRemoteHost></NewRemoteHost><NewExternalPort>50443</NewExternalPort>        ——公网接口需要侦听的端口号<NewProtocol>TCP</NewProtocol>                   ——需要映射的协议是TCP
<NewInternalPort>443</NewInternalPort>            ——映射到内网的端口号
<NewInternalClient>202.8.20.116</NewInternalClient>   ——转发到内网设备的IP地址
<NewEnabled>1</NewEnabled>
图3-17NVR发出的报文解析




此外,NVR还向路由器发起查询,询问WAN口的公网IP地址是多少。路由器收到后没有丝毫犹豫,很爽快的告诉NVR,它的公网IP地址是64.0.236.2。

在老U的驿站里,由于路由器和NVR支持UPnP特性,就无需手工进行路由器的端口映射操作。配置很简单,在NVR和路由器的web页面上勾选/开启UPnP即可。

老U可以在NVR以及路由器的web界面上看到UPnP运行成功后的显示页面。

路由器上的截图:

图3-18.路由器的配置示意图.png

图3-18路由器的配置示意图


NVR上的截图:

图3-19.NVR的配置示意图.png

图3-19 NVR的配置示意图


以上配置可以形象扼要的用如下对话来解释:

NVR:呼叫路由器,我是NVR,我现在的IP地址是202.8.20.116,我想要对外提供端口号为80、554、7070、6060、443的TCP服务,麻烦路由器你帮我映射出去。

路由器:我是路由器,收到NVR的呼叫,我已经帮你把端口号为80、554、7070、6060、443的TCP服务映射出去了。映射出去后对应的公网端口号分别是:50080、50554、57070、56060、50443。我的外网IP地址是64.0.236.2。

此时,web页面上可以清晰的看到UPnP特性带来的自动端口映射已经生效。例如,在上面的路由器截图中的第二条表项代表的含义是: 路由器在外网接口上收到目的端口号为50554的TCP报文会被转发到内部的202.8.20.116的NVR,目的端口号会被转换成554。与此同时,NVR上也“自动”的知道了自己所连接的路由器的外网IP地址(64.0.236.2)以及相应的映射端口号(50554)。

UPnP,即插即用,无需人为干预,就是这么任性!
已有 1 人评分经验 家园分 收起 理由
家园副管06 + 20 + 20

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-26 10:22:32 来自手机 |显示全部楼层
UPNP很实用

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-26 11:08:05 来自手机 |显示全部楼层
UPNP很实用

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-26 14:22:25 来自手机 |显示全部楼层
这里又提到组播了,组播真是好东西,期望楼主快点讲解组播知识吧。前几年海康等公司一直说组播是私有协议,组播与广播一样,后来才知道根本不是这样,急需大师给详细解释一下

举报本楼

军衔等级:

  列兵

注册:2006-1-22
发表于 2015-8-26 19:40:46 |显示全部楼层
楼主大神,我发现我在用电骡下载大片的时候,发现里面也有UPNP这样的设置,请问电骡下片跟UPNP有什么关系? 这里的UPNP跟你刚才说的UPNP是 一个东东么?

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-26 20:19:24 来自手机 |显示全部楼层
我觉得应该是,呵呵

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-26 20:21:15 来自手机 |显示全部楼层
打游戏时,也可以看到路由器上多了几个映射,有了这些协议,所有映射自动完成,真是方便

举报本楼

军衔等级:

  新兵

注册:2015-7-8
发表于 2015-8-27 00:39:08 来自手机 |显示全部楼层
学习了,很不错的学习资料

举报本楼

军衔等级:

  四级军士长

注册:2015-6-172
发表于 2015-8-27 09:23:19 |显示全部楼层
3.3 DDNS

DDNS(Dynamic Domain Name Server)叫做动态域名服务。首先我们看一下DDNS的应用场景:在前面我们已经介绍了DNS的功能,在DNS中域名和用户服务器的公网IP地址是静态绑定的,是由DNS的服务提供商手工配置的。但申请静态公网IP价格较高,通常普通用户的服务器上网默认采用运营商分配的动态IP地址(例如ADSL、PPPoE),这时处于公网的其他设备该如何访问这个IP地址飘忽不定的服务器呢?DDNS技术就是用来解决这个问题的。

3.3.1 互联网DDNS方案

DDNS的基本原理是:处于用户服务器侧的DDNS客户端定期将自己的公网IP地址、域名注册上报给运营商的DDNS服务器,DDNS服务器会根据上报信息进行域名和公网IP地址的动态绑定,同时还需将该绑定关系上报给DNS服务器。如此,访问者在进行域名解析时,得到的地址就是最新的公网IP地址。

图3-20.DDNS原理示意图.png

图3-20 DDNS原理示意图


DDNS的注册过程并不像DNS解析一样有标准规定,而是由各DDNS服务提供商自己制定私有协议,所以若要使用特定DDNS服务商的DDNS服务,客户端就必须支持对应的私有协议。注册客户端可以是一台PC,在该PC上运行DDNS服务商提供的客户端软件;也可以是企业出口路由器,该路由器集成该DDNS服务商的客户端软件;或者用户服务器直接集成DDNS服务商的客户端。这些DDNS客户端不能断电,否则无法及时的将公网IP地址变动情况上报给DDNS服务器。

目前常见的国内DDNS服务商有******.com(花生壳)、pubyun.com,国外的有no-ip.com、www.dyndns.com
用户如果需要使用DDNS的服务,大致需要三步:

第一步:首先需要确认使用什么设备做DDNS客户端。DDNS客户端的选择会限制DDNS服务商的选择范围,譬如你选择了路由器,若该路由器仅支持花生壳,那么你就只能选择花生壳的DDNS服务,除非更换路由器。如果用户服务器在国内,尽量选择国内的DDNS服务提供商,因为国外的DDNS服务器可能会被国家防火墙阻断。

第二步:在DDNS服务提供商的官网上申请DDNS域名服务帐号,申请的内容包括一个用户帐号、密码和一个二级域名。通常有免费和付费两种模式。免费的午餐必然没有那么的美味,不然就没有人会去付费了,其稳定性会差很多。
以花生壳域名注册为例,登录https://console.******.com/passport/register.html

图3-21.花生壳域名注册.png

图3-21花生壳域名注册


注册完成就会送一个与帐号相同的免费域名,如下图。

图3-22.花生壳域名注册结果.png

图3-22花生壳域名注册结果


第三步:启用DDNS客户端,选取DDNS服务商,并将第二步申请的帐号、密码、域名都填入到指定的位置,保存。接下来就可以看到注册状态很快的切换到在线状态了。然后就可以对其进行检测。

以出口路由器上自带的DDNS客户端为例,填写信息如下。这里的域名默认使用用户名作为前缀,所以不用额外填写。

图3-23.路由器上配置DDNS客户端.png

图3-23 路由器上配置DDNS客户端


查看路由器:WAN口的IP地址为60.12.249.171。

图3-24.WAN口IP地址.png

图3-24 WAN口IP地址


图3-25.PING域名获得的解析结果.png

图3-25 PING域名获得的解析结果


通过ping检验DDNS功能是否准确,可以看到解析到的地址与路由器的公网地址完全相同。
DDNS设置完成后,我们是否就可通过域名访问NVR(即用户服务器)了呢?当然不是。常用的DDNS仅仅是做了一个动态域名的解析,让公网侧的访问客户端通过域名了解对应的公网IP地址。若要通过这个公网地址访问私网的用户服务器,还需将这个公网地址映射到私网中的用户服务器地址。地址映射功能已经在上面的NAT和UPnP一节中详细介绍了,这里就不再赘述了。
已有 1 人评分经验 家园分 收起 理由
家园副管06 + 20 + 20

总评分: 经验 + 20  家园分 + 20   查看全部评分

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-27 09:33:01 来自手机 |显示全部楼层
一直没搞清楚DNS和DDNS的界线,现在明白了,多谢楼主!

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-27 09:36:39 来自手机 |显示全部楼层
这么有用的连载,强烈要求版主给予宣传和支持!对于安防的IP化发展具体极大的推动意义。中国估计没几个这么深入IP知识的安防专家啊!也感谢C114论坛提供这么好的学习平台

举报本楼

军衔等级:

  上等兵

注册:2015-8-25
发表于 2015-8-27 09:37:16 来自手机 |显示全部楼层
这么有用的连载,强烈要求版主给予宣传和支持!对于安防的IP化发展具体极大的推动意义。中国估计没几个这么深入IP知识的安防专家啊!也感谢C114论坛提供这么好的学习平台

点评

网语者  过奖了,您连续几天的跟帖鼓励,才是我持续写作的动力  详情 回复 发表于 2015-8-27 09:42

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

Archiver|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-3-29 03:50 , Processed in 0.325134 second(s), 17 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部