nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具。比如大家很熟悉使用telnet测试tcp端口,而nc可以支持测试linux的tcp和udp端口,而且也经常被用于端口扫描,甚至把nc作为server以TCP或UDP方式侦听指定端口做简单的模拟测试。
成都创新互联公司主营企业营销型网站建设,为众多企业提供了品牌网站制作服务,建网站哪家好?拥有多年的网络营销推广流程,能够为企业定制化制作网站服务,在公司网站建设维护方面成绩突出。
2020年10月07日 - 初稿
阅读原文 -
ncat 或者说 nc 是一款功能类似 cat 的工具,但是是用于网络的。它是一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。 它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat / nc 既是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。 由于有这么多的功能,它被誉为是网络界的瑞士军刀。 这是每个系统管理员都应该知道并且掌握它。
在大多数 Debian 发行版中, nc 是默认可用的,它会在安装系统的过程中自动被安装。 但是在 CentOS 7 / RHEL 7 的最小化安装中, nc 并不会默认被安装。 你需要用下列命令手工安装。
nc的作用:
nc的控制参数不少,常用的几个参数如下所列:
用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。
暂未用到(老版本的nc可能需要在端口号前加-p参数)
指定发送数据的源IP地址,适用于多网卡机
指定nc使用UDP协议,默认为TCP
输出交互或出错信息,新手调试时尤为有用
6)-w
超时秒数,后面跟数字
7)-z
表示zero,表示扫描时不发送任何数据
作用:批量端口扫描,可根据扫描主机的配置调整后台扫描进程数量(手动执行后根据统计的执行时间调整脚本中关于进程数量的参数),通过定时任务作为简单的服务监控(可修改脚本添加其他报警功能,例如邮件等)
实现:使用nc指令扫描端口,使用管道特性控制后台扫描进程数量
不足:仅仅对扫描端口状态为down的信息做记录,并没有其他报警操作
使用:
10 useful ncat (nc) Command Examples for Linux Systems
nc命令用法举例
用yum进行安装,若安装旧版本的可能会有些命令参数无法正常使用
nc -z -v -n 192.168.137.2 1-100 扫描192.168.137.2地址1-100的端口号
可以运行在TCP或者UDP模式,默认是TCP,-u参数调整为udp
z 参数告诉netcat使用0 IO,连接成功后立即关闭连接,不进行数据交换
v 参数指使用冗余选项
n 参数告诉netcat不要使用DNS反向查询IP地址的域名
nc -v 192.168.137.2 22
连接该地址开放的22端口,并且打印运行在这个端口上服务的banner信息
现有两台服务器:192.168.137.2和192.168.137.10,分别命名为A和B
使A和B可以互相聊天
A nc -n -l -u -p 1000
B nc -n -u 192.168.137.2 1000
-u参数调整为udp
-l 表示在服务器端启用监听模式
-n 不做域名解析
-p 指定监听的端口
这时A和B两台服务器便可在命令行进行聊天
使A和B之间相互传输单个文件
A nc -l 2000 file.txt 在A中开一个2000端口并进行监听,将写入的内容放到本地命名为file.txt
B nc 192.168.137.2 2000 file.txt 将B中file.txt传送到Aip的2000端口
在A与B之间互传文件夹
在A中/root/下创建ceshi目录,并在ceshi下创建test.txt
A tar -cvf - ceshi |nc -l 1000
B nc 192.168.137.2 1000 |tar -xvf -
这时发现在B中已经有了A传送过去的ceshi目录
=======================================================================
A:192.168.0.131(接收方) B:192.168.0.10(发送方)
本次打算用3333端口传送数据,在操作前先确保两台服务器的防火墙不会禁止3333端口
先在A上操作:进入要接收数据的目录下
while true
do
nc -l 3333|tar -xvf -
done
这时在看该机器3333端口已打开
再去B上操作:进入要传送的目录下
tar -cvf - 文件/目录名 |nc 192.168.0.131 3333
这时两台机器间便开始传送数据
linux centos7 测试端口的连通性, 分别测试TCP端口与UDP端口
安装nc命令
一、nc命令检测端口的用法
1 这个需要Linux服务器里边支持nc命令,检查NC 是否安装
2 安装nc
3 探测端口
错误信息如下
百度了半天没一个结果, google了一下就有结果了, 经测试成功.
4 原因分析:
-z参数原为扫描目标port是否打开, TCP三次握手成功则ok
但CentOS7新版的nc命令已取消了-z, 需输入重定向 /dev/null 才能成功
5 探测 udp: 通过 nc -h 可以看出,只需要加个 -u 即可。
更多高级应用参考:
场景一:了解系统开放的端口,和正在使用的端口,在各种情况下都会有所帮助。
比如:如果你的服务器正在运行着 Nginx,那么其端口应该为80或者443,可以检查一下。再比如你可以检查一下 SMTP、SSH或者其他服务用的是哪个端口。当有新的服务需要开放端口的时候,你需要知道目前已经被占用的,都有哪些端口。
此外,可以检查一下是否有开放的可用于入侵检测的端口。
Linux 中有多种检查端口的方法,本文将介绍两种。
使用 lsof 检查当前系统开放的端口
不管你是直接登录的系统,还是使用 ssh 连接的,都可以使用 lsof 命令来检查端口:
该命令用于查找用户使用的文件和进程。上述命令中的选项,包括:
但是,这也会展示许多计算机并没有监听的其他端口。
我们可以通过管道将此输出传输到 grep,并匹配模式 “LISTEN”,如下所示:
这样就只显示计算机正在监听的,以及正在运行的服务器所占用的端口。
使用 netcat 命令检查远程服务器上的端口
nc(Netcat) 是一个命令行实用程序,使用TCP和UDP协议在网络计算机之间读取和写入数据。
以下是nc命令的语法:
这个工具有一个很实用的 -z 选项,它会让 nc 命令扫描正在监听的守护进程,但是不会向端口发送任何数据。
将其与 -v 选项结合,启动详细信息,会有详细信息的输出。
losf与nc的不同点:
lsof命令简介
lsof 命令用于显示 Linux 系统当前已打开的所有文件列表。查看进程或系统打开的文件会给调试带来极大的帮助。下面简单地介绍 lsof 常使用的功能。
lsof (list open files)命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP),还可以用于找回/恢复被删除的文件。lsof 命令需要访问核心内存和各种文件,所以需要具备 root 超级管理员权限的用户才能执行此命令。
linux的nc命令,NetCat,在网络工具中有“瑞士军刀”美誉“,是解决这个问题的工具。 nc命令安装: yum install nc
以上是看来一些文章的总结分享内容,欢迎补充讨论。