在Cent OS 7中,我使用来netstat -an
检查网络服务:
[root@localhost etc]# netstat -an | grep ESTABLISHED
udp 0 0 192.168.1.25:41136 61.216.153.106:123 ESTABLISHED
udp 0 0 192.168.1.25:59141 202.112.29.82:123 ESTABLISHED
udp 0 0 192.168.1.25:53680 115.28.122.198:123 ESTABLISHED
udp 0 0 192.168.1.25:34255 42.51.22.35:123 ESTABLISHED
你可以在那里看到临时 41136
港口。如果一个服务使用端口3306
我们可以知道它是MySQL,如果端口是8080
我们可以知道它是Tomcat,但是临时端口呢?我们如何知道哪些服务与这些端口关联?
答案1
至于临时端口:
互联网号码分配机构 (IANA) 建议动态或专用端口的范围为 49152 到 65535(2 15 +2 14到 2 16 -1)。许多 Linux 内核使用端口范围 32768 到 61000
查看 TCP/IP 元组上的目的地,如您询问的示例所示:
udp 0 0 192.168.1.25:41136 61.216.153.106:123
您可以看到它是当前机器在远程服务器上使用 NTP 服务 UDP/123。
否则,是您的机器向中国的 NTP 服务器发出 NTP 请求。
实际上,这4条线路都是连接到中国的NTP服务器。
通常,对于大多数协议,当已知端口服务在您这边(第一个)时,您通常是接收连接的服务器,并且临时端口位于右侧;相反,通常是您的服务器正在使用远程服务。
(你的服务器在中国吗?如果不是我会担心可能存在恶意软件)
您还可以取出-n
, 来解析 IP 地址/DNS 和服务名称,但请注意,它会在具有许多连接(和/或具有缓慢的 DNS 服务)的计算机/服务器中引入明显的延迟。为了感受一下差异,我将您的原始netstat
输出调整为可能的输出,而无需-n
:
$netstat -a | grep ESTABLISHED
udp 0 0 mylinux:41136 vns1.hinet.net:ntp ESTABLISHED
udp 0 0 mylinux:59141 DNS1.SYNET.EDU.CN:ntp ESTABLISHED
udp 0 0 mylinux:53680 rdns1.alidns.com:ntp ESTABLISHED
udp 0 0 mylinux:34255 ns1.htudns.com:ntp ESTABLISHED
答案2
可以用来netstat -p
获取本地已打开端口的程序的pid和名称;这可以像往常一样与-a
和结合使用-n
。
在大多数系统上,您需要 root 权限才能执行此操作。
答案3
正如您在netstat
(网工作统计数据统计)输出,
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 192.168.1.25:41136 61.216.153.106:123 ESTABLISHED
192.168.1.25
是您在 LAN 中的本地/源 IP 地址。
41136
是源端口号。
61.216.153.106
是目的IP地址。
123
是代表网络时间协议 (NTP) 的目标端口号
源端口号 ( 41136
) 与目标端口 (123
或NTP
) 类似,但由发送主机 ( 192.168.1.25
) 使用来帮助跟踪新传入连接和现有数据流。
通常,客户端/源地址 ( 192.168.1.25
) 将源端口号设置为它们自己选择的唯一编号 - 通常基于启动连接的程序。
在这种情况下,您的计算机选择的源端口号是41136
。
该数字是随机的,通常大于 1024。
看另一个例子。在这种情况下,所有目标端口都是 UDP 123,即 NTP,而源端口号不同且随机。
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 192.168.1.25:59141 202.112.29.82:123 ESTABLISHED
udp 0 0 192.168.1.25:53680 115.28.122.198:123 ESTABLISHED
udp 0 0 192.168.1.25:34255 42.51.22.35:123 ESTABLISHED