NAT(网络地址转换)技术用于在私有网络和公有网络之间进行IP地址转换。NAT3和NAT4实际上并不是正式的网络技术术语,而是一些网络服务提供商用来描述不同类型的NAT实现的非正式术语。通常来说,NAT可以分为以下几种类型:

  1. NAT1(Full Cone NAT): 这是最开放的NAT类型。任何外部主机只要知道内部主机的IP地址和端口号,就可以通过相同的外部IP和端口访问内部主机。
  2. NAT2(Restricted Cone NAT): 在这种类型下,只有内部主机与外部主机进行通信后,外部主机才能通过相同的外部IP和端口访问内部主机。
  3. NAT3(Port-Restricted Cone NAT): 这种类型要求外部主机必须知道内部主机的特定端口号才能进行通信。只允许内部主机发起的连接,外部主机只能响应这些连接。
  4. NAT4(Symmetric NAT): 这是最严格的NAT类型。每个外部主机的通信都使用不同的映射端口,只有目标主机才能进行回应。这意味着相同的内部IP和端口对不同的外部地址和端口会有不同的映射,这种类型的NAT最难与外部主机建立连接。

如何测试当前网络类型

本教程将指导您如何在 Mac 终端上安装 Python、pip,并使用 pystun3 获取您的 NAT 类型。请按照以下步骤操作。

1. 检查并安装 Python(已经安装可跳过)

首先,我们需要检查是否已经安装了 Python。打开终端并输入以下命令:

1
python3

如果您看到如下提示信息:

1
command not found: python3

则表示您的系统尚未安装 Python 3。请使用以下命令通过 Homebrew 安装 Python 3:

1
brew install python3

安装完成后,您可以通过以下命令验证 Python 是否安装成功:

1
python3 --version

2. 安装 pip(已经安装可跳过)

首先验证一下是否安装了pip,如果安装可跳过

1
pip3 --version

Python 的包管理工具 pip 通常随 Python 安装包一起安装。如果您需要单独安装 pip,请使用以下命令:

1
python -m ensurepip

或者

1
python3 -m ensurepip

安装成功后,您可以使用以下命令验证 pip 是否安装成功:

1
pip3 --version

3. 安装 pystun3

接下来,我们使用 pip 安装 pystun3。这是一个用于获取 STUN 服务器信息的 Python 库。

1
python -m pip install pystun3

或者

1
python3 -m pip install pystun3

安装完成后,您可以通过以下命令验证 pystun3 是否安装成功:

1
pip3 show pystun3

4. 使用 pystun3 获取 NAT 类型

现在,我们将使用 pystun3 获取 NAT 类型。首先,在终端中启动 Python 解释器:

1
python3

然后,输入以下 Python 代码:

1
2
import stun
stun.get_ip_info()

运行这些代码后,您将看到类似以下的信息输出:

nat类型

这些信息包含了您的 NAT 类型、外部 IP 地址以及外部端口。

NAT1:Full Cone NAT(全锥形NAT);

NAT2:Address Restricted Cone NAT(受限锥型NAT);

NAT3:Port Restricted Cone NAT(端口受限锥型NAT);

NAT4:Symmetric NAT(对称型NAT);

总结

现在宽带大多都是NAT4来应对ipv4地址枯竭的问题,NAT4限制了用户与用户之间信息的直接传输,比如联机游戏等都无法正常连接,NAT4的宽带基本上就没办法跑一些宽带变现的设备和穿透服务,推荐NAT4用户尝试使用frp等方式转发来实现,但是带宽会差很多。

参考文章

如何在MAC中测试NAT类型