(最后更新日期:25-02-2025,包括语言翻译)。
在 MultiVPS 上通过 IPv4 向外发送 ICMP 网站 ping 时,在分配的端口范围之外大多不支持,原因是技术上的特殊性,即在主服务器和公共服务回退中执行了 NAT64。数据包头被更改,这意味着无法识别。
所有协议都支持通过 IPv6 到 IPv6 直接传输 ICMP。
如果您希望使用 TCP 的 10 端口范围或 UDP 的 5 端口范围(由我们的 NAT IPv4 实现所预测
另一种方法是在 VPS 上通过 IPv6 使用监听进程测试任何连接,然后尝试通过绑定端口从对方发送任何内容。请记住,端口总是在给定范围内为您预先打开的。
TCP 示例:尝试将 /etc/ssh/sshd_config 改为 VPS 预测端口范围内的一个端口。
确保将 “PubkeyAuthentication(公共密钥验证)”设置为 “No ”并取消注释(不含 #),将 “PasswordAuthentication(密码验证)”设置为 “Yes ”并取消注释。 保存。现在执行
sudo systemctl restart sshd
以重启 SSH 服务。在进行任何测试之前,确保它在两种格式上都在监听。
之后,你可以尝试使用 PuTTY、MobaXterm 或任何 SSH 客户端登录,插入全局服务器的 IPv4、VPS Linux 用户(root)和你刚刚在 SSH 服务中设置的特定端口,这样就能完美运行了。
29-10-2024 年,在 AlmaLinux 9.4 和 Debian 12 下,我们在 Windows 下的 MobaXterm 客户端和仅 IPv4 连接上测试了这一点,底层技术是 socat。
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”(测试 UDP),说明一切正常。
测试时间为 29-10-2024,测试对象是 Windows 下的 MobaXterm 客户端和仅 IPv4 访问,通过装有 Debian 12 的 VPS 进行。Socat 也是底层技术。
我们不能保证 RHEL 系统下的 “nc ”软件包在技术上等同于 Debian 和 Ubuntu 上的 netcat-openbsd(未测试),这也是因为它们有回溯更改的习惯,但我们可以保证 netcat-traditional 软件包不适合这项任务,因为它不支持 IPv6 侦听的 -6 参数。
如果您想计算 VPS 上的 IPv4 NAT 端口,请点击此处。