如何在 Ubuntu 上使用 nc 命令进行网络操作教程
简介
nc
(Netcat)命令在 Linux 中是一个多功能的网络工具,用于在网络之间读取和写入数据。nc
命令也被称为网络的“瑞士军刀”,因为它可以执行各种任务。这些网络任务包括传输文件、扫描端口、加密数据、打开 shell 等。
本文将解释如何在 Linux 中使用 nc
命令来管理系统网络。
准备工作
服务器准备
必要前提:
- 两台部署上的 Ubuntu 实例,分别用作
main
和client
服务器。 - 使用 SSH 访问实例。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://www.rainyun.com/NTE2NDM3_
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
-
点击 云产品 → 云服务器 → 立即购买。
-
选择距离你较近的区域,以保证低延迟。
-
按照自己需求选择配置,选择 Ubuntu 22.04 版本,按照自己需求是否预装 Docker。
-
最后按照提示进行购买。
-
购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
-
我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
-
到此为止,我们的云服务器就远程连接上了。
安装和配置步骤
第一步:nc
命令语法
以下是基本的 nc
命令语法:
nc [options] [hostname] [port]
在上述 nc
命令中:
[options]
:包括可选的标志,这些标志可以修改命令的行为。[hostname]
:指定目标主机。[port]
:指定要连接的目标端口。
nc
命令在 Linux 中有两种工作模式:
- 连接模式:Netcat 在连接模式下作为客户端工作,需要
host
和port
参数。 - 监听模式:Netcat 在监听模式下作为服务器工作。当你省略
host
选项时,Netcat 会在所有可用地址和指定端口上监听。
第二步:使用常见的 nc
命令选项
当你使用 nc
命令时,可以使用以下命令选项:
选项 | 描述 |
---|---|
-l | 监听模式。设置一个监听套接字。 |
-p | 本地端口。指定要连接的目标端口号。 |
-u | UDP 模式。启用 UDP 而不是 TCP。 |
-z | 零 I/O 模式。扫描并检测目标主机上的开放端口。 |
-v | 详细模式。提供详细的命令输出。 |
-w | 超时。设置连接的超时值。 |
-e | 执行。在建立连接后运行指定的命令。 |
-n | 数值模式。禁用 DNS 解析。 |
-k | 保持开放。当客户端断开连接时保持连接开放。 |
-c | Shell 命令。将命令作为单个参数执行 shell。 |
第三步:使用 nc
命令在 Linux 中执行任务
按照以下步骤使用 nc
命令在 Linux 中执行基本任务,例如创建聊天服务器、传输文件和扫描开放网络端口。
-
允许默认防火墙通过自定义的
12345
TCP 端口进行网络连接。 -
重新加载防火墙以应用更改。
-
在主服务器上使用
nc
命令创建一个新的聊天服务器,该服务器监听端口12345
上的连接。
上述命令在 TCP 端口 12345
上以监听模式运行 nc
命令,并使用 -l
选项。-v
选项启用详细模式以显示详细输出。
nc -l -v 12345
-
在客户端服务器上建立 SSH 连接,并连接到聊天服务器。将
Server-IP
替换为主服务器的公网 IP 地址。输出:
Connection to 10.50.112.4 12345 port [tcp/*] succeeded!
在
nc
命令提示符下输入Hello World
向主服务器发送消息。Hello World
验证
Hello World
消息是否显示在主服务器上,并输入Greetings from Vultr!
作为回复。Greetings from Vultr!
按
Ctrl
+C
退出nc
命令提示符。输出:
-
在主服务器上创建一个新的
file1.txt
文件。 -
将文件重定向到
nc
命令以传输到任何连接的客户端。
nc -lv 12345 < file1.txt
- 在客户端服务器上使用
nc
命令下载文件。
nc -zv Server-IP 12345 > file1.txt
输出:
Connection to 10.50.112.4 12345 port [tcp/*] succeeded!
-
在客户端服务器的工作目录中列出文件,并验证
file1.txt
文件是否可用。输出:
file1.txt
-
使用
z
选项扫描20
到25
之间的所有开放端口,而不向主服务器发送数据。
nc -zvw 1 Server-IP 20-25
输出:
- 使用
grep
命令过滤端口结果,仅显示开放端口。
nc -zvw 1 [target_host] 20-25 2>&1 | grep 'succeeded'
输出:
-
使用文件编辑器(如
nano
)创建一个新的index.html
文件,在主服务器上设置一个基本的 Web 应用程序。 -
将以下内容添加到文件中。
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Greetings from Vultr!</h1>
</body>
</html>
保存并关闭文件。
- 使用循环和
nc
命令提供 Web 应用程序文件。
while : ; do cat index.html | nc -l -p 12345; done
上述命令启动了一个无限循环,该循环在 TCP 端口 12345
上监听连接,并在访问应用程序时提供 index.html
Web 应用程序文件。
输出:
-
通过在 Web 浏览器(如 Chrome)中访问主服务器的 IP 地址和端口
12345
来运行 Web 应用程序。http://SERVER_IP:12345
输出:
-
使用
nc
命令测试对域或服务器 IP 的特定端口的访问。例如,测试对google.com
的 HTTPS 端口443
的访问,并指定z
选项以禁用持久性。 -
使用
nc
命令向域发送 HTTP 请求。例如,使用print
命令向google.com
的 HTTP 端口80
发送请求。
printf "GET / HTTP/1.0\r\n\r\n" | nc -v google.com 80
使用 nc
命令进行压缩
你可以使用 nc
命令与压缩工具一起使用,以加快远程文件传输的速度。按照以下步骤使用 nc
命令进行压缩传输文件。
-
在主服务器上创建一个新的
dir
目录。 -
向
dir
目录添加新文件。
touch dir/example{1..3}.txt
-
切换到
dir
目录。 -
使用
tar
压缩目录文件,并将内容发送到nc
命令。
tar -cf - . | nc -lv 12345
- 在客户端服务器上运行以下命令以接收并解压缩来自主服务器的文件。
nc -v Server-IP 12345 | tar xfv -
输出:
Connection to 10.50.112.3 12345 port [tcp/*] succeeded!
./
./example2.txt
./example3.txt
./example1.txt
结尾
你已经使用 Linux 中的 nc
命令执行了基本的网络任务,例如传输文件、扫描开放端口和运行应用程序文件。你可以使用 nc
命令来管理和调试两个或更多 Linux 主机之间的网络连接。更多信息和选项,请运行 man nc
命令查看 nc
命令的手册页。
雨云 - 新一代云服务提供商: https://www.rainyun.com/NTE2NDM3_