#dns-records #ip-geolocation #ip-address #dns-queries #domain #tool #provider

bin+lib dns-geolocation-checker

一个基于DNS记录检查域名地理位置的工具

3个不稳定版本

0.2.1 2024年7月13日
0.2.0 2024年7月12日
0.1.0 2024年7月11日

#395数据库接口

Download history 291/week @ 2024-07-09 18/week @ 2024-07-16 3/week @ 2024-07-23 33/week @ 2024-07-30

每月345次下载

MIT 许可证

37KB
809

DNS地理位置检查器

Documentation Package GitHub License

本项目是一个Rust应用程序,旨在检查DNS地址的地理位置。它利用各种Rust crate解析配置文件、执行DNS查询和检查IP地理位置。

入门

要开始使用此项目,请克隆仓库并确保您的系统上已安装Rust和Cargo。

安装

Cargo

二进制版本可在 crates.io 上获取。您可以使用以下命令安装DNS地理位置检查器

cargo install dns-geolocation-checker

手动

  1. 克隆仓库
git clone https://github.com/single9/dns-geolocation-checker.git
  1. 导航到项目目录
cd dns-geolocation-checker
  1. 构建项目
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:一个数组,指示该域名用于地理路由目的而关联的地理子网组(sgus)。

将文件 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