端口属于逻辑实体,作为linux操作系统上应用程序和进程相关联的通信端点。使用前需要先了解目标服务器上有哪些端口是开放且对正在运行服务有用的。可以用netstat或其他linux命令如NMAP等来查找出本地服务器上linux的开放端口。下面华纳云会分享用简单netcat简称nc命令查找远程服务器端口是否开放。
netcat属于强大切实用的程序,可以用于linux中和TCP、UDP、UNIX域套接字相关的操作:
# yum install nc [在 CentOS/RHEL 上]
# dnf install nc [在 Fedora 22+ 上]
$ sudo apt-get install netcat [在 Debian/Ubuntu 上]
可以用于打开TCP连接,监听任意TCP和UDP端口,发送UDP数据包,在IPv4和IPv6及更高版本下进行端口扫描。用nc检查单个、多个或一系列开发端口,如下面命令可以用于查看192.168.1.15 11服务器的端口22是否开放:
$ nc -zv 192.168.1.15 11
zz选项表示扫描模式,设置nc仅扫描监听守护进程,而不实际向目标服务器发送任何数据;v是启用详细模式。
还可以检查192.168.56.22远程主机上端口80、22和21是否打开:
nc -zv 192.168.56.22 80 22 21
指定要扫描端口范围:
$ nc -zv 192.168.56.22 20-80
还可以nc命令监听本地端口,监控是否存在外部连接,如监听本机1000号端口:
nc -l -p 1000
存在尝试连接该端口行为,nc会显示连接信息。
nc也可以在两台服务器之间传输文件来测试网络连通性和数据传输的安全性,如发送文件:
nc -vn 192.168.1.1 < test.txt -q 1
接收文件:
nc -lp 333 > 1.txt
可用来测试网络传输的安全性和完整性。
nc命令也能发送HTTP请求,可以测试目标服务器HTTP服务器是否响应:
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80
可以用于检查web服务器可用性和响应。
nc配合其他工具,可以进行综合网络诊断和安全扫描。如检查DNS解析、路由追踪和常用端口状态等:
network_diagnosis "example.com"
Nc输出结果中,如端口扫描输出结果会有目标主机端口状态信息,表示连接成功(意味着端口开放):
Connection to <hostname> <port> port [tcp/*] succeeded!
如果是目标端口没有监听或防火墙阻止连接,表示端口关闭或者超时:
nc: connect to <hostname> port <port> (tcp) failed: Connection refused
超时的结果显示(存在网络延迟/目标不可达/端口未开放):
nc: connect to <hostname> port <port> (tcp): Operation timed out
网络未连接:
nc: connect to <hostname> port <port> (tcp): Network is unreachable
端口存在过滤:
nc: connect to <hostname> port <port> (tcp): Connection timed out
详细信息:
nc -v <hostname> <port>
扫描多个端口:
nc -zv <hostname> <port1> <port2> <port3>
更多内容请继续关注我们华纳云!