| 2025-02-23
多层 NAT 穿透是指在存在多个网络地址转换(NAT)设备的网络环境中,实现内网设备与外部网络的通信。可借助专业的内网穿透工具如花生壳,其通过云服务器建立连接、映射端口来实现;也能利用开源软件 frp,通过配置服务端和客户端文件来达成。在配置时,需明确各层 NAT 设备的网络参数,根据实际情况选择合适的穿透方式。
一、多层 NAT 穿透基础
多层 NAT 网络架构
在网络中,NAT 设备用于将内网的私有 IP 地址转换为公网 IP 地址,实现内网设备对外部网络的访问。当存在多个 NAT 设备时,就形成了多层 NAT 网络架构。例如,企业网络中,可能有企业级路由器作为第一层 NAT 设备连接到互联网,企业内部又划分了多个子网,每个子网通过各自的路由器进行第二层 NAT 转换,这种情况下就出现了多层 NAT。在家庭网络中,有时也会存在类似情况,如用户家中既有主路由器连接宽带,又通过交换机连接了副路由器扩展网络,副路由器也进行 NAT 转换,这就构成了简单的两层 NAT 网络。
多层 NAT 带来的问题
1.通信障碍:多层 NAT 会导致内网设备与外部网络直接通信困难。因为每经过一层 NAT,IP 地址和端口都会发生转换,外部设备很难直接找到内网中的目标设备。例如,当外部用户想要访问企业内网中的一个 Web 服务器时,由于经过多层 NAT,外部用户无法直接使用 Web 服务器的内网 IP 和端口进行访问,请求可能会在 NAT 设备之间迷失方向,无法到达目标服务器。
2.端口冲突:多层 NAT 下,不同层 NAT 设备可能会对端口进行重复映射,导致端口冲突。比如,第一层 NAT 设备将公网的 8080 端口映射到第二层 NAT 设备的 80 端口,而第二层 NAT 设备又将自身的 80 端口映射到内网服务器的 80 端口,这样当外部请求到达时,就可能出现端口冲突,无法正确转发请求。
二、多层 NAT 穿透的配置方法
使用花生壳实现多层 NAT 穿透
1.注册与安装花生壳客户端:访问花生壳官网(https://hsk.oray.com/),注册花生壳账号。在官网下载中心,根据设备的操作系统类型,选择相应的花生壳客户端版本进行下载安装。安装完成后,使用注册的账号登录花生壳客户端。花生壳支持 Windows、Linux、Mac 等多种操作系统,还可在树莓派、OpenWRT 等系统设备上使用,并且全新推出了 docker 部署方案,无论是 NAS、ECS、VPS,或者轻主机、Linux 物理机,甚至是安卓盒子、路由器,只要支持 docker,都可以使用花生壳应用 。
2.配置端口映射:登录花生壳客户端后,点击客户端界面右下角的 “+” 按钮,进入端口映射配置页面。假设我们要将内网中的一台 Web 服务器(内网 IP 为 192.168.2.100,端口为 80)通过花生壳实现外网访问。填写应用名称(如 “Web 服务”)、映射类型(选择 HTTP,因为 Web 服务基于 HTTP 协议)、外网域名(可以使用花生壳提供的免费壳域名,也可绑定自己的域名)、外网端口(可选择随机端口或指定特定端口,如 8080)、内网主机(填写内网 Web 服务器的 IP 地址 192.168.2.100)、内网端口(填写 80)。花生壳会通过云服务器快速与内网服务器建立连接,同时把内网端口映射到云端,实现基于域名的互联网访问,即使在多层 NAT 网络环境下,也能让外部用户通过花生壳生成的外网域名和端口访问到内网的 Web 服务器。
使用 frp 实现多层 NAT 穿透
1.安装 frp 服务端:在拥有公网 IP 的服务器上安装 frp 服务端。以 Linux 系统为例,首先从 frp 官方仓库(https://github.com/fatedier/frp/releases)下载适合系统的 frp 压缩包,解压后进入解压目录。例如,下载的是 frp_0.49.0_linux_amd64.tar.gz,解压命令为:
tar -zxvf frp_0.49.0_linux_amd64.tar.gz
cd frp_0.49.0_linux_amd64
然后编辑 frp 服务端配置文件frps.ini,基本配置如下:
[common]
bind_port = 7000
这里bind_port指定了 frp 服务端监听的端口,可根据实际情况修改。
2.安装 frp 客户端:在内网需要穿透的设备上安装 frp 客户端。同样从官方仓库下载适合的压缩包并解压。进入解压目录后,编辑 frp 客户端配置文件frpc.ini,假设要穿透的是内网的 SSH 服务(内网 IP 为 192.168.2.100,端口为 22),配置如下:
[common]
server_addr = 公网服务器IP
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.2.100
local_port = 22
remote_port = 7001
其中server_addr填写公网服务器的 IP 地址,server_port填写 frp 服务端监听的端口(与frps.ini中的bind_port一致),local_ip和local_port分别填写内网 SSH 服务的 IP 地址和端口,remote_port指定在公网服务器上用于访问内网 SSH 服务的端口。
三、多层 NAT 穿透的应用场景
远程办公
在企业中,员工可能需要在家中访问企业内网的办公系统、文件服务器等资源。但企业网络通常处于多层 NAT 环境下,通过多层 NAT 穿透技术,如使用花生壳或 frp,员工可以在家庭网络中通过互联网访问企业内网资源。例如,员工在家中使用浏览器,通过花生壳生成的域名和端口,访问企业内网的 OA 办公系统,进行文件审批、工作汇报等操作,就像在企业内部办公一样方便。
远程设备管理
对于一些物联网设备或智能家居设备,它们可能部署在家庭或企业的内网中,而管理员需要在外部网络对其进行管理和监控。例如,企业部署的智能安防摄像头,处于多层 NAT 网络中,管理员可以利用多层 NAT 穿透技术,远程查看摄像头的实时画面、回放录像等。又如,家庭中的智能路由器、智能音箱等设备,用户在外出时也可以通过多层 NAT 穿透,远程对其进行设置和控制。
游戏联机
在多人在线游戏中,玩家可能分布在不同的网络环境,有些玩家的网络可能处于多层 NAT 之下。通过多层 NAT 穿透,玩家可以建立虚拟的局域网,实现游戏联机。比如,几个朋友想要一起玩一款局域网联机游戏,但各自的网络情况复杂,存在多层 NAT,使用花生壳等内网穿透工具,将游戏服务器端口进行映射,玩家就可以通过互联网连接到游戏服务器,一起愉快地玩耍。
通过合理配置多层 NAT 穿透,能够有效解决多层 NAT 网络带来的通信问题,满足不同场景下的网络访问需求。
拓展阅读
1.NAT 的工作原理是什么:NAT 工作原理是将内网设备的私有 IP 地址和端口转换为公网 IP 地址和端口,实现内网设备与外部网络的通信,分为静态 NAT、动态 NAT 和端口地址转换(PAT),通过修改 IP 数据包的源或目的 IP 地址及端口号来完成转换。
2.如何在路由器上设置端口映射:在路由器管理界面中,找到 “端口映射”“虚拟服务器” 等类似选项,添加映射规则,填写内网设备 IP 地址、端口号以及要映射的公网端口号等信息,不同品牌和型号的路由器设置位置和方法略有差异 。
3.花生壳的付费版本和免费版本有哪些区别:花生壳免费版本提供 1Mbps 的转发带宽,支持 2 条映射路线和 10 并发服务;付费版本不限流量,并发数可达 30 条以上,且根据套餐不同,转发带宽等也有提升,还可能提供更多高级功能和更好的服务保障 。