良许Linux教程网 干货合集 Linux下的nc命令太强大了!

Linux下的nc命令太强大了!

一、nc命令简介

nc,全称netcat,是一个功能强大的网络工具,被誉为网络界的瑞士军刀。它能够在命令行下读取和写入数据,扫描和连接指定端口,支持TCP和UDP协议,为工程师提供了广泛的应用场景。无论是运维还是网络工程师,熟练使用nc命令都能事半功倍,特别是在排查各种网络故障时。

Linux系统中,nc命令实际上执行的是ncat命令。nc命令的主要功能包括:

  1. 侦听任意TCP/UDP端口:nc可以作为服务器以TCP或UDP方式侦听指定端口。
  2. 端口扫描:nc可以作为客户端发起TCP或UDP连接,用于端口扫描。
  3. 文件传输:可用于在服务器之间进行文件传输。
  4. 网络测速:用于在服务器之间进行网络测速。

通过nc命令,我们可以轻松实现网络通信、端口监控等功能,是一款非常实用的网络工具。

二、nc命令用法

1、nc命令安装

centos7系统下安装命令如下:

yum install -y nc

安装成功后,查看nc版本号如下:

[root@master ~]# nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

2、nc命令常见语法格式

nc [参数] 域名/IP地址 [端口]

3、nc命令常见参数

-h:在线帮助;
-v:显示命令执行过程;
-u:指定使用的传输协议为UDP,默认为TCP;
-z:使用zero输入/输出模式,只在扫描通信端口时使用;
-l:使用监听模式,处于监听模式时,表示nc作为服务端,监听并接受连接,管控传入的资料;
-w:用来设置超时秒数,后面直接跟数字;

4、环境准备

以下案例通过两台服务器进行实验测试:

服务器1的IP:192.168.20.231

服务器2的IP:192.168.20.232

以上两台服务器防火墙皆为关闭状态下进行测试;

三、nc命令经典实用案例

1、测试服务器主机的TCP或UDP端口是否正常

这种测试场景在运维工作中很常见,当各个服务部署完后,发现无法正常访问服务,此时就要先确保网络是否正常了,除了链路需要测试,服务端口也要测试,因为有时候防火墙策略没有做好,导致服务端口不通。TCP端口测试方法比较多,UDP测试方法就比较少了,以下针对TCP端口和UDP端口测试都是基于nc命令测试的。

(1)测试服务器1和服务器2之间的某个TCP端口是否正常,通过nc启动TCP监听端口方式;

1)利用nc作为server端启动一个TCP监听端口,如在服务器2上启动监听端口为8888。命令如下:

nc -l 8888

此时服务器2处于TCP监听模式下,如下图所示:

image-20240403231509138
image-20240403231509138

2)此时在服务器1上通过nc作为客户端进行测试,看看其端口是否正常,命令如下:

nc -vz 192.168.20.232 8888

出现如下图结果,若出现类似1 bytes sent, 0 bytes received in xxx seconds等消息,则是TCP端口通的;若端口为通的,则命令返回码为0。

image-20240403231513571
image-20240403231513571

其它如下图结果,若出现Connection refused.则说明TCP端口不通,如果端口不通,此时命令返回码为1。

image-20240403231516925
image-20240403231516925

(2)测试服务器1和服务器2之间的某个UDP端口是否正常,通过nc启动UDP监听端口方式;

1)利用nc作为server端启动一个UDP监听端口,如在服务器2上启动监听端口为9999(注意此端口为服务器2非占用的端口)。命令如下:

nc -lu 9999

此时服务器2处于UDP监听模式下,如下图所示:

image-20240403231521660
image-20240403231521660

2)此时在服务器1上通过nc作为客户端进行测试,看看其网络连通性,命令如下:

nc -vuz 192.168.20.232 9999

出现如下图结果,若出现类似1 bytes sent, 0 bytes received in xxx seconds等消息,则是UDP端口通的;若端口为通的,则命令返回码为0。

image-20240403231525475
image-20240403231525475

其它如下图结果,若出现Connection refused.则说明UDP端口不通,如果端口不通,此时命令返回码为1。

image-20240403231528578
image-20240403231528578

2、通过nc命令在两台服务器之间进行文件或目录传输

(1)将服务器1上的haodao_send.txt文件传输到服务器2上,并且命名为haodao_rece.txt;

1)服务器1上的haodao_send.txt文件内容如下图:

image-20240403231531644
image-20240403231531644

2)服务器2上启动接收监听端口服务;

nc -l 9898 > haodao_rece.txt

意思是把9898端口上接收到的数据都写在haodao_rece.txt文件中。(这里的文件名可以自己定义)

3)服务器1上往服务器2的9898端口发送数据,把haodao_send.txt文件发送过去;

nc 192.168.20.232 9898 

4)待服务器2接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:

image-20240403231537810
image-20240403231537810

(2)将服务器1上的haodao_test目录(目录中包含多个文件)传输到服务器2上,完成拷贝;

1)服务器1上/root/haodao_test目录结构如下图所示:

image-20240403231541561
image-20240403231541561

2)服务器2上启动接收监听端口服务;

nc -l 9898 | tar -xzvf -

3)服务器1上往服务器2的9898端口打包发送数据,把haodao_test目录及目录下文件打包发送过去;

tar czvf - haodao_test |nc 192.168.20.232 9898

4)待服务器2接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:

image-20240403231547938
image-20240403231547938

**3**、****通过nc命令测试两台服务器之间的网速

这个测速原理就是利用文件传输原理来进行,即把服务器1的/dev/zero发送给服务器2的/dev/null,这就相当于把服务器1的无限个0,传输给到服务器2上的空设备。然后通过dstat命令来监测网速。

1)两台服务器上安装dstat命令,用于监测网速;

yum install -y dstat

2)服务器2上启动接收监听端口服务,监听9696端口,把来自这个端口的数据都输出到/dev/null;

 nc -l 9696 > /dev/null 

3)服务器1上往服务器2的9696端口发送数据,把无限个0发送给服务器2的9696端口;

nc 192.168.20.232 9696 

4)服务器1上重开一个ssh窗口,执行dstat命令查看网速,看到结果如下图所示:

image-20240403231555411
image-20240403231555411

可以看到,服务器1上接收数据为140K左右,发送110M左右;

5)服务器2上重开一个ssh窗口,执行dstat命令查看网速,看到结果如下图所示:

image-20240403231559648
image-20240403231559648

可以看到,服务器2上接收数据为105M左右,发送140K左右;

四、总结

nc命令功能比较多,大家感兴趣也可以去挖掘它那些功能看看,本文罗列一些大家平时在运维或者测试工作中常用的功能。简单实用型有助于我们爱上一款测试工具。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部