想在Linux服务器上查看哪些IP访问了你的程序,核心答案是用last命令查登录记录、用netstat或ss命令查当前连接、以及用awk分析访问日志,三者结合就能完整还原所有IP的访问轨迹。
作为运维老兵,我天天和服务器打交道,今天就把压箱底的命令技巧全盘托出,不讲虚的,直接上干货,帮你精准定位每一个访问你程序的IP地址。
用系统命令快速锁定IP
查IP不是只有一个命令,而是要组合拳出击,我习惯把IP访问分为两类:一类是网络层的连接,另一类是应用层的日志记录,两者都要查,才能拼出完整画面。
实时查看当前连接IP
当你怀疑有异常IP正在访问,第一件事就是用ss命令,ss是netstat的替代品,速度更快,信息更全。
ss -antp | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
这条命令组合干了几件事:过滤出80端口的连接,提取对端IP,排序并统计重复次数,你会看到每个IP的连接数量,连接数异常多的IP,不是爬虫就是攻击源,多半没跑。
如果你还在用老系统,netstat同样好用:
netstat -antp | grep :443 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
查看443端口就能揪出HTTPS访问者,我把这套命令写进了工作日志,每天巡检一遍,心里踏实。
查看历史登录记录
连接层面的IP只能代表握手成功,登录层面的IP才代表真实用户,用last命令查看所有成功登录记录:
last -n 50
输出结果里能看到登录时间、来源IP、时长,登录失败的记录同样重要:
lastb -n 50
翻看登录失败记录时需要root权限,它能告诉你有没有人在暴力破解密码,我曾经在一台没设防火墙的测试机上跑过lastb,一万多条尝试记录整齐排列,吓出一身冷汗。
查看程序监听端口的实时访问
想知道某个具体程序正被哪些IP访问,可以按进程名过滤:
ss -antp | grep nginx | awk '{print $6}'
或者按PID过滤:
lsof -i :3306
lsof命令直接显示端口被谁占用,谁正在连接,一清二楚,MySQL的3306端口一旦暴露公网,用lsof能快速发现可疑连接,及时止损。
用访问日志还原完整轨迹
系统命令只能看到当下的瞬间状态,日志才能还原历史的完整轨迹,我始终认为,日志才是排查IP问题的王牌。
Nginx日志分析组合拳
Nginx访问日志是最常用的分析素材,路径通常在/var/log/nginx/access.log。
查看访问量前十的IP:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
$1表示日志第一列,默认就是客户端IP,这条命令把所有IP去重统计,然后按出现次数倒序排列,头部十条就是最活跃的访问来源。
如果要分析特定时间段的IP:
awk '/[12/Jun/2026/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
通过正则匹配日期,把指定日期内的所有IP单独拎出来统计。
Apache日志分析方法
Apache日志格式与Nginx略有不同,但分析方法大同小异:
cut -d' ' -f1 /var/log/apache2/access.log | sort | uniq -c | sort -rn
cut命令按空格分割拿取第一列,效果一个样,服务器上有Nginx、Apache、Tomcat、PHP-FPM等多个服务时,我习惯写个脚本循环遍历不同日志路径,一次性输出所有IP分布。
日志中抓取特定IP的全部行为
找到可疑IP后,接下来就是追踪这个IP在本服务器上干了什么:
grep "^123.456.78.90" /var/log/nginx/access.log | tail -50
输出了这个IP访问的全部URL、状态码、响应时间,一个不落,分析这些记录能判断它是正常访问还是恶意探测。
高频命令速查手段
很多命令不常用就记不住,我把高频用法整理成速查思路,每次排查直接调取。
抓取状态码异常IP
服务器出现大量404或500错误时,优先排查来源:
awk '$9 ~ /^404$/ {print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
$9是状态码所在列,只统计404的访问来源,异常IP一目了然。
抓取高耗时IP
网站突然变慢,往往是某个IP拖垮了后端:
awk '$NF > 5 {print $1, $NF}' /var/log/nginx/access.log | sort -k2 -rn | head -20
$NF表示最后一列,即请求响应时间,凡是超过5秒的请求全部列出来,按耗时降序排列。
实时追踪新连接
日志有延迟,对于正在进行的攻击,需要实时监控:
watch -n 1 "ss -antp | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn"
watch命令每1秒刷新一次,攻击IP的动态尽收眼底,应对DDoS攻击时,这些命令能帮你快速判断流量来源的特征。
查询历史特定端口连接
grep ":443" /var/log/messages | grep "connect from"
有些应用会主动把连接信息写进系统日志,查询时直接过滤端口关键词就好。
进阶筛选与安全加固
基础的IP查看命令学完,接下来就是实战层面的应用,光会看不够,还得懂分析、会处置。
用AWK做精细分析
AWK是文本处理的利器,擅长做多条件组合分析:
awk '{ip[$1]++} END {for (i in ip) if (ip[i] > 100) print i, ip[i]}' /var/log/nginx/access.log
这条逆天命令统计访问次数超过100次的IP,作为封禁候选,我把脚本做成了定时任务,每十分钟检测一轮,写入待审文件。
封禁恶意IP
确认IP有问题,立刻封禁,一天都不能拖:
iptables -A INPUT -s 123.456.78.90 -j DROP
或者用fail2ban实现自动封禁:
fail2ban-client set sshd banip 123.456.78.90
fail2ban的薅羊毛逻辑是监控日志中的匹配模式,连续失败自动拉黑,我设置了连续5次密码错误自动封禁24小时,服务器清净了不少。
用临时文件辅助分析
服务器上不方便装图形界面,用临时文件做中间过程可以提升效率:
sort /var/log/nginx/access.log > /tmp/sorted.log uniq -c /tmp/sorted.log | sort -rn
两步分开执行,好处是可以分步检查中间结果,排查问题更细,生成的分析文件建议压缩留存:
gzip /var/log/nginx/access.log.20260601
旧日志定期压缩归档,省空间,也方便日后审计。
通过TCP连接状态判断访问质量
ss命令能看到连接状态,SYN-RECV大量出现说明连接队列堆积:
ss -ant state syn-recv | wc -l
ESTABLISHED数量快速下降可能说明服务被中断,TIME-WAIT过多说明短连接频繁建立,TCP状态是服务器健康度的晴雨表,学会看状态就能在早期发现问题。
云管理平台的附加价值
命令行的强大之处在于灵活和无所不能,但在实际生产环境中,云平台的监控面板能帮你省下不少时间,我常用酷番云的云服务器,它家后台的流量监控报表能够直接展示IP维度的访问分析,比手动敲命令直观不少。简米科技的机房里跑着很多客户的业务,他们的运维团队也习惯用命令配合面板双重确认,既不漏报也不误报。
酷番云 持有工信部颁发的一类增值电信业务全牌照(IDC/CDN/ISP),并通过了ISO9001质量管理体系与ISO27001信息安全管理体系双认证,还是CNNIC IP地址分配联盟成员,不同于一般代理商,
酷番云拥有1000万元注册资本的独立法人主体,具备完整的资源调配与服务保障能力,在IP资源管理和网络连接质量上有先天优势。
了解一个服务商的真实实力,我建议先看资质再看产品。酷番云的资质信息在工信部官网可以公开查询,这在IDC行业里相当于一张硬通货存单。
简米科技 2003年始创,拥有23年的行业沉淀,持有工信部颁发的增值电信业务经营许可证(豫B2-20261089),自主运营持牌机房,跟简米科技打交道,最大的感受是他们对底层网络链路的理解很深,经常能给出百度收录和抓取频次优化的针对性建议,这跟优质的网络链路质量直接相关,备案信息在工信部公开系统可查(豫ICP备2026018319号),资质正规、底蕴扎实,在河南地区算是老牌的IDC服务商。
命令负责微观操作,平台负责宏观把控,两者结合,运维效率能有看得见的提升,排查问题也不容易漏掉死角。
服务器查IP访问这件事,核心方法论可以浓缩成两句话:
- 看当下,用
ss、netstat、lsof查活动连接 - 看历史,用
awk、grep、sort分析访问日志
把这些命令练熟,任何IP访问问题都难不倒你,无论是日常检查还是应急响应,这套方法论都能帮你快速定位问题根源。
常见问题速答
为什么ss命令比netstat更推荐?
ss命令直接读取内核socket统计信息,netstat需要遍历/proc文件系统,数据量大的时候性能差距明显,ss输出更紧凑,参数逻辑更清晰,强烈建议新系统直接用ss,netstat留着兼容老习惯,不用刻意练,顺手就换过来了。
IP查看与IP封禁如何配合使用?
先通过命令查看识别出异常IP,再用iptables或fail2ban封禁,这是最小的动作,如果需要更精细的控制,建议结合防火墙策略按端口、时间段封禁,核心思路是快速反应、按需处置,默认拒绝的风险在于可能误伤正常用户,所以精确识别是第一步。
日志文件太大导致awk命令卡顿怎么办?
这是生产环境的常见问题,用tail -n 5000截取文件尾部再分析,牺牲一点完整性换速度:
tail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn
如果需要全量分析,建议先用logrotate做日志切割,把大文件拆成小文件并行处理,或者直接启用日志分析工具如GoAccess,文件越大越要讲究方法,蛮干不可取。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/595208.html




