使用 Netcat 测试虚拟机 TCP/UDP 端口连通性

05/23/2018

本文内容

Netcat 是一个用于 TCP/UDP 连接和监听的工具,主要用于网络传输和调试。本文主要介绍如何使用 Netcat 测试 Windows/Linux 虚拟机 TCP/UDP 端口的连通性。主要包含以下内容:

前提条件

使用 Azure 门户创建 Linux 虚拟机 和 Windows 虚拟机。本文 Linux 虚拟机使用的是 CentOS 镜像,Windows 虚拟机使用的是 Windows server 2012 DataCenter 镜像。

在客户端和服务器端虚拟机上分别安装 Netcat 工具。

Linux 虚拟机 ( Centos 版本) 安装命令如下:

sudo yum install nc

Windows 虚拟机可以从 Internet 下载 Netcat 工具包。

Linux OS 环境下,使用 Netcat 命令分别测试 TCP/UDP 端口连通性

测试 TCP 端口连通性

本示例创建一台 Azure Linux 虚拟机做为服务器,通过 5000 端口测试 TCP 端口连通性,具体步骤如下:

通过 Azure 门户选中创建的 Linux 虚拟机,在边栏选项卡中选中网络,在网络安全组中添加 TCP 5000 入站端口规则。

android udp端口测试工具 测udp端口的工具_linux netcat测试udp端口

备注

注意网络安全组规则的优先级,确保入站规则有效,并处于 “允许” 状态。

默认情况下 Linux 虚拟机中未启用 “iptables” 服务,如果启用 “iptables” 服务,则需要在 “iptables” 中打开相应的端口。在本示例中 Linux 虚拟机未启用 iptables 服务。

远程连接到 Linux 虚拟机,安装 Netcat 工具之后,执行以下命令,实现 TCP 方式监听服务器 5000 端口

nc -l -v

备注

-l:指明 Netcat 处于 TCP 监听模式;-v:用于显示详细信息。

如果想要退出监听模式,可以使用 Ctrl + C 。

必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

在安装有 Netcat 的客户端机器上,执行以下命令:

nc

在客户端输入如上命令后,可以在客户端输入任意字符,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下:

客户端(本示例客户端使用的是 Linux 虚拟机,如果客户端机器是 Windows 系统,使用 cmd 命令提示符进入到 nc.exe 所在目录,然后执行如上命令):

android udp端口测试工具 测udp端口的工具_客户端_02

服务器端:

android udp端口测试工具 测udp端口的工具_TCP_03

测试 UDP 端口连通性

通过 Azure 门户选中创建的 Linux 虚拟机 ,在边栏选项卡中选中网络,在网络安全组中添加 UDP 5001 入站端口规则。

android udp端口测试工具 测udp端口的工具_客户端_04

备注

注意网络安全组规则的优先级,确保入站规则有效,并处于 “允许” 状态。

默认情况下 Linux 虚拟机中未启用 “iptables” 服务,如果启用 “iptables” 服务,则需要在 “iptables” 中打开相应的端口。在本示例中 Linux 虚拟机未启用 iptables 服务。

远程连接到 Linux 虚拟机,安装 Netcat 工具之后,执行以下命令,实现 UDP 方式监听 5001 端口

nc -lu -v

备注

-lu:指明 Netcat 处于 UDP 监听模式;-v:用于显示详细信息。

如果想要退出监听模式,可以使用 Ctrl + C 。

必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

在安装有 Netcat 的客户端机器上,执行以下命令:

nc -u

在客户端输入如上命令后,可以在客户端输入任意字符,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下:

客户端(本示例客户端使用的是 Linux 虚拟机,如果客户端机器是 windows 系统,使用 cmd 命令提示符进入到 nc.exe 所在目录,然后执行如上命令):

android udp端口测试工具 测udp端口的工具_Windows_05

服务器端:

android udp端口测试工具 测udp端口的工具_linux netcat测试udp端口_06

Windows OS 环境下,使用 Netcat 命令分别测试 TCP/UDP 端口连通性

测试 TCP 端口连通性

本示例创建一台 Azure Windows 虚拟机做为服务器,本地 Windows 计算机做为客户端,客户端和服务器通过 5000 端口相连,具体步骤如下:

通过 Azure 门户选中 Windows 虚拟机 ( dillionvm ),在边栏选项卡中选中网络,在网络安全组中添加 TCP 5000 入站端口规则。

android udp端口测试工具 测udp端口的工具_linux netcat测试udp端口_07

重要

注意网络安全组规则的优先级,确保入站规则有效,并处于 “允许” 状态。

对于 Windows 虚拟机,从 Azure 门户添加完入站端口规则之后,需要远程连接到虚拟机,在防火墙中添加相对应的 TCP 入站规则。

远程连接到 Azure Windows 虚拟机,使用 cmd 命令导航至 nc.exe 所在目录,执行以下命令,实现 TCP 方式监听服务器端 5000 端口。

nc -l -p -v

备注

-l:指明 Netcat 处于 TCP 监听模式;-p : 指定端口号;-v:用于显示详细信息。

如果想要退出监听模式,可以使用 Ctrl + C 。

必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

在安装有 Netcat 的客户端机器上,执行以下命令:

nc

在客户端输入如上命令后,可以在客户端输入任意字符,然后按回车键,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下:

客户端:

android udp端口测试工具 测udp端口的工具_TCP_08

服务器端:

android udp端口测试工具 测udp端口的工具_Windows_09

测试 UDP 端口连通性

通过 Azure 门户选中 Windows 虚拟机 ( dillionvm ) ,在边栏选项卡中选中网络,在网络安全组中添加 UDP 5001 入站端口规则。

android udp端口测试工具 测udp端口的工具_TCP_10

重要

注意网络安全组规则的优先级,确保入站规则有效,并处于 “允许” 状态。

对于 Windows 虚拟机,从 Azure 门户添加完入站端口规则之后,需要远程连接到虚拟机,在防火墙中添加相对应的 UDP 入站规则。

远程连接到 Azure Windows 虚拟机,使用 cmd 命令导航至 nc.exe 所在目录,执行以下命令,实现 UDP 方式监听服务器 5001 端口。

nc -lu -p -v

备注

-lu:指明 Netcat 处于 UDP 监听模式;-p:指定端口号;-v:用于显示详细信息。

如果想要退出监听模式,可以使用 Ctrl + C 。

必须要先在服务器端监听端口,然后在客户端访问该端口,才能建立连接。

在安装有 Netcat 的客户端机器上,执行以下命令:

nc -u

在客户端输入如上命令后,可以在客户端输入任意字符,然后按回车键,我们可以看到,客户端输入的字符均会在服务器端打印出来。测试结果如下:

客户端:

android udp端口测试工具 测udp端口的工具_客户端_11

服务器端:

android udp端口测试工具 测udp端口的工具_客户端_12