在Linux中检查端口以帮助排除系统故障的10种方法

256 阅读6分钟

linux-10-trouleshoot

图片。Julien Tromeur/Adobe Stock

网络是许多技术背后的支柱,虽然独立的设备由于其本地处理能力而不是没有重要的价值,但商业运作背后的面包和黄油涉及通信。也就是说,让系统和设备在网络上相互通信,以访问或共享数据,维护安全和监控操作。

当使用TCP/IP(网络的通用语言)时,检查端口以确保它们被配置、监听和接受流量的过程是系统和网络管理员的标准操作。端口与在目标系统上运行的进程相关,如网络服务器、电子邮件服务器、活动目录域控制器和其他集中式资源。收集关于它们的信息对于正确的通信功能是至关重要的。

查看。Linux 30岁了:庆祝开源操作系统(免费PDF)(TechRepublic)

这里有10种方法,你可以用Linux的端口来排查问题和维护操作。

如何查看与某一服务相关的协议和端口

这个命令可以向你显示一个参考指南,它将告诉你任何服务所使用的协议和端口(理论上),以防你寻找更多的信息。它不会告诉你什么是主动监听,而是用来帮助缩小任何特定功能可能或应该使用的范围,如FTP或SSH。

运行。

cat /etc/services | less

输出将显示一个广泛的列表,其中包括几十个服务和与之相关的端口,以帮助作为你的一个参考点。

如何查看从本地系统或到本地系统有哪些端口在活动连接

运行ss 命令,你将看到一个特定系统连接的端口列表,无论是本地还是远程。细节将取决于所涉及的系统和功能。

如何使用nmap来扫描远程系统的开放端口

nmap工具,也被称为ncat,是一把方便的瑞士军刀,适用于Linux和Windows,可以用来查看远程系统上有哪些端口是开放的。请记住,端口扫描可能会引起安全小组的注意,所以只为授权的商业目的进行扫描。

比方说,你想看看微软的远程系统网站上有哪些端口是开放的。

在Linux中,运行。

nmap microsoft.com

结果将显示该主机上的开放端口,类似于下面的情况。

Starting Nmap 7.92 ( https://nmap.org ) at 2022-05-05 15:32 Eastern Daylight Time

Nmap scan report for microsoft.com (20.81.111.85)

Host is up (0.018s latency).

Other addresses for microsoft.com (not scanned): 20.84.181.62 20.103.85.33 20.53.203.50 20.112.52.29

Not shown: 998 filtered tcp ports (no-response)

PORT    STATE SERVICE

80/tcp  open  http

443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 47.51 seconds

要检查一个特定的端口,如443,运行nmap -p 443 microsoft.com

你可以用nmap -p 80,443 microsoft.com 检查多个端口,如80和443。

如何检查本地系统以查看哪个应用程序与某个端口有关

假设你想看看哪个本地应用程序正在监听8443端口。

运行。

netstat -tulpn | grep 8443

这将返回进程ID(PID),例如8971(可能有多个PID),以及应用程序的名称(在这个例子中是Java)。

如何杀死一个与特定端口相关的应用程序或服务

对于你不认识的、怀疑可能是恶意的应用程序或服务,这可能很方便。按照上面的命令,获得PID,然后运行。

kill -9 (PID)

根据需要对每个PID进行重复,以杀死该进程。

如何用telnet检查远程系统,看一个端口是否在监听并能被连接到

假设你想看看一个叫host.company.com的远程系统是否在监听443端口并且可以被连接。

运行。

telnet host.company com 443

如果你看到一个连接的响应,说明该主机正在监听该端口,并且可以被连接。

如果你得到一个连接拒绝的错误,或者连接超时,则说明该主机没有在监听,访问可能被阻止,或者你无法进入该主机(检查防火墙访问)。

如何在没有telnet的情况下检查远程系统,看一个端口是否在监听并能被连接到

并非每个系统都安装了telnet,虽然你通常可以使用yum install telnet从yum软件库中安装它,但有时软件库不包含该软件包,或者系统被锁定,无法安装任何软件。你也可能因为太匆忙而无法进行yum安装。比方说,你想看看IP为10.37.39.141的主机是否在监听636端口。

echo > /dev/tcp/10.37.39.141/636

讽刺的是,如果你没有得到回应,这实际上是一件好事,意味着访问成功了。

如果你得到一个连接拒绝的错误,或者连接超时,说明该主机没有在监听,访问可能被阻止,或者你不能进入该主机(检查防火墙访问)。

如何用curl检查远程系统,看一个TCP端口是否在监听?

这与上一步的结果相同,但这是一个方便的方法,可以让你了解curl应用程序的方向。

假设你想看看IP地址为10.37.34.21的主机是否在监听16667端口。

运行。

curl -v telnet://10.37.34.21:16667

如果你看到一个连接的响应,说明该主机正在监听该端口,并且可以被连接。

如果你得到一个连接拒绝的错误或连接超时,则说明该主机没有在监听,从该主机的访问可能被阻止,或者你无法进入该主机(检查防火墙访问)。

请注意,这只适用于TCP端口。

如何检查哪个SSL证书正在监听某个端口

这是我的最爱之一,在更换SSL证书期间,为了确保事情做得正确,它是我的救星。

假设你有一个名为splunk.company.com的服务器,它的SSL证书连接到8000端口,你刚刚更换了它,想确认它是否存在。

运行。

openssl s_client -connect splunk.company.litle.com:8000 2>/dev/null | openssl x509 -noout

这将返回SSL证书的全部细节,如CN和发行者。

如何检查监听端口的SSL证书的到期日

为了快速确定有关服务器是否有正确的证书连接到该端口,请运行。

openssl s_client -connect splunk.company.litle.com:8000 2>/dev/null | openssl x509 -noout -dates

这将返回类似于以下的输出。

notBefore=May 31 21:46:06 2021 GMT

notAfter=May 31 21:56:06 2022 GMT

有了上述信息,你就可以放心地知道正确的证书已经到位。