更多技术博客,请关注微信公众号:运维之美
nc是一个功能强大的网络工具,其功能是用于扫描与连接指定端口,有着网络界的瑞士军刀美称。nc命令可用于扫描网络中的主机端口,支持tcp和udp连接,对于网络工程师来讲,可以方便的进行网络问题的排查。
1. nc基本用法
nc的全称是netcat,首先在Linux服务器上安装nc命令
sudo apt update
sudo apt install netcat #ubuntu系统
sudo yum install nc #centos系统
命令用法
nc -z -v <hostname/IP address> <port number>
语 法:nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
参 数:
-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 详细输出--用两个-v可得到更详细的内容
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
2. nc传输文件
传输单个文件
文件接收端,也就是目标服务器B
nc -l port > file #用法
nc -l 21 > 1.txt
发送端,源端服务器A
nc 接收端B主机ip port < file #命令用法
nc 192.168.6.217 21 < 1.txt
接收完毕后会退出,可以使用md5sum命令检测下是否传输完成。
• 传输目录
文件源头,监听端口
nc -l 21 | tar xfvz -
文件目的服务器
tar cfz - * | nc 192.168.6.216 21
3. nc端口探测
网络连通性测试,可以用nc工具来探测
如图在主机A上通过nc -l来临时启动一个tcp端口9999
端口启动后,在B主机上测试
[root@localhost ~]# telnet 192.168.10.126 9999
Trying 192.168.10.126...
Connected to 192.168.10.126.
Escape character is '^]'.
应用场景:客户环境可能有网络策略需要开通,在服务部署前,可以通过nc临时启动端口来测试连通性,能够避免临近上线的手忙脚乱
nc工具可以用作端口扫描,来测试服务器的某个/某些端口是否开启,例如22端口、80端口。
探测举例(u表示udp端口,不加则表示tcp)
[root@localhost ~]# nc -vuz 192.168.10.115 8475
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.10.115:8475.
Ncat: UDP packet sent successfully #端口测试成功
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.
[root@localhost~]#
[root@locslhost ~]# nc -vuz 192.168.10.115 8476
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.10.115:8476.
Ncat: Connection refused. #端口不通情况
批量探测主机端口,黑客经常使用这种方式探测主机漏洞,nmap也可实现这种探测
#!/bin/bash
IP="192.168.0.115"
for PORT in {1..10000}; do
(nc -w 2 -z $IP $PORT && echo "Port $PORT is open") &
done
wait
- nc在线聊天
服务端A启动udp端口
nc -u -l 8473
然后输入字符,客户端B监听此端口
nc -u B主机ip 8473
查看实际效果
可以看到2台主机可以正常通信,证明udp端口是通的,用这个方式也可以测试udp端口,是不是很有意思。