# NAT检测工具 **Repository Path**: cathymht/nat-detector ## Basic Information - **Project Name**: NAT检测工具 - **Description**: 基于STUN协议的NAT类型检测工具,支持跨平台编译 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-01-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nat-detector 基于 STUN 协议和 RFC 5780 标准的 NAT 类型检测工具,支持跨平台编译。 ## 功能特性 - 🔍 **RFC 5780 单 socket 检测** - 同一 UDP 连接发多步请求,避免多 socket 误判对称型 NAT(如误报 NAT3) - 🌍 **跨平台支持** - Linux/macOS/Windows,多种 CPU 架构 - 📡 **自定义 DNS** - 适用于 Android/Linux 无 DNS 配置环境 - ⚡ **快速检测** - 数秒内完成检测 - 🧪 **完整测试** - 包含单元测试和性能测试 检测逻辑:若首服务器返回 **OTHER-ADDRESS**,按 RFC 5780 做主/同端口/异端口三步;否则回退为**单 socket 三服务器**模式(需至少 3 个服务器)。 ## 支持的 NAT 类型 | NAT 类型 | 说明 | |---------|------| | 完全圆锥NAT (Full Cone) | 所有请求映射到同一公网地址 | | 受限圆锥NAT (Restricted Cone) | 同一目标IP映射到同一地址 | | 端口受限圆锥NAT (Port-Restricted Cone) | 同一目标IP+端口映射到同一地址 | | 对称型NAT (Symmetric NAT) | 不同目标映射到不同地址 | | 无NAT | 公网直连 | ## 安装使用 ### 编译安装 ```bash # 克隆仓库 git clone https://gitee.com/yourname/nat-detector.git cd nat-detector # 编译当前平台 go build -o nat-detector . # 或使用 Makefile make build ``` ### 跨平台编译 ```bash # 编译所有平台 ./build.sh -a # 编译指定平台 ./build.sh linux-amd64 linux-arm64 linux-mips # 常用平台 make dist-common ``` ### 使用方法 ```bash # 基本使用 ./nat-detector # 自定义 STUN 服务器(1 个用于 RFC 5780,或 3 个用于回退模式) ./nat-detector -servers "stun.example.com:3478,stun2.example.com:3478,stun3.example.com:3478" # 自定义 DNS 服务器(适用于无DNS环境) ./nat-detector -dns "8.8.8.8:53,1.1.1.1:53" # JSON 输出 ./nat-detector -json # 查看版本 ./nat-detector -version ``` ## 命令行参数 | 参数 | 说明 | 默认值 | |------|------|--------| | `-version` | 显示版本信息 | - | | `-servers` | 自定义 STUN 服务器列表(逗号分隔) | VoipBuster / 小米 / 哔哩哔哩 / VoipGate | | `-dns` | 自定义 DNS 服务器 | 8.8.8.8, 1.1.1.1, 223.5.5.5, 119.29.29.29 | | `-timeout` | 请求超时(秒) | 5 | | `-json` | JSON 格式输出 | false | | `-log` | 调试日志路径 | ~/.nat-detector-debug.log | ## 支持的平台 | 系统 | 架构 | |------|------| | Linux | amd64, 386, arm, arm64, mips, mipsle, mips64, mips64le | | macOS | amd64, arm64 | | Windows | amd64, 386 | | FreeBSD | amd64, arm64 | ## 开发 ```bash # 运行测试 make test # 查看测试覆盖率 make coverage # 代码格式化 make fmt ``` ## 许可证 MIT License ## 链接 - [RFC 5780 - NAT Behavior Discovery](https://datatracker.ietf.org/doc/html/rfc5780) - [STUN 协议](https://datatracker.ietf.org/doc/html/rfc5389)