NAT端口范围测试
为确保正常运行,您希望通过NAT IPv4系统运行的应用程序必须满足以下要求:
- 应用程序必须支持双栈(即同时支持IPv4和IPv6连接);
- 必须能监听IPv6和IPv4地址格式(即[::]::0和0.0.0.0/0,分别是IPv6和IPv4的全通地址);
- 仅限UDP使用场景:必须通过UDP发送连续数据包流。
几乎所有Linux应用程序都支持双栈连接。已知例外情况包括:
- SOCKS 4 和 SOCKS 4a(SOCKS 5 版本已支持);
- Docker 仅限 27.0.1 之前的版本(该版本于 2024 年 6 月 24 日发布)。部分发行版仍采用旧版 26,例如 Debian 12 和 13; 例如Ubuntu 24.04 LTS已确认支持27.5版Docker,可作为可用替代方案;
- Kubernetes(仅限2021年12月前的版本)。Debian 10不支持该功能,首次支持出现在Debian 11;
- 2017/2018年前的其他软件。
在NAT端口计算器中显示的NAT IPv4地址无需提供给VPS上的应用程序。只需将应用程序映射到监听全局地址即可。发往特定端口范围的流量将通过我们的NAT桥接自动拆分,当无法直接通过IPv6地址访问时,将自动转发至IPv4地址。
TCP与UDP测试示例
请注意:指定范围内的端口均已自动预先开放,无需提交工单。
TCP示例:尝试将/etc/ssh/sshd_config中的端口修改为VPS预测端口范围内的任意端口。
确保“PubkeyAuthentication”设置为No且未注释(无#符号),同时“PasswordAuthentication”设置为Yes且未注释。保存后执行:
sudo systemctl restart sshd [适用于Debian、AlmaLinux、Rocky Linux、Fedora] 或
sudo systemctl restart ssh [适用于Ubuntu]
以重启SSH服务。测试前请确保服务同时监听两种格式。
随后可使用PuTTY、MobaXterm等SSH客户端登录:输入全球服务器的IPv4地址、VPS Linux用户名(root)及您刚设置的SSH服务端口,即可完美连接。
此方案已于2024年10月29日在Windows环境的MobaXterm客户端进行测试,采用仅IPv4连接且底层使用socat技术,测试环境为AlmaLinux 9.4与Debian 12。
UDP示例:在Debian或Ubuntu系统中安装netcat-openbsd。安装后,确保在netcat前不执行其他命令,运行以下指令:
nc -6 -u -l -p [您的端口号]
其中[您的端口号]应为VPS上NAT IPv4专用的UDP端口范围(请查阅知识库文章了解NAT IPv4端口计算方法)。
程序将开始通过IPv6在指定端口监听,并保持该状态。
随后尝试通过UDP发送任意内容(文本、消息等):
在Windows Powershell中:
$message = “Test UDP”; $udpClient = New-Object System.Net. Sockets.UdpClient; $udpClient.Connect(“116.xxx.xxx.xxx”, [您的端口号]); $bytes = [Text.Encoding]::ASCII.GetBytes($message); $udpClient.Send($bytes, $bytes.Length); $udpClient.Close()
在 Linux 中
echo “Test UDP” | nc -u -w1 116.xxx.xxx.xxx [您的端口号]
其中“116.xxx.xxx.xxx”是您服务器层级的公共全球IPv4地址,[您的端口号]则是UDP专用端口号——该端口号必须与VPS进程监听端口完全一致,且必须与您的UDP端口范围完全相同。
若您的VPS收到“Test UDP”提示,则表示系统运行正常。
本方案于2024年10月29日在Windows环境的MobaXterm客户端进行测试,通过仅支持IPv4访问的Debian 12 VPS实现,底层采用Socat技术。
我们无法保证基于RHEL系统的“nc”包与Debian/Ubuntu的netcat-openbsd在技术上完全等效(未实际测试),部分原因在于其变更回溯的特性。但可明确指出netcat-traditional包不适用于此任务,因其不支持用于IPv6监听的-6参数。
关于IPv4上的ICMP连接性
MultiVPS不支持超出分配端口范围的出站IPv4 ICMP IP ping操作,这源于技术特性——主服务器及公共服务备用节点均采用DNS64实现方案。该方案会修改数据包头,且DNS64需先将请求转换为有效域名,因此无法识别纯IP地址通信。
因此,若IPv4地址以域名形式存在,则支持对其进行ping操作。
所有协议均始终支持直接IPv6到IPv6的ICMP通信,无论目标是IP地址还是域名。
如果您想计算 VPS 上的 IPv4 NAT 端口,请点击此处。