0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NAT设备常用场景

科技绿洲 来源:Linux开发架构之路 作者:Linux开发架构之路 2023-11-11 11:42 次阅读

1、NAT分类

图片

1.1 基础型NAT

仅将内网主机的私有IP地址转换成公网的IP地址,并不将TCP/UDP端口信息进行转换,分为静态NAT和动态NAT。

1.2 NAPT

NAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。

1.2.1锥型NAT

  • 完全锥型(Full Cone NAT):在不同内网的主机A和B各自连接到服务器C,服务器收到A和B的连接后知道了他们的公网地址和NAT分配给他们的端口号,然后把这些NAT地址和端口号交叉告诉B和A。A和B给服务器所打开的“孔”可以给任何主机使用。如一私网主机地址是192.168.1.100:30000发至公网的所有请求都映射成一个公网地址172.1.20.100:20000,192.168.1.100:30000可以接收任何主机发给172.1.20.100:20000的数据报文。
  • 受限制锥型(Restricted cone):主机A和B同样需要各自连接服务器C,同时把A和B的地址告诉B和A,但一般情况下它们只能与服务器通信。要想直接通信需要发送消息给服务器C,如主机A发送一个UDP消息到主机B的公网地址上,与此同时,A又通过服务器C中转发送一个邀请信息给主机B,请求主机B也给主机A发送一个UDP消息到主机A的公网地址上。这时主机A向主机B的公网IP发送的信息导致NAT A打开一个处于主机A的和主机B之间的会话,与此同时,NAT B也打开了一个处于主机B和主机A的会话。一旦这个新的UDP会话各自向对方打开了,主机A和主机B之间才可以直接通信。
  • 端口受限锥型(Port-restricted):与受限制锥型类似,与之不同的是还要指定端口号。

1.2.2对称NAT(Symmetric)

对不同的外网IP地址都会分配不同的端口号。

1.2.3 两者区别

对称NAT是一个请求对应一个端口,非对称NAT是多个请求对应一个端口(象锥形,所以叫Cone NAT)。

1.3 安全系数

对称型 > 端口受限锥型 > 受限锥型 > 全锥型

2、网络打洞

2.1 打洞条件

中间服务器保存信息、并能发出建立UDP隧道的命令

网关均要求为Cone NAT类型。Symmetric NAT不适合。

完全圆锥型网关可以无需建立udp隧道,但这种情况非常少,要求双方均为这种类型网关的更少。

  1. 假如X1网关为Symmetric NAT, Y1为Address Restricted Cone NAT 或Full Cone NAT型网关,各自建立隧道后,A1可通过X1发送数据报给Y1到B1(因为Y1最多只进行IP级别的甄别),但B2发送给X1的将会被丢弃(因为发送来的数据报中端口与X1上存在会话的端口不一致,虽然IP地址一致),所以同样没有什么意义。
  2. 假如双方均为Symmetric NAT的情形,新开了端口,对方可以在不知道的情况下尝试猜解,也可以达到目的,但这种情形成功率很低,且带来额外的系统开支,不是个好的解决办法。pwnat工具据说可以实现。
  3. 不同网关型设置的差异在于,对内会采用替换IP的方式、使用不同端口不同会话的方式,使用相同端口不同会话的方式;对外会采用什么都不限制、限制IP地址、限制IP地址及端口。
  4. 这里还没有考虑同一内网不同用户同时访问同一服务器的情形,如果此时网关采用AddressRestricted Cone NAT 或Full Cone NAT型,有可能导致不同用户客户端可收到别人的数据包,这显然是不合适的。

2.2 打洞流程

不同的网络拓扑NAT打洞的方法和流程有所区别。

2.2.1 同一个NAT设备下

图片

  1. clinet A与Server S建立UDP连接,公共NAT(155.99.25.11)给client A分配一个公网端口62000;
  2. client B与Server S建立UDP连接,公共NAT(155.99.25.11)给client A分配一个公网端口62005;
  3. client A通过Server S发送一个消息要求连接client B,S给A回应B的公网和私网地址,并转发A的公网和私网地址给B;
  4. A和B根据获取的地址试图直接发送UDP数据报文;是否成功取决于NAT设备是否支持hairpin translation(端口回流)。——打开端口回流相当于与client A的数据经过NAT设备转发后才到达client B,即从外网NAT接口绕了一圈再访问到同一个子网里的client B。(优点是可以防止内部攻击)

2.2.2 不同NAT设备下

图片

