跳到主要内容

从日志里把所有 IPv4 提取出来:IP 地址提取与去重统计实操

一篇讲清楚怎么从访问日志、防火墙规则和报错文本里提取所有 IPv4 地址的实操文章,涵盖点分十进制正则匹配、去重统计和排查攻击源的具体步骤。

发布于 作者 李雷
#IPv4 #日志分析 #正则 #运维 #安全排查

从日志里把所有 IPv4 提取出来:IP 地址提取与去重统计实操

运维和安全排查里有一类反复出现的小活:手上一段几百行的日志,要把里面出现过的 IP 地址全数捞出来,去掉重复,数一数谁出现得最频繁。手工做要么靠眼睛扫,要么写一段临时脚本,既慢又容易漏。这篇文章把这件事拆开讲,从正则怎么匹配点分四段,到怎么用提取结果定位攻击源。

什么是合法的 IPv4 地址

IPv4 地址是点分十进制:四段数字,用点号隔开,每一段取值范围是 0 到 255。比如 192.168.1.110.0.0.2548.8.8.8 都合法,而 256.0.0.1 因为第一段超过 255 就不合法,192.168 只有两段也不算完整地址。

这里有个容易踩的坑:很多人写正则只用 \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3},这条会把 999.999.999.999 也匹配进来。真正严谨的每段约束应该是 0 到 255,也就是 25[0-5]2[0-4]\d1\d\d[1-9]?\d 这几种情况的并集。日志里混进越界数字、把 IP 粘在时间戳上的情况很常见,所以光匹配出来还不够,得校验每一段是否真的落在 0 到 255 区间内。

从一段访问日志里提取 IP

举个真实例子。下面是一段 Nginx 访问日志加上 SSH 登录失败记录的混合文本:

203.0.113.7 - - [13/Jun/2026:08:12:04] "GET /login HTTP/1.1" 200
198.51.100.23 - - [13/Jun/2026:08:12:09] "POST /admin HTTP/1.1" 403
Failed password for root from 203.0.113.7 port 51324 ssh2
Failed password for admin from 45.83.64.12 port 22018 ssh2
203.0.113.7 - - [13/Jun/2026:08:12:11] "GET /admin HTTP/1.1" 403
invalid host 256.300.1.1 in request

把这段文本丢进提取器,扫描点分四段地址、去重之后,得到的干净列表是:

45.83.64.12
198.51.100.23
203.0.113.7

注意 256.300.1.1 被标成无效项,因为它的前两段越过了 255 的上限。203.0.113.7 在原文里出现了三次,去重后只剩一行。时间戳、端口号、HTTP 状态码这些周围文字全部被留下不带走,你拿到的就是纯 IP 清单。

去重统计帮你看出谁最可疑

提取只是第一步。真正有价值的是去重之后的统计:同一个 IP 在日志里出现了多少次。上面这段里 203.0.113.7 既在访问日志里反复请求 /admin 又出现在 SSH 登录失败记录里,这种横跨多个日志来源的高频 IP,通常就是值得拉黑或者重点盯防的对象。

我自己排查一次撞库攻击时就靠这套流程:先把当天的 auth.log 全段粘进提取器,保留无效项一起复核,几秒钟就拿到几十个来源 IP 的去重列表,再按出现次数排序,前五个地址贡献了八成以上的失败登录。把这五个地址导出成 SQL IN 片段,直接拼进封禁表的查询语句,整个过程不到三分钟,比一行行翻日志快太多。

分析防火墙规则和攻击源

防火墙配置文件本身也是一大堆 IP 的集合。当你要核对 iptables 规则、安全组白名单或者 hosts.deny 里到底放行或拦截了哪些地址时,把整份配置粘进来提取,就能拿到一份去重后的地址清单,再和实际访问日志里的来源 IP 做对比,很容易发现规则里有没有漏网或者多余的条目。

排查攻击源时,把提取出来的可疑 IP 列表导出为带行号的 CSV 或 Markdown,既能交接给同事,也能作为审计线索保留。不要只复制最终列表,行号能让你随时回到原文确认上下文。

提取之后还能做什么

拿到干净 IP 列表后,常见的后续动作有几类。需要核对每个地址是否真的合法、有没有越界段,可以接着用 IPv4 地址列表校验器 把列表过一遍,逐行标出无效原因。如果你处理的不只是 IP,而是从网页或文档里抓链接、清理文本,这套结构化提取的思路同样适用。

整个流程的核心入口是 IPv4 地址提取器:粘贴文本或上传本地日志文件,解析、校验、去重、导出都在浏览器本地完成,日志内容不会离开你的电脑。这一点对安全排查尤其重要,你不会想把含有内网地址和攻击痕迹的原始日志发到任何外部服务器上。

把提取、去重、统计这三步连起来,原本要手工扫半天的日志,几秒钟就能变成一份可以直接行动的来源 IP 清单。


Made by Toolora · Updated 2026-06-13