44

Linux常用命令(一):netcat

 3 years ago
source link: https://jiajunhuang.com/articles/2020_09_19-linux_cmd_netcat.md.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

netcat是常见的用于网络相关的工具,比如连接,监听,扫描端口等。和所有的UNIX命令一样,netcat也是一把瑞士军刀。接下来我们 来学习如何使用。

常见版本

使用之前我们要先了解一下netcat的几个版本:

sudo apt install netcat-traditional
sudo apt install netcat
sudo apt install netcat-openbsd

接下来我们了解一下netcat的命令行如何使用。它的参数有两种方式:

  • 分开描述,比如 nc -h , nc -w -v -z
  • 放在一起描述,比如 nc -zu

当然,上述的参数方式是可以组合的,比如:

$ nc -zv baidu.com -w 3 80
Connection to baidu.com 80 port [tcp/http] succeeded!

一般是,如果参数里还要带值的话,就用分开描述,否则就放在一起好了。

剩下的选项,我根据功能把它们划分开来:

网络模式和代理相关

  • -l 监听,作服务器。不填时作客户端。
  • -u UDP模式。不填时默认TCP模式。
  • -X-x 是代理相关的选项

其余常用选项

-v
-z
-w
-s
-p
-n
-k

常见的例子及其释义

了解了常见的参数之后,我们就来用用它:

  • 最简单的echo server和echo client:一个终端里执行 nc -l 8080 , 另外一个终端里执行 nc 127.0.0.1 8080 ,他们就通过 TCP 连接了,解释一下上面的参数, nc -l 8080 就是监听在8080端口,本来应该是 nc -l 127.0.0.1 8080 ,这样的格式,但是如果默认不写监听的地址的话, 那么就是使用默认的 127.0.0.1 。而第二个终端里的 nc 127.0.0.1 8080 就不能省略地址了,作为客户端的 时候,必须指明IP地址和端口。如果我们加上 -u 参数,那么就是UDP版本的echo server和client了。

  • 测试某个地址是否能连通。一般我们会用telnet,不过telnet还需要通过 Ctrl-] 来退出。用nc更简单:

$ nc -zv baidu.com 80
Connection to baidu.com 80 port [tcp/http] succeeded!

解释一下参数, -v 就是打印日志的意思。如果不加的话,nc不会打印下面的这一行 Connection ... ,而 -z 则是建立TCP连接之后就断开的意思。所以我们就可以通过这两个命令组合,来快速判断某个地址是否可以连通。

  • 端口扫描。有时候我们想要范围扫描一下端口,那么就可以这样:
$ nc -vz 127.0.0.1 20-25
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!

总结

这就是netcat的常见选项和使用方法了,通过这个工具,结合其它Linux命令还可以发挥更强大的功能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK