[本站原创工具-IP-Repository]IP白名单管理系统 | 多设备IP自动收集整合工具

zsanjin 发布于 2026-01-27 460 次阅读


IP-Repository开源地址:https://github.com/zsanjin-p/IP-Repository

Unable to fetch GitHub data for: zsanjin-p/IP-Repository

 

省流介绍:配置好服务端和客户端,在客户端上定时执行,即刻可更新云端白名单库!

 

当你有多台设备,或者使用城域网、软路由等场景时,公网IP经常变动,访问一些敏感服务(如SSH、远程桌面、管理后台等)就会很麻烦。每次IP变了都要手动更新白名单?那太蠢了!😤

于是我做了这个自动化的IP白名单管理系统,能够自动收集所有设备的公网IP,整合到一个统一的白名单中,再也不用担心IP变动导致无法访问的问题了🎉🎉🎉

这是一个客户端-服务端架构的IP收集系统,客户端在各个设备上运行Shell脚本,自动检测公网IP并上传到服务器;服务端接收、整合、展示所有设备的IP数据,提供可视化界面和API接口。支持FTP上传和HTTP API上传两种方式。

为了方便理解实现原理,先看看系统的核心功能

 

客户端功能特性:

✅ 多源IP检测:使用15+国内外IP检测服务,确保获取到准确的公网IP
✅ 自动重试机制:某个检测服务失败会自动尝试其他服务
✅ IP历史记录:保存历史IP变动记录,方便追溯
✅ 设备唯一标识:自动生成设备ID,区分不同设备
✅ 双上传方式:支持FTP和HTTP API两种上传方式
✅ 双格式导出:同时生成JSON和TXT格式的数据文件

服务端功能特性:

✅ 多设备数据整合:自动接收并整合所有设备的IP数据
✅ 自动去重:智能去除重复IP,保持列表简洁
✅ 可视化界面:提供美观的Web界面查看所有数据
✅ API接口:支持多种格式的API输出(JSON、TXT、统计信息等)
✅ 频率限制:防止恶意请求,保护服务器安全
✅ API密钥验证:确保只有授权设备可以上传数据

 

 

具体使用方式:

首先从开源地址下载项目文件,开源地址:https://github.com/zsanjin-p/IP-Repository

项目中主要文件:
index.php 服务端主API文件(前端+接口)
api/processor.php FTP文件处理脚本(可选)
collect_ip.sh 客户端收集脚本

1、服务端部署

将PHP文件上传到你的Web服务器,建议目录结构:

/www/wwwroot/myip.xxxx.com/
├── index.php              # 主API文件(前端+接口)
└── api/
    └── processor.php      # 文件处理脚本

*注意,需要修改index.php中的API密钥配置:

define('API_KEY', 'your_secret_api_key_here');  // 改成你的密钥

设置目录权限,确保PHP可以写入数据:

chmod 755 /www/wwwroot/myip.xxxx.com/api
chmod 755 /www/wwwroot/myip.xxxx.com/api/ip_data
chmod 755 /www/wwwroot/myip.xxxx.com/api/uploads 

2、客户端部署

Linux/macOS用户直接运行脚本:

chmod +x collect_ip.sh
./collect_ip.sh

Windows用户用ps1脚本:

1、powershell中直接运行: .\collect_ip.sh  注意文件修改后要另存为UTF-8 with BOM,否则报错

2、设置任务计划即可

3、客户端配置

编辑collect_ip.sh,根据你的需求选择上传方式:

建议配置ftp和http api上传,并优先选择ftp,因为ftp上传失败可自动切换为http api,反之不行

方式一:FTP上传(推荐)

# 约第 8 行:选择上传方式
UPLOAD_METHOD="ftp"

# 约第 10-14 行:配置 FTP 信息
FTP_HOST="1.2.3.4"                     # FTP服务器地址
FTP_PORT=21                            # FTP端口
FTP_USER="USER"                        # FTP用户名
FTP_PASS="your_ftp_password"          # FTP密码
FTP_UPLOAD_DIR="/api/uploads"         # 上传目录

