我想检查某些远程服务器上的一组端口是否打开或关闭。我参加了有关该主题的各种讨论,大多数人建议使用nmap
、nc
和telnet <server-ip-address> <port-no>
。我该如何区分这三种情况:
- 防火墙已关闭端口
- 端口已开放,但没有服务正在监听该端口
- 端口已开放并且某些服务正在监听
答案1
如果你使用 telnet 命令检查端口连通性,它会显示
- 如果端口被防火墙阻止,则会出现“连接超时”
- 如果服务关闭或未监听指定端口但端口可访问,则会出现“连接被拒绝”的情况。
- 如果连接成功则显示“已连接到 server_ip”
答案2
有用的实用程序:
1.Telnet
2.数控
3.nmap
场景:检查远程系统 tcp 80 端口状态
用法 :
telnet myserver.com 80
nc -v myserver.com 80
nmap myserver.com 80
响应分析:
如果超时或拒绝:端口未打开
假设你收到“连接被拒绝”:那么端口是开放的,但进程没有监听
如果连接成功:端口已打开并且进程正在监听
解决方案:
启动/重新启动监听过程(如果连接被拒绝)
要求网络团队监控连接,我们可以确认它是否被中间网络防火墙或服务器防火墙/iptables 阻止
笔记 :
- 假设防火墙配置为拒绝数据包而不是丢弃,那么您将收到“连接被拒绝”错误,因此在这种情况下我们无法确保进程是否在监听。
要检查 udp 端口(如 ntp),您可以使用以下 nc 选项
nc -uzv yourserver.com 123
答案3
虽然远程登录或者网猫可用于确定端口可达性,nmap是标准的端口扫描工具。
nmap 默认选项(TCP SYN 扫描)确定给定端口是否被防火墙过滤。
nmap -sS <host> -p <port>
如果您想要可靠地区分打开、关闭和过滤状态,请使用 -sY 选项(SCTP INIT 扫描)
nmap -sY <host> -p <port>