3个不稳定版本
0.2.1 | 2024年7月13日 |
---|---|
0.2.0 | 2024年7月12日 |
0.1.0 | 2024年7月11日 |
#395 在 数据库接口
每月345次下载
37KB
809 行
DNS地理位置检查器
本项目是一个Rust应用程序,旨在检查DNS地址的地理位置。它利用各种Rust crate解析配置文件、执行DNS查询和检查IP地理位置。
入门
要开始使用此项目,请克隆仓库并确保您的系统上已安装Rust和Cargo。
安装
Cargo
二进制版本可在 crates.io 上获取。您可以使用以下命令安装DNS地理位置检查器
cargo install dns-geolocation-checker
手动
- 克隆仓库
git clone https://github.com/single9/dns-geolocation-checker.git
- 导航到项目目录
cd dns-geolocation-checker
- 构建项目
cargo build
用法
功能标志
DNS地理位置检查器支持以下功能标志
ip-api
:启用IP地理位置API提供者。mmdb
:启用MaxMind GeoLite2数据库提供者。
要启用功能标志,请使用以下命令
cargo build -F ip-api
要启用全部功能,请使用以下命令
cargo build -F full
配置
您可以通过修改 config.toml
文件来配置DNS地理位置检查器。配置文件包含以下部分
[test_subnets]
sg = { subnets = ["175.41.192.0/18"] }
us = { subnets = ["44.208.193.0/24"] }
[[domain]]
host = "www.example.com"
geo_routing = ["sg", "us"]
-
test_subnets
:定义一个包含具有地理位置标识符的子网的测试部分。sg
:代表新加坡的键,包含一个包含单个子网"175.41.192.0/18"
的列表。us
:代表美国的键,包含一个包含单个子网"44.208.193.0/24"
的列表。
-
[[domain]]
:一组域名配置,允许有多个条目。host
:指定域名,这里为"www.example.com"
。geo_routing
:一个数组,指示该域名用于地理路由目的而关联的地理子网组(sg
和us
)。
将文件 config.toml
放置在项目的 configs
目录中。或者,您可以在运行应用程序时使用 CONFIG_PATH
环境变量来指定配置文件的路径。
IP地理位置提供商
MMDB
这是默认的IP地理位置提供商。
如果您想使用MaxMind GeoLite2数据库,需要从 MaxMind网站 下载数据库。下载数据库后,您需要在 config.toml
文件中指定数据库的路径
ip_geo_provider = "mmdb"
# Set the path to the MMDB file
# Default: "./mmdb/GeoLite2-City.mmdb"
mmdb_path = "/path/to/GeoLite2-City.mmdb"
默认路径为 ./mmdb/GeoLite2-City.mmdb
。
IP-API
IP地理位置API 是一项免费服务,提供IP地址的地理位置信息。
如果您想使用IP地理位置API服务,需要在 config.toml
文件中指定提供商
ip_geo_provider = "ip-api"
运行
要运行DNS地理位置检查器,请使用以下命令
cargo run --bin dns-geo-checker
当您运行DNS地理位置检查器时,它将查询每个域的DNS记录并检查返回的IP地址的地理位置。如果IP地址落在 test_subnets
部分中指定的子网之一内,则地理位置将被视为匹配。
构建
要构建项目,请使用以下命令
cargo build
您可以在 target/release
目录中找到编译的二进制文件。
运行测试
要为此项目运行测试,请执行
cargo test --verbose
待办事项
- CLI模式
- 支持多个IP地理位置提供商
- 支持IPv6地址
- 将IP地址映射到地理位置
许可
本项目采用MIT许可协议 - 有关详细信息,请参阅LICENSE 文件。
依赖项
~9–21MB
~303K SLoC