farshidmousavii/iran-ip-ranges
GitHub: farshidmousavii/iran-ip-ranges
自动更新伊朗IP地址列表,用于VPN、代理和防火墙的流量路由优化。
Stars: 1 | Forks: 0
# iran-ip-ranges — 伊朗 IPv4/IPv6 前缀列表与获取工具
**波斯语** | [English](#english)
## 波斯语
### 这个项目是什么?
使用持续更新的伊朗 IPv4/IPv6 前缀列表,自动将伊朗流量从您的 VPN、代理或路由器中路由出去。
适用于 VPN 服务器、路由器、防火墙和代理服务器。
该项目每 6 小时从 RIPE Stat 获取伊朗已宣布的前缀,进行合并和规范化,并生成可立即使用的多种格式输出文件。
## 直接下载文件
所有文件均在 `dist/` 目录下可用:
- **纯文本:** `dist/raw/ipv4.txt`, `dist/raw/ipv6.txt`
- **Clash / Mihomo:** `dist/clash/iran.yaml`
- **Sing-box:** `dist/sing-box/iran.json`
- **Xray:** `dist/xray/iran.json`
- **NFTables ipset:** `dist/firewall/iran.ipset`
- **NFTables 配置:** `dist/firewall/iran.nft`
- **OpenWRT:** `dist/openwrt/iran.sh`
- **MikroTik RouterOS:** `dist/routeros/ipv4.rsc`, `dist/routeros/ipv6.rsc`
### 直接下载链接
| 文件 | 链接 |
|------|------|
| `raw/ipv4.txt` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv4.txt) |
| `raw/ipv6.txt` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv6.txt) |
| `routeros/ipv4.rsc` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv4.rsc) |
| `routeros/ipv6.rsc` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv6.rsc) |
| `clash/iran.yaml` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/clash/iran.yaml) |
| `sing-box/iran.json` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/sing-box/iran.json) |
| `xray/iran.json` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/xray/iran.json) |
| `firewall/iran.ipset` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.ipset) |
| `firewall/iran.nft` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.nft) |
| `openwrt/iran.sh` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/openwrt/iran.sh) |
| `checksums.txt` | [下载](https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/checksums.txt) |
| `iran-ip-ranges.zip` | [从 Releases 下载](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest) |
### 下载二进制文件(无需 Go)
每次发布都会为不同操作系统提供预编译的二进制文件:
| 操作系统 | 下载 |
|-----------|--------|
| Linux | [`iran-ip-linux-amd64`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64) |
| macOS (Apple Silicon) | [`iran-ip-darwin-arm64`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-darwin-arm64) |
| Windows | [`iran-ip-windows-amd64.exe`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-windows-amd64.exe) |
```
# Linux / macOS
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
# Windows (PowerShell)
.\iran-ip-windows-amd64.exe
```
## 快速开始
### 使用 curl 直接下载
```
# IPv4
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv4.txt
# IPv6
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv6.txt
# Clash / Mihomo
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/clash/iran.yaml
# Sing-box
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/sing-box/iran.json
# Xray
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/xray/iran.json
# NFTables ipset
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.ipset
# NFTables 配置
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.nft
# OpenWRT 脚本
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/openwrt/iran.sh
# MikroTik
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv4.rsc
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv6.rsc
```
### 预置配置指南
`examples/` 目录中包含现成的示例配置文件——每个文件都针对特定工具进行了完整配置:
| 工具 | 示例路径 |
|------|-----------|
| Clash / Mihomo | [`examples/clash/config.yaml`](examples/clash/config.yaml) |
| Sing-box | [`examples/sing-box/config.json`](examples/sing-box/config.json) |
| Xray | [`examples/xray/config.json`](examples/xray/config.json) |
| NFTables + ipset | [`examples/nftables/rules.nft`](examples/nftables/rules.nft) |
| OpenWRT (防火墙) | [`examples/openwrt/firewall-config.sh`](examples/openwrt/firewall-config.sh) |
| MikroTik RouterOS | [`examples/mikrotik/import-script.rsc`](examples/mikrotik/import-script.rsc) |
| 分流隧道 (iptables) | [`examples/split-tunnel.sh`](examples/split-tunnel.sh) |
## 两种使用方式
### 1. 从 GitHub 直接下载
通过 GitHub Actions,文件每 6 小时自动更新。
**三种下载方式:**
- **单个文件** — 每个文件均可从 `dist/` 文件夹单独获取
- **完整压缩包 (zip)** — 所有文件每日打包发布于 [GitHub Releases](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest)
- **预编译二进制文件** — 从 Releases 下载您操作系统对应的可执行文件(无需 Go)
### 2. 自托管网络服务器
在您自己的服务器上运行网络服务器。两种方法:
**方法 A — 下载二进制文件(更简单):**
```
# Linux amd64
wget https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
```
**方法 B — Docker:**
您也可以使用 Docker(命令见下方 Docker 部分)。
网络服务器功能:
- 启动时自动获取前缀
- 通过 HTTP 提供文件服务
- 后台自动更新
- 网络中断时使用磁盘缓存
- 内置健康检查
- 优雅关闭
## 安装
### 选项 1 — 二进制文件(最简单)
```
# Linux amd64
wget https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
```
### 选项 2 — 使用 Go
```
git clone https://github.com/farshidmousavii/iran-ip-ranges.git
cd iran-ip-ranges
go run ./cmd/
```
## Docker
### Docker Compose(推荐)
```
docker compose up -d
```
生成的文件将在 `dist/` 目录中可用。
### Docker 手动运行
```
docker build -t iran-ip-ranges .
docker run -d \
--name iran-ip-ranges \
-p 8080:8080 \
iran-ip-ranges
```
容器以非 root 用户运行,并包含内置的健康检查。
## 命令行参数
| 参数 | 默认值 | 描述 |
| ------------- | ------- | ------------------------------------- |
| `-addr` | `:8080` | 网络服务器监听地址 |
| `-refresh` | `6h` | 自动更新间隔 |
| `-fetch-only` | `false` | 仅获取文件,不运行网络服务器 |
## 运行方式
### 默认模式
```
go run ./cmd/
```
### 自定义监听端口
```
go run ./cmd/ -addr :9090
```
### 每小时更新一次
```
go run ./cmd/ -refresh 1h
```
### 仅获取模式
```
go run ./cmd/ -fetch-only
```
## 网络端点
| 端点 | 描述 |
| --------------------------- | ------------------------------- |
| `GET /health` | 服务健康状态端点 |
| `GET /ipv4.txt` | 查看 IPv4 列表(向后兼容) |
| `GET /ipv6.txt` | 查看 IPv6 列表(向后兼容) |
| `GET /ipv4.rsc` | 下载 RouterOS IPv4 脚本(向后兼容) |
| `GET /ipv6.rsc` | 下载 RouterOS IPv6 脚本(向后兼容) |
| `GET /routeros/ipv4.rsc` | 下载 RouterOS IPv4 脚本 |
| `GET /routeros/ipv6.rsc` | 下载 RouterOS IPv6 脚本 |
| `GET /clash/iran.yaml` | 下载 Clash rule-provider |
| `GET /sing-box/iran.json` | 下载 Sing-box rule-set |
| `GET /xray/iran.json` | 下载 Xray routing rules |
| `GET /firewall/iran.ipset` | 下载 ipset restore 脚本 |
| `GET /firewall/iran.nft` | 下载 nftables 配置文件 |
| `GET /openwrt/iran.sh` | 下载 OpenWRT 脚本 |
| `GET /raw/iran.json` | 下载原始 JSON 列表 |
| `GET /raw/iran.yaml` | 下载原始 YAML 列表 |
| `GET /checksums.txt` | 下载 SHA256 校验和 |
所有端点均包含:
```
Cache-Control: public, max-age=21600
```
## 健康检查
`/health` 端点返回 JSON:
### 正在初始化
```
{ "status": "initializing" }
```
HTTP 状态码:
```
503
```
### 上次获取失败
```
{ "status": "stale", "last_fetch": "...", "last_error": "..." }
```
HTTP 状态码:
```
503
```
### 状态正常
```
{ "status": "ok", "last_fetch": "..." }
```
HTTP 状态码:
```
200
```
## 数据来源
数据从以下来源获取:
- RIPE Stat API
- 国家资源列表 (IR)
## 许可证
MIT
# 英语
## 这是什么?
使用持续更新的伊朗 CIDR 范围,自动将伊朗流量路由至您的 VPN 或代理之外。
专为 VPN 服务器、路由器、防火墙和代理服务器设计。
该项目每 6 小时从 RIPE Stat 获取伊朗宣布的 IP 前缀,进行合并和规范化,并生成多种格式的即用型输出文件。
## 直接下载
所有输出文件均位于 `dist/` 目录下。
### 预编译二进制文件(无需 Go)
每个版本都发布了适用于各平台的即用型二进制文件:
| 平台 | 下载 |
|----------|----------|
| Linux | [`iran-ip-linux-amd64`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64) |
| macOS (Apple Silicon) | [`iran-ip-darwin-arm64`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-darwin-arm64) |
| Windows | [`iran-ip-windows-amd64.exe`](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-windows-amd64.exe) |
```
# Linux / macOS
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
# Windows (PowerShell)
.\iran-ip-windows-amd64.exe
```
### Clash / Mihomo
- `clash/iran.yaml`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/clash/iran.yaml`
### Sing-box
- `sing-box/iran.json`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/sing-box/iran.json`
### Xray
- `xray/iran.json`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/xray/iran.json`
### NFTables
- `firewall/iran.ipset`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.ipset`
- `firewall/iran.nft`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.nft`
### OpenWRT
- `openwrt/iran.sh`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/openwrt/iran.sh`
### MikroTik RouterOS
- `routeros/ipv4.rsc`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv4.rsc`
- `routeros/ipv6.rsc`
- `https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv6.rsc`
## 快速开始
### 使用 curl 下载
```
# IPv4
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv4.txt
# IPv6
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/raw/ipv6.txt
# Clash / Mihomo
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/clash/iran.yaml
# Sing-box
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/sing-box/iran.json
# Xray
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/xray/iran.json
# NFTables ipset
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.ipset
# NFTables 配置
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/firewall/iran.nft
# OpenWRT 脚本
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/openwrt/iran.sh
# MikroTik
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv4.rsc
curl -O https://raw.githubusercontent.com/farshidmousavii/iran-ip-ranges/main/dist/routeros/ipv6.rsc
```
### 示例配置
`examples/` 目录中提供了即用型的示例配置文件:
| 工具 | 示例路径 |
|------|-------------|
| Clash / Mihomo | [`examples/clash/config.yaml`](examples/clash/config.yaml) |
| Sing-box | [`examples/sing-box/config.json`](examples/sing-box/config.json) |
| Xray | [`examples/xray/config.json`](examples/xray/config.json) |
| NFTables + ipset | [`examples/nftables/rules.nft`](examples/nftables/rules.nft) |
| OpenWRT (防火墙) | [`examples/openwrt/firewall-config.sh`](examples/openwrt/firewall-config.sh) |
| MikroTik RouterOS | [`examples/mikrotik/import-script.rsc`](examples/mikrotik/import-script.rsc) |
| 分流隧道 (iptables) | [`examples/split-tunnel.sh`](examples/split-tunnel.sh) |
## 两种使用模式
### 1. 从 GitHub 下载
GitHub Actions 每 6 小时自动刷新文件。
**三种下载选项:**
- **单个文件** — 每个文件可直接从 `dist/` 文件夹获取
- **完整压缩包 (zip)** — 所有文件每日打包发布于 [GitHub Releases](https://github.com/farshidmousavii/iran-ip-ranges/releases/latest)
- **预编译二进制文件** — 从 Releases 下载您平台的可执行文件(无需 Go)
### 2. 自托管网络服务器
在您自己的机器上运行网络服务器。两种方法:
**选项 A — 下载二进制文件(更简单):**
```
# Linux amd64
wget https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
```
**选项 B — Docker:**
您也可以使用 Docker(见下方 Docker 部分)。
功能:
- 启动时获取前缀
- 通过 HTTP 提供文件服务
- 后台自动刷新
- 磁盘缓存备用方案
- 内置健康检查
- 优雅关闭
## 安装
### 选项 1 — 二进制文件(最简单)
```
# Linux amd64
wget https://github.com/farshidmousavii/iran-ip-ranges/releases/latest/download/iran-ip-linux-amd64
chmod +x iran-ip-linux-amd64
./iran-ip-linux-amd64
```
### 选项 2 — 使用 Go
```
git clone https://github.com/farshidmousavii/iran-ip-ranges.git
cd iran-ip-ranges
go run ./cmd/
```
## Docker
### Docker Compose(推荐)
```
docker compose up -d
```
生成的文件将在 `dist/` 目录中可用。
### Docker
```
docker build -t iran-ip-ranges .
docker run -d \
--name iran-ip-ranges \
-p 8080:8080 \
iran-ip-ranges
```
容器以非 root 用户运行,并包含内置健康检查。
## 命令行参数
| 参数 | 默认值 | 描述 |
| ------------- | ------- | ------------------------- |
| `-addr` | `:8080` | 网络服务器监听地址 |
| `-refresh` | `6h` | 自动刷新间隔 |
| `-fetch-only` | `false` | 获取文件后退出 |
## 使用方式
### 默认模式
```
go run ./cmd/
```
### 自定义监听地址
```
go run ./cmd/ -addr :9090
```
### 每小时刷新
```
go run ./cmd/ -refresh 1h
```
### 仅获取模式
```
go run ./cmd/ -fetch-only
```
## 网络端点
| 端点 | 描述 |
| --------------------------- | --------------------------------- |
| `GET /health` | 服务健康端点 |
| `GET /ipv4.txt` | 查看 IPv4 列表(向后兼容) |
| `GET /ipv6.txt` | 查看 IPv6 列表(向后兼容) |
| `GET /ipv4.rsc` | 下载 RouterOS(向后兼容) |
| `GET /ipv6.rsc` | 下载 RouterOS(向后兼容) |
| `GET /routeros/ipv4.rsc` | 下载 RouterOS IPv4 脚本 |
| `GET /routeros/ipv6.rsc` | 下载 RouterOS IPv6 脚本 |
| `GET /clash/iran.yaml` | 下载 Clash rule-provider |
| `GET /sing-box/iran.json` | 下载 Sing-box rule-set |
| `GET /xray/iran.json` | 下载 Xray routing rules |
| `GET /firewall/iran.ipset` | 下载 ipset restore 脚本 |
| `GET /firewall/iran.nft` | 下载 nftables 配置文件 |
| `GET /openwrt/iran.sh` | 下载 OpenWRT 脚本 |
| `GET /raw/iran.json` | 下载原始 JSON 列表 |
| `GET /raw/iran.yaml` | 下载原始 YAML 列表 |
| `GET /checksums.txt` | 下载 SHA256 校验和 |
所有文件端点均包含:
```
Cache-Control: public, max-age=21600
```
## 健康检查
`/health` 端点返回 JSON:
### 正在初始化
```
{ "status": "initializing" }
```
HTTP 状态码:
```
503
```
### 上次获取失败
```
{ "status": "stale", "last_fetch": "...", "last_error": "..." }
```
HTTP 状态码:
```
503
```
### 状态正常
```
{ "status": "ok", "last_fetch": "..." }
```
HTTP 状态码:
```
200
```
## 数据来源
数据从以下来源获取:
- RIPE Stat API
- 国家资源列表 (IR)
## 许可证
MIT
标签:certspotter, CIDR, Clash, EVTX分析, GeoIP, IPv4, IPv6, IP 列表, IP 管理, MacOS取证, MikroTik, PowerShell, Sing-box, Xray, 代理, 伊朗, 地理定位, 文档结构分析, 无文件攻击, 日志审计, 流量控制, 网络安全, 网络配置, 自动更新, 请求拦截, 路由, 防火墙, 防火墙规则, 隐私保护