1、A使用4321端口与S连接,NAT给回话在NAT分配外网62000端口(155.99.25.11:62000)与S连接;同理B以相同的方式与S连接,分配的外网地址端口是138.76.29.7:31000。

2、A往S注册消息包里包含里A的私有地址10.0.0.1:4321,此时S保存了A的地址;S给A临时分配了一个用于公网的地址(155.99.25.11:62000),同时用于观察外网数据包。

3、同理B往S注册的消息包里也包含里B的地址,NAT同样给B临时分类了一个外网地址(138.76.29.7:31000)。

4、Client A根据以上已知信息通过打洞的方式与B连接UDP通信:

  1. Client A发送请求消息,寻求连接B;
  2. S给A回应B的外网和内网地址,通给给B发送A的外网和内网地址;
  3. A和B开始利用这些地址尝试直接发送UDP报文给彼此,不幸的是,此时A和B都无法接收对应的消息。因为A和B都是在不同的私有网络中,A和B之前都是与S通信回话,并没有与对方建立回话;即A没有为B打开一个洞,B也没有为A打开一个洞。这个过程的第一个报文需要会被拒绝同时打开对应的“洞”,随后才可以直接通信,具体如下:
  • A给B公网地址(10.0.0.1:4321 to 138.76.29.7:31000)发送的第一个报文,实际上是在A的NAT私有网络上“打洞”来为新识别的地址(10.0.0.1:4321 138.76.29.7:31000) 建立UDP会话,并经主网地址(155.99.25.11:62000 138.76.29.7:31000)来传送。
  • 如果A发送到B的公网地址的消息在B发送到A的第一个消息越过B自己的NAT之前到达B的NAT,那么B的NAT可能会将A的入站消息解释为非请求的传入通信量并丢弃它。
  • 同理,B给A公网地址方法的第一个消息也会在B的NAT上“打洞”来为地址(10.1.1.3:4321, 155.99.25.11:62000)建立回话。
  • 随后可以正常P2P通信。

2.2.3 多层NAT下

图片

说明:NAT C 是一个大型的工业NAT设备,由ISP(Internet Service Provider,互联网服务提供商)部署,用于将许多客户多路复用到几个公共IP地址上。

Client A和client B无法通道NAT A和NAT A进行P2P通信,因为它们属于NAT C的局域网地址,因此client A和client B只能通道NAT C的hairpin translation进行P2P通信,如果NAT C不支持hairpin translation,则它们很难进行P2P通信。

每个客户机像前面方式一样启动到服务器S的连接,引起NAT A和B各自创建一个单独的公共/私有转化——session A-S(18.181.0.31:1234 10.0.0.1:4321)和session B-S(18.181.0.31:1234 10.1.1.3:4321),并引起NAT C为每个会话建立一个公共/私有翻译——session A-S(18.181.0.31:1234 10.0.1.1:45000)和session B-S(18.181.0.31:1234 10.0.1.2:5500)。

  1. 首先client A给client B的公网地址(155.99.25.11:62005)发送消息;
  2. NAT A翻译原数据报文从10.0.0.1:4321带10.0.0.1:45000;
  3. 数据报现在到达NAT C,它识别出数据报的目标地址是NAT C自己翻译的公共地址之一;
  4. 如果NAT C是好的,那么其能翻译出数据报文的源地址和目标地址(155.99.25.11:62000和10.0.1.2:55000),同时通过“回环”返回数据包到私有网络;
  5. NAT B 翻译数据报文得到NAT B私网地址,最终到达client B。
  6. Client B给client A发送数据报文与上述步骤类似。

2.3 打洞组合

不同的NAT组合打洞的方式也有所不同,有点可以打洞,有的则不能打洞,如两个都是对称型设备则无法实现打洞。不同组合打洞结果如下:

图片

3、关联技术

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

4、其他

4.1 对称NAT设备常用场景

1)使用第三方宽带公司提供的宽带,这类宽带给用户分配的是局域网IP,连接公网的NAT是运营商的,这类运营商一般采用对称NAT。

2)移动互联网,如3G、4G终端设备;

3)大公司路由器一般采用对称NAT;

4.2影响“打洞”的因素

  1. 许多对称nat以一种相当可预测的方式为连续的会话分配端口号,而有时分配到的端口刚好被别的应用使用了。
  2. Client有可能分到多个公网地址,例如:在NAT将公网地址155.99.25.11:62000分配给client A与S的会话之后,NAT可能会将另一个公网地址(如155.99.25.11:62001)分配给A试图发起与B的P2P会话。在这种情况下,依据提供的连接打洞过程将失败,因为后续来自B的传入消息到达NAT A的错误端口号
  3. 其他
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1404

    浏览量

    148296
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33622
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31588
  • NAT设备
    +关注

    关注

    0

    文章

    2

    浏览量

    6184
