NAT概念解释(不完全版,但不会搞错...)

NAT
在计算器网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading)
是一种IP数据包在通过路由器或防火墙时,重写来源IP地址或目的IP地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有IP地址访问因特网的私有网络中。它是一个方便且得到了广泛应用的技术。
当然,NAT也让主机之间的通信变得复杂,导致了通信效率的降低。


NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Network Address Port Translation)=端口地址转换(PortAdressTranslation,PAT)(早期叫PAT,后来改为NAPT,多了个P,被分类为NAT一种...)

静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。当一个内部主机必须被作为一个固定的外部地址访问时,通过静态NAT实现。
动态NAT则是在外部网络中定 义了一系列的合法地址(地址池),采用动态分配的方法映射到内部网络。动态NAT转换的工作过程是这样的,当有一个内部主机需要访问外网时,从公用IP地址池中取出一个可用的地址分配给该主机使用。当通信完成后,所获取的公用IP地址也被释放回地址池中。外部公用IP在被分配给一个内部主机通信使用时,该地址不能再次被分配给其他内部主机使用。
动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT。当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。

PAT/NAPT(Network Address Port Translation),即网络端口地址转换,NAPT是把内部地址(IP+端口)映射到外部网络的一个IP地址的不同端口上(路由防火墙等网关IP+端口)。NAPT可将多个内部地址映射为一个合法公网地址,但以不同的协议端口号与不同的内部地址相对应,也就是<内部地址+内部端口>与<外部地址+外部端口>之间的转换。NAPT普遍用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。
NAPT与动态地址NAT不同,它将多个内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。即在NAT路由器中存储一张NAT转换表(NAT translation table),表中记录了<内部地址+内部端口>与<外部地址+外部端口>的对应关系。当外部报文到达NAT路由器时,它们都有相同的IP,该路由器就通过过NAT转换表寻找源IP地址
在Internet 中使用NAPT时,所有不同的信息流看起来好像来源于同一个IP地址。这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通 过NAPT接入Internet。实际上,许多SOHO远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持NAPT,就可以做到多个 内部IP地址共用一个外部IP地址上Internet,虽然这样会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用NAPT还是很值 得的。

动态/静态NAT都是一对一的转换,而NAPT是一对多的转换...
动态NAT一般比较少,一般用静态NAT/动态PAT比较多...


NAT的特点是在NAT网关上建立一个NAT映射表,里面记录了每个公网IP对应的私网IP的转换。局限是公网IP数量有限...
NAT包括静态NAT和动态NAT 还有就是NATP(PAT)
静态NAT是一对一,一个内网ip对一个公网ip
动态NAT是一对一,有外网ip池,用完了释放,可重复利用
PAT是一对多(内网IP+端口,映射到外部路由防火墙等网关IP+端口)


端口映射(虚拟服务器)
端口映射一般指的是让外网访问内网机器...
例如:通过路由器上网的,输入192.168.1.2可以访问内部网站,但外部客户就看不到...
端口映射是将一台主机的内网IP+端口映射成一个外网P+端口,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;
外网要访问你这个内网主机,目的地址就是公网IP和代表你的端口号(这里也涉及一个映射回去的问题,也就是端口映射)
端口映射比如你访问163网页用的是80端口,实际上在163那边可能是个负载均衡设备开放的80端口,而在负载均衡下面的服务器提供网页访问的端口可能是8080
端口映射很像是PAT...端口映射是在端口映射表上弄的,PAT是随机使用内部端口及外部网关端口发送访问请求都是随机的(确切地说是不固定,以及可空闲,只在发送时使用),数据返回时也使用该临时通道;而端口映射是固定维持一条通道上,绑定了内部端口到外部网关端口...
PAT都是动态的(网关分配一段端口区间来提供内网访问外网需求)...(内网各机器各程序开放端口发起访问请求,然后数据包提交到网关,进行过滤和监控,并生成一个随机外部端口发送到外网...类似临时通道...),端口映射的级别大于PAT(端口被占用的话...)

 

DMZ主机与端口映射有什么区别吗?
端口映射只是映射指定的端口,DMZ相当于映射所有的端口,并且直接把主机暴露在网关中,比端口映射方便但是不安全
DMZ:就相当于DNAT(Destination NAT),只对目的IP地址做地址转换。也就是说,收到目的IP为自己WAN口的包,统统转发给内网的某个IP(你所配置),当然转发的过程中,对目的IP做了NAT。
在 "转发规则" 里面的 "DMZ主机" 里面,填入内部网主机IP即可...端口映射是"虚拟服务器"
端口映射:针对某些特定的包进行DNAT。这里跟传统的SNAT有些类似,要检测5元组(源IP,目的IP,协议类型,源端口,目的端口),只是做NAT的时候,是针对目的IP做NAT,而不是源IP。

 

外网访问内网(内网穿透)
端口映射,或花生壳NAT-DDNS等(固定域名,动态ip解析),还有其他各种映射工具(PortTunnel,Nat123,RineTD;ssh转发,Holder;ftp等反向代理穿透)
高级进阶:https://blog.csdn.net/zbgjhy88/article/details/55289785


禁止公司电脑访问外网
1.只在电脑配置时候给限定机器仅配置IP地址即可,其他网关、dns不配置。
2.可以通过网管软件实现,如网路岗。
3.如果是智能交换机,可以进入超级终端配置路由即可。或者防火墙...


NAT穿透方法
  目前常用的针对UDP的NAT 穿透(NAT Traversal)方法主要有:STUN、TURN、ICE、uPnP等。其中ICE方式由于其结合了STUN和TURN的特点,所以使用最为广泛。针对TCP的NAT穿透技术目前仍为难点。实用的技术仍然不多。
uPnp。对于NAT穿越技术,http://www.wildlee.org/2010_12_1227.html这篇文件可以看一看。

一些现在常用的技术:
ALG(应用层网关):它可以是一个设备或插件,用于支持SIP协议,主要类似与在网关上专门开辟一个通道,用于建立内网与外网的连接,也就是说,这是一种定制的网关。更多只适用于使用他们的应用群体内部之间。
UpnP:它是让网关设备在进行工作时寻找一个全球共享的可路由IP来作为通道,这样避免端口造成的影响。要求设备支持且开启upnp功能,但大部分时候,这些功能处于安全考虑,是被关闭的。即时开启,实际应用效果还没经过测试。
STUN(Simple Traversalof UDP Through Network):这种方式即是类似于我们上面举例中服务器C的处理方式。也是目前普遍采用的方式。但具体实现要比我们描述的复杂许多,光是做网关Nat类型判断就由许多工作,RFC3489中详细描述了。
TURN(Traveral Using Relay NAT):该方式是将所有的数据交换都经由服务器来完成,这样NAT将没有障碍,但服务器的负载、丢包、延迟性就是很大的问题。目前很多游戏均采用该方式避开NAT的问题。这种方式不叫p2p。
ICE(Interactive Connectivity Establishment):是对上述各种技术的综合,但明显带来了复杂性。


(转)部分源自此处,以及网络...
https://www.cnblogs.com/vincently/p/4620167.html

更高级进阶...
NAT原理与NAT穿透
https://blog.csdn.net/byxdaz/article/details/52785697

猜你喜欢

转载自www.cnblogs.com/qiaomaimian/p/10376429.html