关注上方 浩道Linux ,回复 资料 ,即可获取海量 L inux 、 Python 、 网络通信、网络安全 等学习资料!
前言
大家好,这里是 浩道Linux ,主要给大家分享 L inux 、 P ython 、 网络通信、网络安全等 相关的IT知识平台。
今天浩道跟大家分享一个非常实用且强大的Linux命令,即nc,它被广泛用于网络相关的排查工作,本文将通过大量例子进行详细的分析其命令用法。大家感兴趣可以收藏,以防需要用到时无从下手!同时告诉你,这个命令也很受测试妹子欢迎,她们也是常用的,所以掌握好这个命令,你可以在他们面前炫耀一把技术水平!
一、nc命令介绍
nc是netcat的简写,是一个功能强大的网络工具,其功能是用于扫描与连接指定端口,有着网络界的瑞士军刀美称。它能够基于命令行在网络上读取和写入数据,连接与扫描指定端口号,支持TCP和UDP协议,为广大工程师提供无限潜在功能。不管是运维工程师还是网络工程师,熟悉使用这个命令都可以让很多工作事半功倍,尤其是在排查各类网络故障方面。
netcat即是网络猫的意思,在linux系统中nc命令实际执行命令是ncat。nc命令的主要作用如下:
1、实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口;
2、端口的扫描,nc可以作为client发起TCP或UDP连接;
3、服务器之间进行文件传输;
4、服务器之间进行网络测速;
二、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监听模式下,如下图所示:
2)此时在
服务器1
上通过nc作为客户端进行测试,看看其端口是否正常,命令如下:
nc-vz 192.168.20.232 8888
出现如下图结果,若出现类似 1 bytes sent, 0 bytes received in xxx seconds 等消息,则是TCP端口通的;若端口为通的,则命令返回码为0。
其它如下图结果,若出现 Connection refused .则说明TCP端口不通,如果端口不通,此时命令返回码为1。
(2)测试 服务器1 和 服务器2 之间的 某个UDP端口 是否正常, 通过nc启动UDP监听端口方式;
1)利用nc作为server端启动一个UDP监听端口,如在 服务器2 上启动监听端口为 9999 (注意此端口为服务器2非占用的端口)。命令如下:
nc -lu 9999
此时服务器2处于UDP监听模式下,如下图所示:
2)此时在
服务器1
上通过nc作为客户端进行测试,看看其网络连通性,命令如下:
nc-vuz 192.168.20.232 9999
出现如下图结果, 若出现类似 1 bytes sent, 0 bytes received in xxx seconds 等消息,则是UDP 端口通的; 若 端 口为通的, 则命令返回码为0。
其它如下图 结果 , 若出现 Connection refused .则说 明UDP 端口不通,如果端口不通,此时命令返回码为1 。
2、通过nc命令在两台服务器之间进行文件或目录传输
(1)将 服务器1 上的 haodao_send.txt 文件传输到 服务器2 上,并且命名为 haodao_rece.txt ;
1)
服务器1
上的
haodao_send.txt
文件内容如下图:
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 < haodao_send.txt
4)待
服务器2
接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:
(2)将 服务器1 上的 haodao_test 目录(目录中包含多个文件)传输到 服务器2 上,完成拷贝;
1) 服务器1 上 /root/haodao_test 目录结构如下图所示:
2) 服务器2 上启动接收监听端口服务;
nc -l 9898 | tar -xzvf -
3) 服务器1 上往 服务器2 的9898端口打包发送数据,把haodao_test目录及目录下文件打包发送过去;
tar czvf - haodao_test |nc 192.168.20.2329898
4)待 服务器2 接收完毕后,会自动断开监听连接,此时可以查看接收到的文件与发送端一样,如下图所示:
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端口;
nc192.168.20.2329696 < /dev/zero
4)
服务器1
上重开一个ssh窗口,
执行
dstat
命令
查看网速,看到结果如下图所示:
可以看到,服务器1上接收数据为140K左右,发送110M左右;
5) 服务器2 上 重开 一个ssh窗口, 执行 dstat 命令 查看网速 ,看到结果如下图所示:
可以看到,服务器2上接收数据为105M左右,发送140K左右;
四、总结
nc命令功能比较多,大家感兴趣也可以去挖掘它那些功能看看,本文罗列一些大家平时在运维或者测试工作中常用的功能。简单实用型有助于我们爱上一款测试工具。
更多精彩
关注公众号 「 浩道Linux 」
浩道Linux ,专注于 Linux系统 的相关知识、 网络通信 、 网络安全 、 Python相关 知识以及涵盖IT行业相关技能的学习, 理论与实战结合,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~ 关注回复「资料」可 免费获取学习资料 (含有电子书籍、视频等)。
喜欢的话,记得 点「赞」 和 「在看」 哦