如何在 Ubuntu 上使用 nc 命令进行网络操作教程

如何在 Ubuntu 上使用 nc 命令进行网络操作教程

简介

nc(Netcat)命令在 Linux 中是一个多功能的网络工具,用于在网络之间读取和写入数据。nc 命令也被称为网络的“瑞士军刀”,因为它可以执行各种任务。这些网络任务包括传输文件、扫描端口、加密数据、打开 shell 等。

本文将解释如何在 Linux 中使用 nc 命令来管理系统网络。

准备工作

服务器准备

必要前提:

  • 两台部署上的 Ubuntu 实例,分别用作 mainclient 服务器。
  • 使用 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 在连接模式下作为客户端工作,需要 hostport 参数。
  • 监听模式:Netcat 在监听模式下作为服务器工作。当你省略 host 选项时,Netcat 会在所有可用地址和指定端口上监听。

第二步:使用常见的 nc 命令选项

当你使用 nc 命令时,可以使用以下命令选项:

选项描述
-l监听模式。设置一个监听套接字。
-p本地端口。指定要连接的目标端口号。
-uUDP 模式。启用 UDP 而不是 TCP。
-z零 I/O 模式。扫描并检测目标主机上的开放端口。
-v详细模式。提供详细的命令输出。
-w超时。设置连接的超时值。
-e执行。在建立连接后运行指定的命令。
-n数值模式。禁用 DNS 解析。
-k保持开放。当客户端断开连接时保持连接开放。
-cShell 命令。将命令作为单个参数执行 shell。

第三步:使用 nc 命令在 Linux 中执行任务

按照以下步骤使用 nc 命令在 Linux 中执行基本任务,例如创建聊天服务器、传输文件和扫描开放网络端口。

  1. 允许默认防火墙通过自定义的 12345 TCP 端口进行网络连接。

  2. 重新加载防火墙以应用更改。

  3. 在主服务器上使用 nc 命令创建一个新的聊天服务器,该服务器监听端口 12345 上的连接。

上述命令在 TCP 端口 12345 上以监听模式运行 nc 命令,并使用 -l 选项。-v 选项启用详细模式以显示详细输出。

nc -l -v 12345
  1. 在客户端服务器上建立 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 命令提示符。

    输出:

    截图占位符

  2. 在主服务器上创建一个新的 file1.txt 文件。

  3. 将文件重定向到 nc 命令以传输到任何连接的客户端。

nc -lv 12345 < file1.txt
  1. 在客户端服务器上使用 nc 命令下载文件。
nc -zv Server-IP 12345 > file1.txt

输出:

Connection to 10.50.112.4 12345 port [tcp/*] succeeded!
  1. 在客户端服务器的工作目录中列出文件,并验证 file1.txt 文件是否可用。

    输出:

    file1.txt
    

    截图占位符

  2. 使用 z 选项扫描 2025 之间的所有开放端口,而不向主服务器发送数据。

nc -zvw 1 Server-IP 20-25

输出:

截图占位符

  1. 使用 grep 命令过滤端口结果,仅显示开放端口。
nc -zvw 1 [target_host] 20-25 2>&1 | grep 'succeeded'

输出:

截图占位符

  1. 使用文件编辑器(如 nano)创建一个新的 index.html 文件,在主服务器上设置一个基本的 Web 应用程序。

  2. 将以下内容添加到文件中。

HTTP/1.1 200 OK
Content-Type: text/html

<html>
  <head>
    <title>Test Page</title>
  </head>
  <body>
    <h1>Greetings from Vultr!</h1>
  </body>
</html>
保存并关闭文件。
  1. 使用循环和 nc 命令提供 Web 应用程序文件。
while : ; do cat index.html | nc -l -p 12345; done

上述命令启动了一个无限循环,该循环在 TCP 端口 12345 上监听连接,并在访问应用程序时提供 index.html Web 应用程序文件。

输出:

截图占位符

  1. 通过在 Web 浏览器(如 Chrome)中访问主服务器的 IP 地址和端口 12345 来运行 Web 应用程序。

    http://SERVER_IP:12345
    

    输出:

    截图占位符

  2. 使用 nc 命令测试对域或服务器 IP 的特定端口的访问。例如,测试对 google.com 的 HTTPS 端口 443 的访问,并指定 z 选项以禁用持久性。

  3. 使用 nc 命令向域发送 HTTP 请求。例如,使用 print 命令向 google.com 的 HTTP 端口 80 发送请求。

printf "GET / HTTP/1.0\r\n\r\n" | nc -v google.com 80

使用 nc 命令进行压缩

你可以使用 nc 命令与压缩工具一起使用,以加快远程文件传输的速度。按照以下步骤使用 nc 命令进行压缩传输文件。

  1. 在主服务器上创建一个新的 dir 目录。

  2. dir 目录添加新文件。

touch dir/example{1..3}.txt
  1. 切换到 dir 目录。

  2. 使用 tar 压缩目录文件,并将内容发送到 nc 命令。

tar -cf - . | nc -lv 12345
  1. 在客户端服务器上运行以下命令以接收并解压缩来自主服务器的文件。
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_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxin¥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值