• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

内网穿透

武飞扬头像
中新赛克
帮助1

学新通

内网穿透,也叫NAT穿透,进行NAT穿透是为了使具有某一个特定源ip地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。

什么是【内网穿透】?

在当前的互联网环境中,由于IPv4的公网地址数量是有限的,无法给每一台需要接入互联网的设备分配一个公网ip。为了解决这一问题,大量接入网络的设备都只能分配到一个私有ip地址。

在一个公司或家庭内部,可以借助私有ip搭建一个网络用于相互通讯,这个网络被称为内网,位于同一个内网中的设备可以通过私有ip直接相互访问。而在互联网中,可以被直接访问的网站都需要拥有公网ip,当内网中的设备需要访问这些网站时,例如登录微信,百度查资料等等,需要借助网络地址转换技术(NAT)将私有ip转换为公有ip。

如此一来,虽然解决了公网ip不足的问题,但是位于内网中的设备无法被外网中的设备直接访问,同样,位于不同内网中的设备也无法直接相互访问。“内网穿透”就是为了能让两个位于不同内网中的设备可以直接通信的技术。

关于【NAT】?

内网穿透”又被称为“NAT穿透”,想要了解内网穿透,要先明白NAT的原理。目前使用最多的NAT方式为NAPT(网络地址端口转换)。下文中的NAT皆指“NAPT”。

用一个简化的模型来说明NAPT的实现机制:

服务器Server1 :3.3.3.3

服务器Server1 :4.4.4.4

NAT网关:5.5.5.5、192.168.0.1

内网设备PC1:192.168.0.5

学新通

“3.3.3.3”、“4.4.4.4”、“5.5.5.5”都是公网ip可以在互联网中相互访问。

  • 当PC1的10000端口访问Server1的111端口时,PC1发出的数据包中ip和端口情况为192.168.0.5:10000 => 3.3.3.3:100;

  • 当数据包到达NAT网关后,NAT网关发出的数据包为5.5.5.5:20000 => 3.3.3.3:100;

  • Server1接收到NAT网关发来的数据包后,发出响应包3.3.3.3:100 => 5.5.5.5:20000;

  • NAT网关接收到响应包后,通过查询NAT表,向PC1发出3.3.3.3:100 => 192.168.0.5:10000;

以上便是192.168.0.5:10000和3.3.3.3:100之间借助NAT通信的过程。

根据对ip和端口的限制机制,NAT可以分为四类,“全锥形NAT”、“地址受限锥形NAT”、“端口受限锥形NAT”和“对称NAT”。

  • 全锥形NAT

在以上的场景中,192.168.0.5:10000和5.5.5.5:20000建立了映射关系,当公网上的其他设备访问5.5.5.5:20000时,都会被NAT网关转发到PC1中。

例如,Server2主动向NAT网关发出数据包4.4.4.4:101 => 5.5.5.5:20000,会被NAT网关转换为4.4.4.4:101 => 192.168.0.5:10000发送给PC1。这种NAT被称为“全锥形NAT”。
  • 地址受限锥形NAT

如果在全锥形NAT的基础上增加限制条件,可以实现地址受限锥形NAT。

在以上的场景中,由于192.168.0.5:10000和3.3.3.3:100之间的通信,192.168.0.5:10000和5.5.5.5:20000建立了映射关系,但是只允许Server1可以借助这条映射和192.168.0.5:10000通信,Server2发来的数据包4.4.4.4:101 => 5.5.5.5:20000会被丢弃。

 

  • 端口受限锥形NAT

在地址受限锥形NAT的基础上,再增加对端口的限制,就是端口受限锥形NAT。

例如,仅允许Server1的100端口可以借助192.168.0.5:10000和5.5.5.5:20000之间的映射关系和192.168.0.5:10000通信。Server1其他端口发出的数据包3.3.3.3:101 => 5.5.5.5:20000会被NAT网关丢弃。

注意:在受限锥形NAT中,禁止被限制对象主动和内网通信。例如Server2无法主动发送数据包到PC1的10000端口,但是PC1向Server2主动发起通信请求不受影响。

  • 对称NAT

在受限锥形NAT中,内网同一ip的同一端口和外部通信时,建立的映射关系是一对一的。

例如,192.168.0.5:10000和Server1、Server2的不同端口通信时,都会被转换成3.3.3.3:20000。而在对称NAT中,内网同一ip的同一端口和外部通信时,建立的映射关系是一对多的。

例如,192.168.0.5:10000和3.3.3.3:100通信时,会被转换为3.3.3.3:20000,和3.3.3.3:101通信时,会被转换为3.3.3.3:20001。

关于【内网穿透技术】

所谓“内网穿透”就是让两个在不同内网中的设备可以直接通信。

同样用一个简化的模型来说明:

服务器Server1 :3.3.3.3

服务器Server1 :4.4.4.4

NAT网关1:5.5.5.5、192.168.0.1

内网设备PC1:192.168.0.5

NAT网关2:6.6.6.6、192.168.1.1

内网设备PC2:192.168.1.7

辅助服务器Server3 : 7.7.7.7

学新通

需要借助内网穿透技术实现PC1和PC2之间的通信。

方案一:

在全锥形网络中,实现内网穿透最容易。需要相互通信的内网设备分别和辅助服务器建立连接,辅助服务器便可以获取每个设备和各自NAT网关的映射关系。

辅助服务器将映射关系分发给每个内网设备,内网设备便可以直接利用这些映射关系和其他内网的设备通信。

例如,PC2希望和PC1的10000端口通信,需经历以下步骤:

a. PC1使用10000端口和Server3建立连接;

b. Server3收到PC1的连接请求,获得PC1和NAT网关1之间的映射关系为192.168.0.5:10000 <=> 5.5.5.5:20000;

c. PC2和Server3建立连接,接收Server3发来的映射信息;

d. PC2直接向5.5.5.5:20000发起连接请求;

e. PC1同意PC2发来的连接请求,连接建立完毕。

方案二:

方案一仅能在全锥形网络中生效,如果NAT网关1为受限锥形NAT网关,PC2发来的连接请求会被直接丢弃。在这种情景下,需要采取额外的措施使PC1和PC2之间能够通信。

假设PC2希望和PC1的10000端口通信,但是二者皆通过端口受限锥形NAT和互联网通信:

a. PC1使用10000端口和Server3建立连接;

b. PC2使用10000端口和Server3建立连接;

c. Server3收到连接请求,获得关系192.168.0.5:10000 <=> 5.5.5.5:20000、192.168.1.6:10000 <=> 6.6.6.6:20000;

d. PC1通过10000端口向6.6.6.6:20000发起连接请求。PC1的连接请求会被NAT网关2丢弃,但是在NAT网关1中,PC1和6.6.6.6:20000之间的通信已经被允许。;

e. PC2直接向5.5.5.5:20000发起连接请求;

f. 请求顺利到达PC1,PC1同意PC2发来的连接请求,连接建立完毕。

在对称NAT中,由于和不同地址建立的映射端口不同,无法实现内网穿透。

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgkefcg
系列文章
更多 icon
同类精品
更多 icon
继续加载