使用netstat命令查看连接到服务器特定端口的所有IP地址

本文介绍了如何在Linux中使用netstat命令结合管道操作,查看连接到服务器80端口的所有IP地址,并进行统计分析。通过netstat-tn2>/dev/null过滤输出,grep筛选80端口,awk获取第五列IP地址,cut按冒号切分取IP,再用sort、uniq-c和sort-nr进行排序和计数,最后用head展示前10个IP。这种方法适用于监控服务器端口连接情况。

0 Linux查看连接到服务器特定端口的所有IP地址

我们以80端口为例,执行过程中,由于列表过长,可能存在一段时间等待。如果要查看其它端口,替换即可。

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

最终输出如下:

     97 114.198.236.100
     56 67.166.157.194
     44 170.248.43.76
     38 141.0.9.20
     37 49.248.0.2
     37 153.100.131.12
     31 223.62.169.73
     30 65.248.100.253
     29 203.112.82.128
     29 182.19.66.187

接着我们分解来看这条命令

1. netstat -tn 2>/dev/null

我们使用netstat[1]命令列出所有服务和客户端的连接。

  • -n 将最终的外部连接以数字形式展示(ip地址),而不是通过主机名或域名形式展示
  • -t 仅展示tcp连接

未指定-n外部连接以主机名形式展示

Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 set-bf-hit-dsp-qua:9511 set-bf-eat-dsp-tri:37273 ESTABLISHED

指定-n后以ip地址形式展示

Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 10.54.191.131:9511          10.54.167.143:37273         ESTABLISHED

2>/dev/null
将标准错误输出重定向到/dev/null

2. grep :80

仅筛选出连接80端口的ip,这里可以替换为我们想要检查的端口。

tcp        0      0 64.91.*.*:80            114.198.236.100:12763       TIME_WAIT   
tcp        0      0 64.91.*.*:80            175.136.226.244:51950       TIME_WAIT   
tcp        0      0 64.91.*.*:80            175.136.226.244:51951       TIME_WAIT   
tcp        0      0 64.91.*.*:80            149.238.193.121:65268       TIME_WAIT   
tcp        0      0 64.91.*.*:80            114.198.236.100:44088       ESTABLISHED
tcp        0      0 64.91.*.*:80            175.136.226.244:51952       TIME_WAIT

3. awk ‘{print $5}’

因为netstat命令第5列列出了连接到本服务外部地址信息。所以要筛选出第5列数据。

114.198.236.100:12763  
175.136.226.244:51950
175.136.226.244:51951
149.238.193.121:65268
114.198.236.100:44088
175.136.226.244:51952

4. cut -d: -f1

由于要统计IP的数量,我们将筛选的结果按冒号(:)切分,并筛选出切分后第一列数据。

  1. -d 指定切分符号
  2. -f 指定了要展示切分后的哪列数据,这个是和-d配合使用。
114.198.236.100
175.136.226.244
175.136.226.244
149.238.193.121
114.198.236.100
175.136.226.244

5. sort | uniq -c | sort -nr

接着对第4步的结果进行排序,随后统计每个IP的数量,最终对统计的结果按降序排序输出

sort后得到如下结果:


114.198.236.100
114.198.236.100
149.238.193.121
175.136.226.244
175.136.226.244
175.136.226.244

uniq -c –分组统计数量

2 114.198.236.100
1 149.238.193.121
3 175.136.226.244

sort -nr 对结果按降序排序

3 175.136.226.244
2 114.198.236.100
1 149.238.193.121

6. head

最后我们通过head命令展示前10行数据

参考

[1]netstat命令详解,https://www.howtogeek.com/513003/how-to-use-netstat-on-linux/

### 3.1 使用 `tracert` 命令追踪路由路径 在Windows系统中,`tracert` 是一个常用的命令行工具,用于追踪数据包从本地主机到目标IP地址的路径。虽然 `tracert` 本身不能直接追踪到特定端口,但它可以用于确认网络路径是否正常,从而辅助排查端口连通性问题。其基本命令格式如下: ```shell tracert <IP地址> ``` 该命令会显示从本地计算机到目标IP地址之间的每一跳路由信息。通过观察输出结果,可以判断网络路径是否存在中断或延迟过高的问题 [^2]。 ### 3.2 使用 `Test-NetConnection` 命令测试端口连通性 Windows PowerShell 提供了 `Test-NetConnection` 命令,该命令不仅可以测试网络连接的可达性,还能验证特定端口是否开放。其基本命令格式如下: ```powershell Test-NetConnection <IP地址> -Port <端口号> ``` 此命令会尝试与指定的IP地址端口建立连接,并返回连接是否成功以及延迟等信息。这对于诊断远程服务器上的服务是否可用非常有用 。 ### 3.3 使用 `nmap` 进行端口扫描(外部工具) 虽然 `nmap` 不是Windows系统自带的工具,但它是一个功能强大的网络发现和安全审计工具。安装并配置好 `nmap` 后,可以使用以下命令扫描特定IP地址上的端口状态: ```shell nmap -p <端口号> <IP地址> ``` 该命令会扫描指定IP地址上的特定端口,判断其是否开放、关闭或被过滤。`nmap` 支持多种扫描方式,适用于更复杂的网络诊断场景 [^2]。 ### 3.4 使用 `telnet` 测试端口连通性(需启用) Windows系统默认未安装 `telnet` 客户端,但可以通过“启用或关闭Windows功能”来安装。安装完成后,可以使用以下命令测试特定IP地址端口的连通性: ```shell telnet <IP地址> <端口号> ``` 如果连接成功,则表示该端口处于开放状态;如果连接失败,则可能是端口关闭或被防火墙阻止 [^2]。 ### 3.5 使用 `netstat` 查看本地连接状态 虽然 `netstat` 不能直接追踪到特定IP地址端口的路径,但可以用于查看本地主机上与特定IP地址端口相关的连接状态。例如: ```shell netstat -ano | findstr :<端口号> ``` 结合 `findstr` 可以进一步过滤出与特定IP地址相关的连接信息,帮助分析本地系统的网络连接情况 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值