飞道的博客

每天学一个 Linux 命令(91):nc

252人阅读  评论(0)

点击下方“民工哥技术之路”,选择“设为星标”

回复“1024”获取独家整理的学习资料!

命令简介

nc 命令是一款功能强大的网络工具。它是一个端口扫描工具,也是一款安全工具,还能是一款监测工具,甚至可以做为一个简单的 TCP 代理。

语法格式


   
  1. nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>]
  2. [-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]

选项说明


   
  1. -g<网关>      #设置路由器跃程通信网关,最大可设置 8个。
  2. -G<指向器数目> #设置来源路由指向器,其数值为 4的倍数
  3. -i<延迟秒数>  #设置时间间隔,以便传送信息及扫描通信端口
  4. -o<输出文件>  #指定输出保存到文件中
  5. -p<通信端口>  #设置本地主机使用的通信端口
  6. -s<来源位址>  #设置本地主机送出数据包的IP地址
  7. -w<超时秒数>  #设置等待连线的时间
  8. -l  #使用监听模式
  9. -n  #使用IP地址
  10. -r  #乱数指定本地与远端主机的通信端口
  11. -u  #使用UDP传输协议
  12. -v  #显示指令执行过程中的详细信息
  13. -z  #使用 0输入/输出模式
  14. -h  #打印帮助信息

应用举例

扫描端口


   
  1. [root@centos7 ~]# nc -c -z -w4  192.168 .1 .199  1 -65535
  2. Ncat: Connection refused.

这里有一个坑,在CentOS7.X 中使用yum install -y nc安装的nc实际安装的是nmap-ncat(ncat命令),但ncat这个命令没有端口扫描功能,但为何在系统中又可以使用nc命令呢,如下:


   
  1. [root@centos7 ~]# which nc
  2. /usr/bin/nc
  3. [root@centos7 ~]# ls -l /usr/bin/nc
  4. lrwxrwxrwx  1 root root  22 Aug  20   2020 /usr/bin/nc -> /etc/alternatives/nmap
  5. [root@centos7 ~]# ll /etc/alternatives/nmap 
  6. lrwxrwxrwx  1 root root  13 Aug  20   2020 /etc/alternatives/nmap -> /usr/bin/ncat
  7. [root@centos7 ~]# ll /usr/bin/ncat 
  8. -rwxr-xr-x  1 root root  380184 Aug   8   2019 /usr/bin/ncat

所以,当你在系统中执行nc命令时,实际执行的是ncat命令,解决文案如下:下载 nc软件包(https://sourceforge.net/projects/netcat/files/netcat/0.7.1/),上传解压并编译安装(你会发现网上好多的教程全是没有验证这个坑的)


   
  1. [root@centos7 ~]# tar zxf netcat -0.7 .1.tar.gz
  2. [root@centos7 ~]# cd netcat -0.7 .1
  3. [root@centos7 ~]# ./configure
  4. [root@centos7 ~]#  make &&  make install
  5. [root@centos7 ~]# echo $?
  6. [root@centos7 ~]#  0
  7. [root@centos7 ~]# which netcat
  8. /usr/local/bin/netcat
  9. [root@centos7 ~]# ln -s /usr/local/bin/netcat /usr/bin/nc
  10. [root@centos7 ~]# nc --help
  11. GNU netcat  0.7 .1, a rewrite of the famous networking tool.
  12. Basic usages:
  13. connect to somewhere:  nc [options] hostname port [port] ...
  14. listen  for inbound:    nc -l -p port [options] [hostname] [port] ...
  15. tunnel to somewhere:   nc -L hostname:port -p port [options]
  16. Mandatory arguments to long options are mandatory  for short options too.
  17. Options:
  18.   -c, -- close                 close connection on EOF from stdin
  19.   -e, --exec=PROGRAM         program to exec after connect
  20.   -g, --gateway=LIST         source-routing hop point[s], up to  8
  21.   -G, --pointer=NUM          source-routing pointer:  4812, ...
  22.   -h, --help                 display this help and exit
  23.   -i, --interval=SECS        delay interval  for lines sent, ports scanned
  24.   -l, --listen               listen mode,  for inbound connects
  25.   -L, --tunnel=ADDRESS:PORT  forward local port to remote address
  26.   -n, --dont-resolve         numeric-only IP addresses, no DNS
  27.   -o, --output=FILE          output hexdump traffic to FILE (implies -x)
  28.   -p, --local-port=NUM       local port number
  29.   -r, --randomize            randomize local and remote ports
  30.   -s, --source=ADDRESS       local source address (ip or hostname)
  31.   -t, --tcp                  TCP mode ( default)
  32.   -T, --telnet               answer using TELNET negotiation
  33.   -u, --udp                  UDP mode
  34.   -v, --verbose              verbose (use twice to be more verbose)
  35.   -V, --version              output version information and exit
  36.   -x, --hexdump              hexdump incoming and outgoing traffic
  37.   -w, --wait=SECS            timeout  for connects and final net reads
  38.   -z, --zero                 zero-I/O mode (used  for scanning)
  39. Remote port number can also be specified as  range.  Example:  '1-1024'

扫描端口(指定范围)


   
  1. [root@centos7 ~]# nc -v -z -w2  192.168 .1 .100  1 -65535
  2. 192.168 .1 .100  22 (ssh) open
  3. 192.168 .1 .100  19999 (dnp-sec) open

指定端口扫描


   
  1. [root@centos7 ~]# nc -nvv  192.168 .1 .100  22
  2. 192.168 .1 .100  22 (ssh) open
  3. SSH -2.0-OpenSSH_7 .4
  4. Protocol mismatch.
  5. Total received bytes:  40
  6. Total sent bytes:  1

查看从服务器到目标地址的出站端口是否被防火墙阻断


   
  1. [root@centos7 ~]# nc -vz www.baidu.com  443 -w2
  2. www.baidu.com [ 36.152 .44 .96443 (https) open
  3. [root@centos7 ~]# 
  4. [root@centos7 ~]# nc -vz www.baidu.com  80 -w2
  5. www.baidu.com [ 36.152 .44 .9680 (http) open

推荐阅读 点击标题可跳转

再见 RPM/DEB/TAR!下一代全平台安装程序来了!

从零开始掌握 HAProxy,也不难嘛!!!

2020 国内互联网公司薪酬、加班排名出炉!

Docker部署Prometheus+Grafana监控系统

超全整理!Linux 性能分析工具汇总

每天学一个 Linux 命令(81):e2fsck

用 GitLab 做 CI/CD 是什么感觉,太强了

MongoDB 日常运维实践总结

超详细讲解!10 种常见的软件架构模式


转载:https://blog.csdn.net/mingongge/article/details/115326857
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场