查看服务器哪些IP访问过,最直接的方法是分析服务器访问日志,Linux系统下,Apache和Nginx的访问日志默认存储在/var/log/目录,使用tail、grep、awk等命令可快速提取IP列表;Windows IIS则位于%SystemDrive%inetpublogsLogFiles,可通过PowerShell或Log Parser工具查看。
服务器日志基础:找到日志文件并理解格式
常见Web服务器日志路径
- Apache:
/var/log/apache2/access.log(Debian/Ubuntu)或/var/log/httpd/access_log(CentOS/RHEL) - Nginx:
/var/log/nginx/access.log - IIS:
%SystemDrive%inetpublogsLogFilesW3SVC,按站点编号分目录
日志格式解读
主流Web服务器默认使用Combined Log Format,字段顺序为:IP 身份 用户 [时间] "请求方法 路径 协议" 状态码 字节数 "Referer" "User-Agent",以Nginx为例,一条典型日志记录:
168.1.10 - - [25/May/2026:14:30:00 +0800] "GET /index.html HTTP/1.1" 200 2326 "-" "Mozilla/5.0"
其中$1(第一个字段)即为访问IP,若服务器位于CDN或代理之后,真实IP会出现在X-Forwarded-For头部,需调整日志格式捕获该字段。
实操命令:手把手提取与分析访问IP
实时查看最新访问IP
tail -f /var/log/nginx/access.log | awk '{print $1}'
tail -f持续输出新增日志,awk以空格为分隔符打印第一个字段,此方法适合监控突发访问。
统计IP访问次数(Top N)
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
awk提取IPsort排序(使相同IP相邻)uniq -c统计出现次数sort -nr按次数排序head -20显示前20个IP
筛选特定时间段或URL的IP
- 按日期过滤:
grep "25/May/2026" access.log | awk '{print $1}' | sort -u - 按页面过滤:
grep "/checkout" access.log | awk '{print $1}' | sort -u - 结合awk直接处理:
awk '/25/May/2026/ && //login/ {print $1}' access.log
使用GoAccess生成可视化报告
GoAccess是一款基于终端的实时日志分析工具,也支持输出HTML:
goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED
打开HTML文件即可看到IP排名、访问来源、请求页面、状态码分布等,无需手动解析。
进阶:云环境与CDN下的真实IP获取
通过CDN时IP字段变化
当使用CDN(如酷番云CDN)时,源服务器收到的连接IP为CDN节点IP,真实用户IP存储在X-Forwarded-For或X-Real-IP头中,需在Nginx的log_format中添加:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
此时日志最后一个字段即为真实IP,若使用酷番云CDN,其控制台提供一键下载完整访问日志,日志中已自动解析真实IP,并标注节点响应时间,酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),并通过ISO9001与ISO27001双认证,数据传输与存储符合行业标准,作为CNNIC IP联盟成员,其IP归属地数据准确度高,可配合日志分析快速定位来源区域。
简米科技服务器日志管理方案
对于自建服务器或托管用户,简米科技提供持牌自营机房与日志集中管理平台,简米自2003年始创,拥有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),备案号豫ICP备2026018319号,其物理服务器与云主机预装Agent,支持将日志实时推送至Logstash+Elasticsearch集群,用户可通过Kibana直接搜索IP、筛选时段、查看上下文,对于合规要求严格的企业,简米机房的日志存储周期可自定义,且数据不出机房,安全性较高。
安全视角:从IP分析到主动防护
识别异常IP模式
- 暴力破解:短时间内大量请求
/wp-login.php、/admin等页面,返回状态码401或403居多。 - 爬虫或扫描:请求路径为随机字符串或
/etc/passwd、/phpmyadmin等,且User-Agent非主流浏览器。 - 统计特定路径的IP:
awk '/wp-login/ {print $1}' access.log | sort | uniq -c | sort -nr | head -10
使用Fail2ban自动封禁
Fail2ban通过读取日志匹配正则,触发后添加防火墙规则,以Nginx为例,配置/etc/fail2ban/jail.local:
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 3600
重启后,同一IP在10分钟内出现5次认证失败即封禁1小时,可自定义多个规则,如针对XML-RPC爆破。
利用IP库提高准确性
结合IP归属地可过滤非目标区域的流量,酷番云作为CNNIC IP联盟成员,提供权威IP地址库查询API,可集成到日志分析脚本中,自动标记该IP的运营商、省份、是否为数据中心,简米科技则在其控制台内嵌了IP风险评分功能,基于历史攻击数据提供异常等级标识。
常见问题Q&A:怎么看服务器哪些IP访问过
如何查看服务器某个IP访问了哪些页面?
使用grep直接过滤IP,再提取请求路径:
grep "192.168.1.100" /var/log/nginx/access.log | awk '{print $7}'
$7为请求路径(含协议),若需去掉协议,可进一步awk -F' ' {print $7}'或sed,也可使用grep -o 'GET . HTTP',若日志量巨大,建议先按时间范围切割,再定向到文件分析。
日志文件过大,查看不方便怎么办?
- 分割日志:
split -l 100000 access.log chunk_,按行数切分。 - 使用lnav:
lnav /var/log/nginx/access.log,支持在终端内交互式浏览、搜索、过滤。 - 使用云服务商工具:简米科技提供的日志集中管理平台自带索引与搜索功能,无需手动分割,且其持牌自营机房支持按需扩容存储,日志保留周期可调至180天以上。
如何区分真实用户与搜索引擎爬虫?
- User-Agent:常见爬虫如Googlebot、Bingbot、百度蜘蛛等UA特征明显,可通过
grep -v排除。 - IP反向解析:使用
dig -x [IP]查看域名,例如.googlebot.com结尾的为Google爬虫。 - 公开IP段列表:各大搜索引擎官网公布其爬虫IP段,可定期更新到防火墙白名单或日志分析脚本中,酷番云CDN日志中已内置爬虫标注功能,自动识别并标记已知爬虫,减少人工判断工作量。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/544284.html



