man nc 中文版

(1) BSD 常规命令指南
译者:夜苍山 2015-04-11

名字:
nc - 连接、监听任意的TCP和UDP。
概要:
nc [-46DdhklnrStUuvzC] [-i 间隔] [-p 源端口]
[-s 源IP地址] [-T 服务类型] [-w 超时时间] [-X 代理协议]
[-x 代理地址[:端口]] [主机名] [端口[s]]

详细说明:
nc(netcat)的功能使用是涉及到TCP或者UDP的时候。它可以打开TCP连接,发送UDP包,监听任意的TCP和UDP端口,扫描端口,处理IPv4和IPv6。nc脚本是非常好的,跟telnet(1)不一样,它把错误信息输出到标准错误输出上而不是输出到标准输出上(屏幕)。

常用的用法:
* 简单的TCP代理
* 基于http客户端和服务器端的shell 脚本
* 测试网络上的守护进程
选项如下:

  • -4 强制nc只能使用IPv4地址。
  • -6 强制nc只能使用IPv6地址。
  • -D 在socket上进行调试以排除故障。
  • -d 不尝试从标准输入读取。
  • -h 打印nc帮助信息。
  • -i 间隔
    在发送和接收之间指定一个间隔时间。同时会引起连接多个接口时的延迟。
  • -k 当nc当前的连接完成时,强制nc监听其它的连接。必须同时使用- l选项。
  • -l 指定nc监听一个外来的连接,而不是向远程主机发起一个连接。不能同时使用 -p , -s, -z, -w选项。
  • -n 不在任何指定的地址、主机、端口查看DNS或者服务。
  • -p 源端口
    指定nc应该使用的源端口,受到特权的限制和可用性。不能同时使用-l选项。
  • -r 指定源或目标端口使用随机的端口而不是一个范围序列或系统分配的顺序。
  • -S 使RFC 2385 TCP 的MD5签名可用。
  • -s 源IP地址
    指定发送包的接口的IP。不能同时使用-l选项。
  • -T 服务类型
    为连接指定IP报头的服务类型。有效值为”lowdelay”,”throughput”,”reliability”或者是8位的16进制值(16进制前缀0x)。
  • -C 发送CRLF作为一行的结束。
  • -t 引发nc发送RFC 854 DON’The WON’T响应给RFC 854 DO和WILL请求。这使得使用nc脚本化telnet会话成为可能。
  • -U 指定使用Unix Sockets 服务。
  • -u 使用UDP代替默认的TCP。
  • -v nc给出更详细的输出。
  • -w 超时时间
    如果连接或输入停顿时间超过超时时间就关闭连接。-w选项不会影响到-l选项,也即,nc将会永久的监听一个连接,不管有没有-w选项。默认没有超时时间。
  • -X 代理版本
    当与代理服务器会话是要求nc使用指定的代理协议。支持的协议有”4”(SOCKS v.4),”5”(SOCKS v.5),”connect”(HTTPS proxy).默认使用SOCKS v.5。
  • -x 代理地址[:端口]
    要求nc使用一个有代理地址和端口的代理来连接主机名。如果没有指定,则使用熟知端口(SOCKS-1080,HTTPS-3128)。
  • -z 指定nc只扫描正在监听的守护进程,不发送任何数据。

    主机名可以是数字形式的IP或者是名字标志(除非使用了-h选项)。通常,主机名必须被指定,除非使用-l选项(这种情况下,本地主机正在使用)。

    端口可以是整数或一个范围(格式nn-mm)。通常,必须指定目标端口,除非使用-U选项(这种情况下,必须指定一个socket)。

客户端/服务器 模式:
使用nc很容易建立一个很基本的客户端/服务器。在一个控制台,开启nc监听一个指定端口的连接。
例如:

 $ nc -l 1234
nc正在监听在1234端口上的连接。在第二个控制台(或第二天机器),连接到正在被监听的主机的端口:
 $ nc 127.0.0.1 1234
现在在两个端口之间建立了连接。第二个控制台的任何类型将会连接到第一个,反之亦然。
当连接设置完成,nc不关心哪边是服务器哪边是客户端。使用EOF('^D')来结束连接。

数据传输:
前面的例子已经详述了如何建立一个基本的数据传输模型。在连接的任何一端输入任何信息都会输出到另外一端,为了仿真文件传输,输入输出可以很容易的捕获。
使用nc开启一个指定端口的监听,将输出捕获到一个文件中:

nc -l 1234 > filename.out
使用第二个机器,连接到nc正在监听的进程,将准备传输的文件传送到第一个主机nc正在监听的进程:
    $ nc host.example.com 1234 < filename.in
传输完成,连接自动关闭。

对话服务器:
有时候手动与服务器对话比使用一个用户接口更有用。当可能有必要查证服务器响应给客户端命令时发送的数据,以帮助检修。例如,重新得到一个网站的主页:

    $ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

注意到这里也显示了Web服务器发送的报头。如有必要,使用sed(1)可以过滤掉报头。
当使用者知道服务器请求命令的格式后可以进行更复杂的例子操作。
另一个例子,邮件可能被提交到一个SMTP服务器的用法:
    $ nc [-C] localhost 25 << EOF
    HELO host.example.com
    MAIL FROM: <user@host.example.com>
    RCPT TO : <user2@host.example.com>
    DATA
    Body of email .
    .
    QUIT
    EOF

端口扫描:
可以知道目标主机上开启的端口和服务。-z选项告诉nc打印开启的端口而不是发起一个连接。例如:

    $ nc -z host.example.com 20-30
    Connection to host.example.com 22 port [tcp/ssh] succeeded!
    Connection to host.example.com 25 port [tcp/ssh] succeeded!