方式二:HTTP API上传

# 约第 8 行:选择上传方式
UPLOAD_METHOD="http"

# 约第 6-7 行:配置 API
UPLOAD_URL="https://myip.xxxx.com/api/upload-ip"
API_KEY="your_secret_api_key_here"    # 与服务端一致

工作目录配置(约第17行):

# Linux
WORK_DIR="/root/myiplist"

4、设置定时任务

linux用户可以用Crontab或者宝塔定时任务:

编辑定时任务:

# 编辑定时任务
crontab -e

# 每5分钟执行一次
*/5 * * * * /path/to/collect_ip.sh >> /path/to/collector.log 2>&1

# 或每小时执行
0 * * * * /path/to/collect_ip.sh

 

Web界面和API使用

部署完成后,直接访问你的域名即可看到可视化界面:

https://myip.xxxx.com/

界面会显示:
• 总IP数量和设备数量统计
• 所有收集到的IP列表
• 各设备的详细信息
• 最后更新时间

 

API接口说明:

系统提供了多种API接口方便集成:

?action=ips - 纯文本IP列表(一行一个)
?action=json - 完整JSON数据
?action=stats - 统计信息
?action=list - JSON格式(兼容旧版)
?action=list&format=txt - TXT格式(兼容旧版)

 

API使用示例:

# 获取所有IP(文本格式)
curl https://myip.xxxx.com/?action=ips

# 获取JSON数据
curl https://myip.xxxx.com/?action=json

# 获取统计信息
curl https://myip.xxxx.com/?action=stats

 

文件结构说明

服务端文件结构:

/www/wwwroot/myip.xxxx.com/
├── index.php                    # 主API + Web界面
├── api/
│   ├── processor.php           # FTP文件处理器(可选)
│   ├── ip_data/                # 数据存储目录
│   │   ├── merged_ips.json    # 整合后的IP数据
│   │   ├── ip_list.txt        # 简易IP列表
│   │   ├── device1.json       # 设备1的数据
│   │   └── device2.json       # 设备2的数据
│   └── uploads/                # FTP上传临时目录

客户端文件结构:

/your/work/dir/
├── collect_ip.sh              # 收集脚本
├── ip_history.txt            # IP历史记录
├── ip_list.txt               # 导出的IP列表
├── ip_data.json              # 导出的JSON数据
├── collector.log             # 运行日志
└── device_id.txt             # 设备唯一ID

 

使用场景

🏠 家庭网络:收集家中多台设备的动态公网IP,方便远程访问NAS、路由器等设备

🏢 企业环境:管理分支机构的出口IP白名单,统一维护访问权限

🔒 安全访问:为SSH、VPN、远程桌面等服务维护动态白名单,防止爆破攻击

☁️ 云服务:自动更新云服务器防火墙规则,无需手动添加IP

 

*实用技巧:可以结合frpbanip项目使用,将收集到的IP自动添加到白名单中,其他IP自动封禁,实现更安全的服务访问控制!

 

安全建议

⚠️ 修改默认API密钥:使用强随机字符串,不要使用简单密码

⚠️ 限制IP访问:在Web服务器配置中限制管理界面的访问IP

⚠️ 使用HTTPS:保护数据传输安全,防止中间人攻击

⚠️ 定期清理日志:避免日志文件过大占用磁盘空间

⚠️ 备份数据:定期备份ip_data目录,防止数据丢失

 

现在你可以轻松管理所有设备的IP白名单,再也不用担心IP变动导致的访问问题了!配合防火墙规则或其他安全工具,让你的服务更加安全可靠🎯

喜欢这个项目可以帮忙点个star⭐

 

 

感谢请我吃辣条
感谢请我吃泡面
感谢请我喝奶茶
此作者没有提供个人介绍。
最后更新于 2026-02-03