ChosoMeister/Mikrotik-IRAN-IP-List

GitHub: ChosoMeister/Mikrotik-IRAN-IP-List

自动更新 MikroTik RouterOS 伊朗 IP 列表

Stars: 2 | Forks: 0

# MikroTik 伊朗 IP 列表 基于 RIPE 国家资源数据(`IR`)自动生成的 MikroTik RouterOS IPv4 和 IPv6 地址列表。 `list.rsc` 重建 `IRAN-IP-Address` 防火墙地址列表,可直接导入 RouterOS。 ## 仓库内容 - [`list.rsc`](./list.rsc): 包含伊朗 IPv4 和 IPv6 前缀的生成 RouterOS 脚本 - [`get.sh`](./get.sh): 下载 RIPE 数据并生成 `list.rsc` 的 Bash 生成器 - [.github/workflows/](./.github/workflows): 仓库自动化以刷新生成的数据 - [`README.md`](./README.md): 项目文档 ## 功能 - 包含 IPv4 和 IPv6 前缀 - 可直接在 MikroTik 上执行 `/import` - 每次更新时清除并重建相同的地址列表 - 使用 `:do { add ... } on-error={}` 进行容错导入 - 基于 RIPE Stat 国家资源数据 `IR` 构建 - 当前生成器还向 IPv4 列表添加 `10.0.0.0/8` ## 数据源 源数据来自 RIPE Stat `country-resource-list` 端点,针对伊朗: `https://stat.ripe.net/data/country-resource-list/data.json?resource=IR&v4_format=prefix` 仓库将这些前缀转换为 RouterOS 命令,用于: - `/ip firewall address-list` - `/ipv6 firewall address-list` ## 工作原理 1. `get.sh` 使用 `curl` 下载 RIPE JSON 负载 2. 它验证 HTTP 响应并检查 IPv4 列表不为空 3. 它写入命令以删除当前的 `IRAN-IP-Address` 条目 4. 它追加所有 IPv4 前缀并显式添加 `10.0.0.0/8` 5. 它使用相同的列表名称写入 IPv6 前缀的第二部分 6. 生成的输出保存为 `list.rsc` ## 用例 - 伊朗目的地的策略路由 - NAT 绕过或无 NAT 匹配 - 按源或目的地址范围进行防火墙过滤 - 流量标记和路由决策 - 排队或分类规则 ## 快速开始 ### 直接从 GitHub 在 MikroTik 上获取 ``` :local fileName "IRAN-IP-Address.rsc" :local url "https://raw.githubusercontent.com/ChosoMeister/Mikrotik-IRAN-IP-List/master/list.rsc" /tool fetch url=$url dst-path=$fileName /import file-name=$fileName /file remove $fileName ``` ### 使用原始最小模式 ``` :foreach i in={"IRAN-IP-Address"} do={ /tool fetch url="https://raw.githubusercontent.com/ChosoMeister/Mikrotik-IRAN-IP-List/master/list.rsc" dst-path=$i /import file-name=$i /file remove $i } ``` ### 手动上传和导入 1. 下载 [`list.rsc`](./list.rsc) 2. 使用 Winbox、WebFig 或 SCP 将其上传到路由器 3. 执行: ``` /import file-name=list.rsc ``` ## 推荐的定期更新 对于生产使用,只有在下载成功且文件不为空时才导入更安全。 ``` :local fileName "IRAN-IP-Address.rsc" :local url "https://raw.githubusercontent.com/ChosoMeister/Mikrotik-IRAN-IP-List/master/list.rsc" /tool fetch url=$url dst-path=$fileName :delay 5 :if ([/file find name=$fileName] != "") do={ :if ([/file get $fileName size] > 0) do={ /import file-name=$fileName /file remove $fileName } else={ :log warning "Iran IP list download was empty; keeping current address list" /file remove $fileName } } else={ :log warning "Iran IP list download failed; keeping current address list" } ``` 您可以将此逻辑放入 RouterOS 脚本中,并使用 `/system scheduler` 每天运行。 ## 导入后的示例用法 ``` /ip firewall filter add chain=forward dst-address-list=IRAN-IP-Address action=accept comment="Example: match Iran IPv4 destinations" /ipv6 firewall filter add chain=forward dst-address-list=IRAN-IP-Address action=accept comment="Example: match Iran IPv6 destinations" ``` 根据您的策略调整操作和链。 ## 本地生成 `list.rsc` ### 要求 - `bash` - `curl` - `jq` ### 运行 ``` chmod +x get.sh ./get.sh > list.rsc ``` 如果您维护此仓库,请首先更新 `get.sh`,然后重新生成 `list.rsc`。 ## 重要说明 - `list.rsc` 在重新填充之前会删除 `IRAN-IP-Address` 中的现有条目 - 生成的文件包含一个 IPv6 部分 - 没有 IPv6 支持的路由器在导入之前可能需要删除 IPv6 块 - 国家分配的前缀与保证的流量地理位置不同 - IP 分配会随时间变化,因此定期刷新很重要 - 当前生成器故意包含 `10.0.0.0/8`;根据您的路由策略保留或删除该行为 ## 故障排除 - `tool fetch` 失败: 检查 DNS、路由器时钟、CA 证书和 `raw.githubusercontent.com` 的访问权限 - 导入在 IPv6 部分停止: 启用 IPv6 支持或删除 `list.rsc` 中的 IPv6 部分 - 本地生成失败: 安装 `jq` 并验证 RIPE 端点可访问 - 每次更新后地址列表都会被替换: 这是预期的;脚本从头开始重建列表 ## 贡献 欢迎贡献。 有用的改进包括: - 更安全的更新工作流程 - RouterOS 兼容性修复 - 自动化改进 - 文档清理 - `get.sh` 中的验证改进 如果您更改生成逻辑,请从 `get.sh` 重新生成 `list.rsc` 而不是手动编辑生成的文件。
标签:IPv4, IPv6, IP地址列表, MikroTik, NAT, PowerShell, RIPE, 分类规则, 地址列表管理, 工作流, 政策路由, 数字取证, 数据源转换, 流量标记, 网络过滤, 自动化脚本, 路由决策, 路由器, 队列管理, 防火墙