只搜索指定范围20-30的端口。
作为一种选择,它可以知道目标主机正在运行的软件和版本。这些纤细经常包含在问候的标语之中。
为了重新得到这些信息,必须首先建立一个连接,当重新得到标语之后就断开连接。
可以通过-w指定一个比较小的超时时间或者通过发送“QUIT"命令给服务器来完成:
    $ echo "QUIT" | nc host.example.com 20-30
    SSH-1.99-OpenSSH_3.6.1p2
    Protocol mismatch.
    220 host.example.com IMS SMTP Receiver Version 0.84 Ready

例子:

    $ nc -p 31337 -w 5 host.example.com 42
    $ nc -p 31337 -w 5 host.example.com 42

打开一个到host.example端口为53的UDP连接:

    $ nc -u host.example.com 53

使用10.1.2.3作为本地主机IP打开一个到host.example端口为42的TCP连接:

    $ nc -s 10.1.2.3 host.example.com 42

建立并监听一个Unix Socket 守护进程:

    $ nc -lU /var/tmp/dsocket

通过了一个IP为10.2.3.4的HTTP代理服务器的8080端口,连接到host.example.com的42端口。这个例子也可以使用ssh(1)来实现;更多信息可查看ssh_config(5)的ProxyCommand指令。

    $ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

更多信息:
cat(1), ssh(1)
http://my.oschina.net/abcfy2/blog/265745
作者:Hobbit实现开源 hobbit@avian.org。Eric Jackson 重写使之支持IPv6ericj@monkey.org

<think>好的,我现在要解决用户关于如何在Linux上安装nc(netcat)命令的问题。首先,我需要确认用户可能的需求是什么。通常,用户遇到“nc命令未找到”的错误,说明系统没有安装netcat。我的任务是引导他们正确安装。 首先,我得考虑不同的Linux发行版,因为安装命令可能不同。常见的发行版有Debian/Ubuntu、CentOS/RHEL、Fedora、Arch Linux等。我需要分别列出这些系统的安装方法。 对于基于Debian的系统,比如Ubuntu,应该使用apt-get命令。需要提醒用户更新软件包列表,然后安装netcat-openbsd或者netcat-traditional。这里可能需要解释这两个版本的区别,但用户可能只需要基本的nc功能,所以推荐netcat-openbsd。 接下来是CentOS或RHEL系统,使用yum或dnf。这里需要注意,CentOS 8之后可能使用dnf,而旧版用yum。同时,安装的软件包名称是nmap-ncat,可能需要确认是否正确,因为有时候包名可能不同。 对于Fedora,使用dnf install nc或者nmap-ncat,同样需要确认包名是否正确。Arch Linux用户则使用pacman来安装gnu-netcat。 另外,可能需要提醒用户安装后如何验证,比如运行nc -h或者man nc来查看帮助文档。还有可能需要说明不同版本netcat的功能差异,比如OpenBSD版本和传统版本的不同参数,但用户可能暂时不需要深入这些细节。 还要检查是否有拼写错误,比如包名是否正确,命令是否正确。例如,是否在安装前需要sudo权限,这点要明确写出,避免用户权限不足的问题。同时,提示用户如果遇到问题,可以尝试搜索对应的软件包,比如使用apt search netcat来查找正确的包名。 最后,确保步骤清晰,分点列出,让用户容易跟随。可能还需要在最后给出一个验证安装成功的步骤,比如执行nc -h查看版本信息。如果有常见问题,比如安装后仍然找不到命令,可能需要提示检查路径或者是否存在多个版本冲突,但根据问题复杂度,可能不需要深入,除非用户进一步询问。</think>在Linux系统中安装`nc`(netcat)命令的步骤如下: --- ### 1. **确认系统发行版** 首先确定你的Linux发行版类型,不同发行版的安装命令可能不同: - **Debian/Ubuntu**:使用 `apt` 包管理器 - **CentOS/RHEL**:使用 `yum` 或 `dnf` 包管理器 - **Fedora**:使用 `dnf` - **Arch Linux**:使用 `pacman` --- ### 2. **安装netcat** 根据发行版选择对应的命令: #### **Debian/Ubuntu** ```bash sudo apt update sudo apt install netcat-openbsd # 推荐安装OpenBSD版本(常用) # 或 sudo apt install netcat-traditional # 传统版本(功能更多但语法不同) ``` #### **CentOS/RHEL 7及以下** ```bash sudo yum install nc # 或安装nmap-ncat(功能更全) sudo yum install nmap-ncat ``` #### **CentOS/RHEL 8+ 或 Fedora** ```bash sudo dnf install nc # 或 sudo dnf install nmap-ncat ``` #### **Arch Linux** ```bash sudo pacman -S gnu-netcat ``` --- ### 3. **验证安装** 安装完成后,检查是否成功: ```bash nc -h # 或查看版本 nc -v ``` --- ### 4. **常见问题** - **找不到包名**:尝试搜索软件包: ```bash apt search netcat # Debian/Ubuntu dnf search netcat # CentOS/Fedora ``` - **权限问题**:确保使用 `sudo` 提权。 - **版本差异**:不同发行版的 `nc` 功能可能略有差异,可通过 `man nc` 查看文档。 --- ### 5. **基本使用示例** ```bash # 监听端口(服务端) nc -lvnp 1234 # 连接到服务端(客户端) nc 127.0.0.1 1234 ``` 通过以上步骤即可完成安装并使用 `nc` 命令
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值