检查Linux服务器上的端口是打开还是closures?

如何检查端口是否在Linux服务器上侦听?

您可以使用netstat -tuplen来检查进程在TCP或UDP端口上是否侦听。

要检查是否有一些端口可以从外部访问(这可能是你想要的),你可以使用像另一个系统的Nmap的端口扫描器。 在你想检查的同一个主机上运行Nmap对你来说是没用的。

testingTCP端口是否打开(包括任何硬件防火墙)最快的方法是从远程计算机(例如桌面)键入:

 telnet myserver.com 80 

哪个会试图打开一个连接到该服务器上的端口80。 如果你得到一个时间或否认,港口是不开放的:)

好的,总之,你有一台你可以login的服务器。 你想看看某些端口上是否有东西在监听。 以root身份运行:

 netstat -nlp 

这将显示侦听TCP和UDP端口的进程列表。 您可以扫描(或grep)您所感兴趣的进程和/或您期望看到的端口号。

如果你期望的进程不存在,你应该启动这个进程并再次检查netstat。 如果进程在那里,但是它正在监听一个你没有预料到的接口和端口,那么就有一个configuration问题(例如,它可能在监听,但只在回环接口上,所以你会看到127.0.0.1:3306和没有其他线路的端口3306,在MySQL的默认configuration的情况下)。

如果进程已经启动,并且正在监听您期望的端口,则可以尝试从办公室/家中的Macbook运行“telnet”到该端口,例如,

  telnet xxxxxxxxxxxx.co.uk 443 

这将testing是否(假设标准端口)有一个Web服务器configuration为SSL。 请注意,如果进程正在侦听TCP端口,则使用telnet进行的此testing只能起作用。 如果它是一个UDP端口,那么你可以尝试使用任何客户端来连接它。 (我看到你使用的端口是224.这是masqdialer,我不知道那是什么)。

如果服务在那里,但是你无法从外部获得,那么防火墙阻止了你。 在这种情况下,运行:

  iptables -L -n 

这将显示您的系统上定义的所有防火墙规则。 你可以发表,但是,一般来说,如果你不允许在INPUT链上的一切,你可能需要明确地允许在有问题的端口上的stream量:

  iptables -I INPUT --dport 224 -j ACCEPT 

或沿着这些线路的东西。 不要盲目地根据陌生人在互联网上告诉你的内容来运行你的防火墙命令。 考虑你在做什么。

如果你的防火墙允许你想要的stream量,那么你的托pipe公司可能会运行防火墙(例如,它们只允许SSH(22 / tcp),HTTP(80 / tcp)和HTTPS(443 / tcp)并拒绝所有其他传入stream量)。 在这种情况下,您将需要打开一个帮助台凭单来解决这个问题,不过我想在你的cPanel中可能会有一些东西可以允许它。

如果你连接到系统,并且可以以root身份运行一个命令,那么你可以检查iptables的输出

 iptables -L -vn 

这将列出防火墙规则和哪些端口是打开的目标ACCEPT和任何明确closures的端口目标REJECT

lsof -i :ssh会列出所有的进程,打开ssh端口,监听和活动连接。

我使用netstatlsof的组合:

 netstat -an | grep <portnumber> lsof -i:<portnumber> 

查看端口是否正在使用,以及使用的是什么。