收藏 人收藏

    评论

    相关推荐

    AG32VF-MIPI应用场景

    MIPI接口技术在图像和视频传输中的应用越来越广泛,应用场景也在不断拓展,而不仅限于移动设备。MIPI接口在物联网、智能家居、智能监控、智能电视、智能汽车等领域也得到广泛应用。 MIPI还可
    发表于 01-22 08:56

    NanoEdge AI的技术原理、应用场景及优势

    硬件设计则是为了确保设备在执行这些任务时能够保持低能耗,从而提高其续航能力。 2、应用场景 NanoEdge AI 可以广泛应用于各种物联网设备和传感器,如智能家居、工业自动化、智能交通、医疗健康
    发表于 03-12 08:09

    MOS管的应用场景

    mos管的应用场景,你了解么?低压MOS管可称为金属氧化物半导体场效应管,因为低压MOS管具有良好的开关特性,广泛应用在电子开关的电路中。如开关电源,电动马达、照明调光等!下面银联宝科技就跟大家一起
    发表于 11-14 09:24

    CP-OFMD调制波形应用场景

    图1、5G的应用场景5G使用5G多载波波形来为智能手机,办公室,工厂自动化,智能电网,智慧城市,物联网,M2M,M2X等多种设备提供应用平台。5G新无线电(5G NR)根据应用场景可分为三大类服务
    发表于 06-18 06:51

    =>的使用场景有哪些

    使用场景
    发表于 10-27 13:25

    小容量OLT应用场景分析

    是2U高的紧凑型OLT形态。盒式OLT一般是固定式设备,线卡不可插拔,成本低;而2U高OLT一般具备电信级的保护,具备良好的电源、风扇、主控板冗余等能力。  二、小容量OLT应用场景分析  下面将按照
    发表于 12-03 14:29

    应用Bluetooth Smart技术的全套智能骑行设备的技术细节和应用场景,不看肯定后悔

    应用Bluetooth Smart技术的全套智能骑行设备的技术细节和应用场景,不看肯定后悔
    发表于 05-21 06:47

    蓝牙低功耗常见的应用场景及架构

    浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构
    发表于 06-15 09:51

    ARM的技术特征是什么?应用场景有哪些?

    ARM的技术特征是什么?应用场景有哪些?
    发表于 11-05 07:32

    MS9331的应用场景是什么?

    MS9331的应用场景是什么?
    发表于 02-11 06:41

    SMT组装工艺流程的应用场景

    工艺流程的应用场景。 01单面纯贴片工艺 应用场景: 仅在一面有需要焊接的贴片器件。 02双面纯贴片工艺 应用场景: A/B面均为贴片元件。 03单面混装工艺 应用场景: A面有贴
    发表于 10-20 10:31

    labview 和 wincc 的区别 使用场景

    labview 和 wincc 的区别 使用场景 都是上位机软件,都可以做监控软件 wincc的名气也比较大 对比的资料较少 写这些文章的人,从自己的从事的行业出发,带有自己的思维 使用的场景 肯定
    发表于 10-27 18:01

    工业场景中的NAT网关:使用功能与应用场景

    在网络领域,网络地址转换(NAT)网关是一种重要的技术设备,它的主要作用是解决网络地址和端口转换的问题,从而让内部网络中的设备能够与外部网络进行通信。它通过将内部网络中的IP地址和端口号映射
    的头像 发表于 09-11 14:13 292次阅读
    工业<b class='flag-5'>场景</b>中的<b class='flag-5'>NAT</b>网关:使用功能与应<b class='flag-5'>用场景</b>

    Redis的常用场景有哪些

    Redis的常用场景有哪些? 1、缓存 缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力。Redis提供了键过期功能,也提供了灵活的键淘汰
    的头像 发表于 10-09 10:44 339次阅读

    什么是NATNAT类型有哪些?NAT是如何工作的?NAT解决了什么问题?

    的方式来连接多个设备,而不需要为每个设备都分配一个公共IP地址。通过将源IP地址和端口号映射到公共IP地址和端口号,NAT充当了一个中间人,使得设备可以通过一个公共IP地址与外部网络进
    的头像 发表于 02-04 11:03 684次阅读