1.
问题概述与初步判断
1) 现象:香港机房多个站点出现短时请求激增、502/504错误和TCP连接耗尽。
2) 可疑源:访问来源以160.开头IP段频繁出现(示例IP:160.16.35.12)。
3) 影响范围:Nginx反向代理、PHP-FPM超时、带宽占满、CDN边缘回源失败。
4) 日志来源:nginx access.log、error.log、/var/log/syslog、tcpdump包捕获与CDN回源日志。
5) 风险评估:若为DDoS或爬虫,需快速识别IP聚合和请求模式以避免误封正常用户。
2.
必备工具与日志位置
1) 常用工具:grep/awk/sort/uniq、goaccess、jq、tcpdump、tshark、iftop、vnStat。
2) 集中日志:ELK/EFK或Graylog收集nginx、cdn、系统与防火墙日志,便于时间线关联。
3) 实时查看:tail -F /var/log/nginx/access.log | grep 160.;tcpdump -n host 160.16.35.12 and port 80。
4) 流量统计:iftop -i eth0 和 nload 监测实时带宽峰值(示例观察到峰值 780 Mbps)。
5) WhoIs/AS查询:查询160.16.0.0所属AS和注册信息,确认是否为合法转发或被劫持。
3.
日志分析步骤与命令示例
1) 汇总IP请求量:cat access.log | awk '{print $1}' | grep '^160\.' | sort | uniq -c | sort -nr | head -n 20。
2) 每分钟请求曲线:awk '{print substr($4,2,17)}' access.log | grep '160\.' | uniq -c | sort。
3) 抽取典型访问行:grep '160.16.35.12' access.log | head -n 5(示例行:160.16.35.12 - - [09/Aug/2026:12:34:56 +0800] "GET /index.php HTTP/1.1" 200 512)。
4) 错误相关统计:grep '502\|504' error.log | grep '160.' | wc -l(示例:502错误在高峰期达 4,200 次/分钟)。
5) 包捕获确认:tcpdump -nn -s0 -c 1000 host 160.16.35.12 -w /tmp/hk160.pcap,然后用tshark分析SYN比例和重复ACKs。
4.
关联CDN、网络与BGP信息
1) CDN对比:检查CDN边缘回源日志,确认是CDN回源到源站异常还是直接客户端直连(Cloudflare/阿里云CDN回源字段)。
2) BGP/AS分析:使用whois 160.16.0.0/16 和 bgp.he.net 查看所属AS,判断是否为ISP侧集中流量或被滥用的IP段。
3) 端口与协议分布:通过 tshark -r /tmp/hk160.pcap -q -z io,phs 显示TCP/UDP占比,若SYN占比>70%倾向SYN洪泛。
4) 地理分布:从访问日志解析国家/城市(GeoIP),确认是否集中在香港或跨国访问异常。
5) 时间相关性:将CDN、边缘和源站日志按时间线对齐,确定是回源高峰还是源站被直接攻击。
5.
排查定位到根源后的应对策略与配置示例
1) 阻断策略:临时封禁源IP或网段:iptables -I INPUT -s 160.16.35.12 -j DROP;或封禁网段 iptables -I INPUT -s 160.16.0.0/16 -j DROP。
2) 限流规则:在Nginx增加 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;并在location中使用 limit_req zone=one burst=20。
3) TCP层保护:启用syncookies、缩短tcp timeout,sysctl示例:net.ipv4.tcp_syncookies=1 net.netfilter.nf_conntrack_max=262144。
4) WAF与CDN:启用CDN的WAF规则与IP黑白名单,将可疑流量在CDN侧拦截,减轻源站压力。
5) 自动化封禁:配置fail2ban监控access.log,当单IP一分钟请求>1000触发ban(示例jail.conf规则)。
6.
真实案例与服务器配置示例(含数据表)
1) 案例简介:2026-08-09 12:30,本地香港VPS群出现短时流量高峰,主要来源160.16.35.12与160.16.40.5两IP。
2) 服务器配置示例:VPS型号:8 vCPU / 16GB RAM / 1Gbps 公网带宽;操作系统:Ubuntu 20.04;Nginx worker_processes 8,worker_connections 10240。
3) 发现数据:高峰期总请求数 480k/min,来自160.开头IP的请求占比 34%,502错误数 4,200 次/min。
4) 处置过程:先在CDN侧设为"仅允许已知UA/签名",再在防火墙封禁异常网段,随后通过ELK确定攻击模式并写入fail2ban自动封禁规则。
5) 结果:封禁后30秒内带宽降至120 Mbps,502错误恢复到正常范围内。
| 时间 | 源IP | 请求数(60s) | 返回状态 | 流量(MB) |
| 12:30:00 | 160.16.35.12 | 152,400 | 200/502混合 | 4,320 |
| 12:30:00 | 160.16.40.5 | 10,200 | 200 | 280 |
| 12:31:00 | 其他160.* | 5,600 | 504 | 110 |
7.
总结与建议
1) 建议建立日志集中平台(ELK/Prometheus+Grafana),实现异常告警(QPS、502、连接数阈值)。
2) 在CDN侧优先过滤高风险流量,减少源站暴露。
3) 常态化演练速封规则,避免误杀业务用户,设置临时与持久封禁策略分离。
4) 对可疑160.段做AS与whois核查,必要时与上游ISP联系做流量清洗。
5) 定期审计Nginx与系统参数(worker、keepalive、netfilter),并记录基线值便于快速回滚。
来源:如何通过日志分析定位香港站群服务器160开头的ip问题根源