目录
概述
nc命令常用参数
nc命令示例
实现TCP/UDP侦听
作为client端发起TCP/UDP连接
服务器之间传输文件
网络测速
概述
在centos中,nc命令是ncat的软链接。
ncat是一个功能丰富的网络实用程序,是为nmap项目编写的(Network Mapper,最早是Linux下的网络扫描和嗅探工具包)。ncat又被称为Netcat家族分裂出的巅峰之作。Netcat简称nc,在安全界被称为瑞士军刀;而ncat弥补了Netcat的一些不足之处,被叫做21世纪的瑞士军刀。
[root@test ~]# ll /bin/nc
lrwxrwxrwx 1 root root 22 Dec 17 22:37 /bin/nc -> /etc/alternatives/nmap
[root@test ~]# ll /etc/alternatives/nmap
lrwxrwxrwx 1 root root 13 Dec 17 22:37 /etc/alternatives/nmap -> /usr/bin/ncat
安装
yum install nc -y
nc(ncat)的主要作用
- 实现TCP/UDP侦听
- 可以作为client端发起TCP/UDP连接
- 服务器之间传输文件(不需要密码)
- 网络测速
网上很多博客还提到了端口扫描,其实centos yum安装的nc命令时ncat,不支持一段范围的端口扫描。只有netcat命令才支持一段范围的端口扫描。
nc命令常用参数
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
nc命令示例
实现TCP/UDP侦听
这对于测试两台服务器的网络连通性很有用。比如:公有云平台上,对服务器设置了安全组策略,允许其他服务器访问某个端口。但此时服务器上还没有对应的服务监听着端口,无法进行测试。则可以使用nc命令侦听端口,进行临时测试。
TCP侦听
[root@test ~]# nc -l 33333
[root@test ~]# netstat -nltp | grep 33333
tcp 0 0 0.0.0.0:33333 0.0.0.0:* LISTEN 1958/nc
tcp6 0 0 :::33333 :::* LISTEN 1958/nc
UDP侦听
[root@test ~]# nc -l -u 33333
[root@test ~]# netstat -nlup | grep 33333
udp 0 0 0.0.0.0:33333 0.0.0.0:* 2232/nc
udp6 0 0 :::33333 :::* 2232/nc
作为client端发起TCP/UDP连接
发起TCP连接
成功
[root@test ~]# nc -zv 192.168.1.1 8080
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.122.2.91:8080.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
失败
[root@test ~]# nc -zv 192.168.1.1 2222
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection refused.
发起UDP连接
成功
[root@test ~]# nc -zuv 192.168.1.1 33333
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.122.2.91:33333.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.01 seconds.
失败
[root@test ~]# nc -zuv 192.168.1.1 2222
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.122.2.91:2222.
Ncat: Connection refused.
服务器之间传输文件
在实际工作中,很多情况下我们没有root密码。当我们要简单处理个问题,想要传输文件时常常令人抓狂。只是一个小文件,而要去考虑做免密钥;或者是新建一个用户来临时传输文件。
使用nc命令就可以避开这个烦恼,一些小的临时文件,直接通过网络传输,并且不需要密码。
接收端
nc -l 33333 > receive.txt
发送端
nc 10.122.2.91 33333 < send.txt
此方法不仅可以传输简单的文本文件、二进制文件。如果想要传输目录时,将目录制作成压缩包,也可以通过网络传输。
网络测速
测速接收端
[root@test01 ~]# nc -l 33333 > /dev/null
测速发送端
[root@test02 ~]# nc 10.122.2.91 33333 < /dev/zero
接收端dstat网络流量
发送端dstat网络流量