如何检查 Linux 服务器上某个端口是否正在监听?
答案1
您可以使用 检查某个进程是否在 TCP 或 UDP 端口上监听netstat -tuplen
。
要检查某些端口是否可以从外部访问(这可能是你想要的),你可以使用端口扫描器,例如网络地图从其他系统。在您想要检查的同一台主机上运行 Nmap 对于您的目的来说毫无用处。
答案2
测试 TCP 端口是否打开(包括您可能拥有的任何硬件防火墙)的最快方法是从远程计算机(例如您的桌面)键入:
telnet myserver.com 80
这将尝试打开与该服务器上的端口 80 的连接。如果超时或被拒绝,则表示端口未打开 :)
答案3
好的,总而言之,您有一台可以登录的服务器。您想查看是否有东西在监听某个端口。以 root 身份运行:
netstat -nlp
这将显示侦听 TCP 和 UDP 端口的进程列表。您可以扫描(或 grep)它以查找您感兴趣的进程和/或您希望看到的端口号。
如果您期望的进程不存在,则应启动该进程并再次检查 netstat。如果进程存在,但它正在监听您未预料到的接口和端口,则存在配置问题(例如,它可能正在监听,但仅在环回接口上,因此在 MySQL 的默认配置中,您会看到 127.0.0.1:3306,而没有端口 3306 的其他行)。
如果进程已启动,并且正在监听您期望的端口,您可以尝试从办公室/家中的 Macbook 运行“telnet”到该端口,例如,
telnet xxxxxxxxxxxx.co.uk 443
这将测试(假设标准端口)是否有为 SSL 配置的 Web 服务器。请注意,只有当进程正在侦听 TCP 端口时,使用 telnet 的此测试才会起作用。如果是 UDP 端口,您也可以尝试使用您要用来连接它的任何客户端。(我看到您使用了端口 224。这是 masqdialer,我不知道那是什么)。
如果服务存在,但你无法从外部访问它,那么防火墙会阻止你。在这种情况下,运行:
iptables -L -n
这将显示系统上定义的所有防火墙规则。您可以发布该规则,但通常情况下,如果您不允许 INPUT 链上的所有内容,则可能需要明确允许相关端口上的流量:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
或类似的东西。不要根据互联网上陌生人告诉你的内容盲目运行防火墙命令。考虑一下你在做什么。
如果您的防火墙允许您所需的流量,那么您的托管公司可能正在运行防火墙(例如,他们仅允许 SSH(22/tcp)、HTTP(80/tcp)和 HTTPS(443/tcp)并拒绝所有其他传入流量)。在这种情况下,您需要向他们开具帮助台票证以解决此问题,但我认为您的 cPanel 中可能存在允许此问题的程序。
答案4
如果你已连接到系统并且可以以 root 身份运行命令,那么你可以检查 iptables 的输出
iptables -L -vn
这将列出防火墙规则以及哪些端口是开放的目标ACCEPT
以及任何明确关闭的端口目标REJECT
。