Linux指令篇:netstat

查看网络端口和连接状态

        在 Linux 系统中,netstat(Network Statistics)是一个非常有用的命令行工具,用于显示网络连接、路由表、接口统计信息等网络相关的数据。系统管理员和开发人员常使用 netstat 来排查网络问题、查看端口状态、监控网络流量等。

        本文将深入介绍 netstat 命令如何用来查看系统中开放的端口、网络连接的状态,以及常用的选项,帮助你更高效地管理和排查网络问题。

1. netstat 命令概述

    netstat 是一个网络命令,用于显示网络连接、路由表、接口统计、网络协议状态等。默认情况下,netstat 显示系统的所有网络连接和开放端口信息。

1.1 netstat 的基本语法

netstat [选项]

1.2 netstat 显示的信息

netstat 显示的信息主要包括:

  • 协议类型:如 TCPUDP 等。
  • 本地地址:本地计算机的 IP 地址和端口。
  • 外部地址:连接的远程计算机的 IP 地址和端口(如果是已建立的连接)。
  • 状态:连接的当前状态,如 LISTEN(监听)、ESTABLISHED(已建立)、TIME_WAIT(等待关闭)等。
  • PID/程序名:与该端口对应的进程 ID 和程序名称(需要 -p 选项)。

2. netstat 查看端口的常见用法

2.1 查看所有活动的网络连接

netstat 默认显示系统的所有网络连接和端口信息。如果想查看所有连接及其状态,可以使用如下命令:

netstat -a

这条命令会显示所有的网络连接和监听端口,包括 TCP 和 UDP 连接。

输出示例:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:22          192.168.1.100:54321     ESTABLISHED
udp        0      0 0.0.0.0:123             0.0.0.0:*               LISTEN
  • Proto:协议类型(TCP、UDP)。
  • Local Address:本地的 IP 地址和端口号。
  • Foreign Address:远程主机的 IP 地址和端口号(对于监听端口,显示 *)。
  • State:连接状态(如 LISTEN 表示正在监听,ESTABLISHED 表示已建立连接,TIME_WAIT 表示连接关闭后等待一段时间等)。

2.2 查看监听的端口

如果你只关心那些在本地计算机上监听的端口,可以使用 -l 选项:

netstat -l

这条命令会显示所有正在监听的 TCP 和 UDP 端口。

输出示例:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
udp        0      0 0.0.0.0:123             0.0.0.0:*               LISTEN

2.3 查看指定端口的状态

如果你想查看某个特定端口(如端口 22)的状态,可以使用 grep 配合 netstat

netstat -tuln | grep :22
  • -t:显示 TCP 连接。
  • -u:显示 UDP 连接。
  • -l:显示监听端口。
  • -n:显示数字格式的 IP 地址和端口号(不进行域名解析)。

输出示例:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN

这表示端口 22 正在本地监听。

2.4 查看所有 TCP 连接

如果你只关心 TCP 连接,可以使用 -t 选项:

netstat -t

这会列出所有 TCP 连接的状态,包括已建立的连接、监听端口等。

2.5 查看所有 UDP 连接

类似地,如果你只关心 UDP 连接,可以使用 -u 选项:

netstat -u

这会列出所有 UDP 连接和正在监听的 UDP 端口。

2.6 查看进程信息

如果你希望看到每个端口对应的进程,可以加上 -p 选项:

netstat -tulnp

这会列出所有监听端口以及对应的进程 ID 和程序名称。

输出示例:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd
udp        0      0 0.0.0.0:123             0.0.0.0:*               LISTEN      5678/ntpd

这里,PID/Program name 显示了监听端口对应的进程 ID 和程序名称。例如,端口 22 是由 sshd(SSH 服务)程序监听的。

2.7 查看路由表

除了端口信息外,netstat 还可以显示系统的路由表。使用 -r 选项:

netstat -r

输出示例:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

这显示了系统的路由表,包括目标网络、网关、子网掩码等信息。

3. 常用选项总结

选项说明
-a显示所有连接和监听端口
-l仅显示监听端口
-t显示 TCP 连接
-u显示 UDP 连接
-n显示数字格式的 IP 地址和端口号
-p显示每个连接或端口对应的进程信息
-r显示路由表
-s显示网络统计信息(如每个协议的连接数)

4. 排查网络问题的常见场景

netstat 是一个排查网络问题的非常有用的工具,以下是几个常见的使用场景:

4.1 检查某个端口是否开放

如果你怀疑某个服务未正常启动,可以通过 netstat 检查相关端口是否开放。比如,检查 SSH 服务(端口 22)是否正在监听:

netstat -tuln | grep :22

4.2 查找占用端口的进程

如果某个端口被占用,可能会导致服务冲突。使用 netstat -tulnp 可以帮助你找出是哪个进程占用了端口。

netstat -tulnp | grep :80

4.3 查看系统的网络连接状态

在服务器中,了解系统的网络连接状态有助于排查性能瓶颈或安全问题。使用 netstat -an 查看所有连接和监听端口,结合 -p 选项还可以找到是哪个进程在使用这些连接。

netstat -anp

5. 总结

    netstat 是一个功能强大的工具,能够帮助系统管理员查看网络连接、监听端口以及进程信息等。通过合理使用 netstat,你可以更高效地排查网络问题、监控系统的网络活动,并对系统进行优化和故障

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stay Passion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值