X
X
X
X

知識庫

主頁知識庫New VirtFusion Based VPSICMP - IPv4 Pings 和 NAT IPv4 端口范围测试

ICMP - IPv4 Pings 和 NAT IPv4 端口范围测试

NAT 端口范围测试

为了确保 NAT IPv4 系统正常工作,您希望通过 NAT IPv4 系统运行的应用程序必须满足以下要求:

- 应用程序最好是双栈的(即支持 IPv4 和 IPv6 连接);

- 必须能够监听 [::]::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 已确认支持 Docker 27.5 版本,使其成为一个可用的替代方案;

- Kubernetes(仅限 2021 年 12 月之前的版本)。Debian 10 暂不支持,Debian 11 开始支持。

- 2017/2018 年之前的其他软件。

VirtFusion 的 NAT 端口映射(位于 VirtPortal,网址为 virtportal.cfld.uk)中指定的 NAT IPv4 地址无需提供给 VPS 上的应用程序,因为该应用程序将拥有私有 IPv4 地址和公共 IPv6 地址。只需让应用程序监听通配符地址即可。发送到特定端口范围的流量将由我们的 Libvirt 桥接自动拆分,如果无法访问其中一个地址,则会自动切换到另一个地址。

TCP 和 UDP 测试示例

请注意:系统会自动为您预先打开指定出站端口范围内的端口,您只需按照 VirtPortal 上显示的方案,将它们映射到您想要的任何内部端口即可。您无需提交工单,事实上,我们明确不支持 NAT 端口操作的工单,这完全由用户自行完成。

TCP 示例:尝试将 VPS 上的某个服务(例如 /etc/ssh/sshd_config)的端口(1024 以下的端口或 22 端口除外)更改为任意一个端口。

确保“PubkeyAuthentication”设置为“否”且未注释(不带 # 符号),“PasswordAuthentication”设置为“是”且未注释。保存。现在执行以下操作:

sudo systemctl restart sshd [适用于 Debian、AlmaLinux、Rocky Linux、Fedora],或

sudo systemctl restart ssh [适用于 Ubuntu]

以重启 SSH 服务。在进行任何测试之前,请确保它监听两种协议。

之后,您可以尝试使用 PuTTY、MobaXterm 或任何 SSH 客户端登录,输入全局服务器的 IPv4 地址、VPS Linux 用户(root)以及 VirtFusion 门户网站 VirtPortal 上指定的出站端口(例如 43560);它将直接映射到您为 SSH 指定的内部端口(例如 4096);并且应该可以正常工作。

另一个不错的解决方案是安装 iperf3 服务器/客户端动态配置,让您的 VPS 作为 iperf3 服务器,任何运行 Linux 的计算机作为 iperf3 客户端。默认情况下,此方案使用 TCP 协议,并支持单流。您始终可以选择使用更多流进行测试,或者同时使用 UDP 进行测试。您可以根据 VirtPortal 的 NAT 端口映射,在您的 VPS 上指定任何内部端口进行测试。

互联网上有许多关于 iperf3 软件包的指南,它们适用于我们的 VPS 系统,因为我们采用的是标准的 IPv4 NAT。只需确保客户端始终指向系统的 IPv6 地址或公网 IPv4 地址(即全球专用服务器的 IP 地址),即可开始测试。

UDP 测试示例:安装 netcat-openbsd,该软件包可在 Debian 或 Ubuntu 系统下使用。安装完成后,请确保在运行 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" 的输出,则一切正常。

你覺得有用嗎?
(瀏覽了 4123 次/有 2 人發現它有幫助)

Powered by WISECP
Top