# YLTX-DNS 快速参考卡 > 二次开发核心功能快速查阅 --- ## 🎯 核心亮点 ``` ┌─────────────────────────────────────────────────────┐ │ 🛡️ 智能防污染 │ 🔧 自动排序 │ 🖥️ Web界面 │ │ │ │ 先查国内DNS │ 任意配置顺序 │ 零YAML编写 │ │ 检测污染IP │ 自动调整加载 │ 表单化操作 │ │ 自动切换国外 │ 循环依赖检测 │ 可视化管理 │ └─────────────────────────────────────────────────────┘ ``` --- ## ⚡ 快速开始 ### 编译 (3步) ```bash cd web-ui && npm install && npm run build && cd .. go build -ldflags="-s -w" -o mosdns . ./mosdns -c config.yaml ``` ### 访问 ``` Web: http://localhost:5555 DNS: 53, 5353 ``` --- ## 📁 核心文件 | 文件 | 功能 | 行数 | |------|------|------| | `pkg/utils/toposort.go` | 拓扑排序 | 145 | | `coremain/config_validator.go` | 配置验证 | 293 | | `coremain/config_builder.go` | 配置生成 | 429 | | `plugin/executable/smart_fallback/` | 智能防污染 | 270 | | `coremain/rule_handlers.go` | API | 639 | | `web-ui/` | Vue界面 | 2000+ | --- ## 🔌 主要API ``` GET /api/server-info # 系统状态 GET /api/stats # 查询统计 GET /api/rules # 规则列表 GET /api/rules/{name} # 规则详情 POST /api/rules # 添加规则 PUT /api/rules/{name} # 更新规则 DELETE /api/rules/{name} # 删除规则 ``` --- ## 🎨 添加规则示例 ### Web界面 (推荐) ``` 1. 访问 http://localhost:5555 2. 点击「域名路由规则」→「添加规则」 3. 填写表单: - 规则名: openai - 域名文件: /data/mikrotik/openai.txt - DNS策略: 智能防污染 - MikroTik: 启用 4. 保存 → 重启服务 ``` ### API调用 ```bash curl -X POST http://localhost:5541/api/rules \ -H "Content-Type: application/json" \ -d '{ "name": "openai", "domain_file": "/data/mikrotik/openai.txt", "dns_strategy": "smart-fallback", "enable_mikrotik": true, "mikrotik_config": { "host": "192.168.1.1", "port": 8728, "username": "admin", "password": "123456", "address_list": "openai" } }' ``` --- ## 🛡️ 智能防污染配置 ```yaml - tag: smart_fallback_handler type: smart_fallback args: primary: $china-dns # 国内DNS secondary: $overseas-dns # 国际DNS china_ip: - "/data/chn_ip.txt" # CN地址表 timeout: 2000 # 2秒超时 always_standby: false # 顺序查询 verbose: true # 详细日志 ``` --- ## 📊 性能数据 ``` 国内域名: 20-30ms 国外域名: 30-50ms (无污染) 80-120ms (有污染) 缓存命中: <5ms 并发能力: 3000-5000 qps (单核) 内存占用: 30-150MB CPU占用: <5% (1000 qps) ``` --- ## 🔧 故障排查 ### 启动失败 ```bash # 配置验证 ./mosdns -c config.yaml -dry-run # 查看日志 journalctl -u mosdns -n 50 ``` ### Web无法访问 ```bash # 检查端口 netstat -tlnp | grep 5555 # 检查配置 grep "web:" config.yaml ``` ### 防污染不生效 ```bash # 检查CN表 ls -lh data/chn_ip.txt # 启用详细日志 # config.yaml → verbose: true ``` --- ## 🎯 配置示例 ### 国内DNS ```yaml - tag: rule_baidu type: sequence args: exec: - matches: qname $domains_baidu exec: $china-dns ``` ### 国外DNS ```yaml - tag: rule_netflix type: sequence args: exec: - matches: qname $domains_netflix exec: $overseas-dns ``` ### 智能防污染 ```yaml - tag: rule_openai type: sequence args: exec: - matches: qname $domains_openai exec: $smart-fallback ``` --- ## 📦 目录结构 ``` mosdns/ ├── config.yaml # 主配置 ├── config.d/ │ └── rules/ # 规则配置 │ ├── openai.yaml │ └── netflix.yaml ├── data/ │ ├── chn_ip.txt # CN地址表 │ └── mikrotik/ # 域名文件 │ ├── openai.txt │ └── netflix.txt ├── web-ui/ │ ├── src/ # Vue源码 │ └── dist/ # 构建输出 ├── pkg/utils/ # 工具包 ├── coremain/ # 核心代码 └── plugin/ # 插件 ``` --- ## 🚀 升级计划 ### v2.0 (计划中) - [ ] 热重载配置 - [ ] 规则导入导出 - [ ] 多用户权限 - [ ] Docker镜像 - [ ] K8s Helm Chart --- ## 📚 文档索引 | 文档 | 说明 | |------|------| | [二次开发总结](./YLTX-DNS智能防污染系统-二次开发总结.md) | 完整功能介绍 | | [README](./README-二开版本.md) | 项目说明 | | [功能清单](./功能实现清单.md) | 详细清单 | | [错误修复](./错误修复总结.md) | Bug修复 | | [架构设计](./yltx-dns-智能防污染系统-架构设计文档.md) | 技术架构 | --- ## 🎁 关键创新 ### 1️⃣ 配置顺序自由 ```yaml # ❌ 传统: 必须严格顺序 plugins: - tag: upstream - tag: main exec: $upstream # ✅ YLTX-DNS: 任意顺序 plugins: - tag: main exec: $upstream # OK! - tag: upstream ``` ### 2️⃣ 智能污染检测 ``` 国内DNS → 127.0.0.1 → 检测CN表 → ❌ → 自动切换国际DNS → 104.18.xxx.xxx → ✅ ``` ### 3️⃣ 零配置门槛 ``` 表单填写 → 自动生成YAML → 一键启用 ``` --- ## 💡 最佳实践 ### 1. 域名文件组织 ``` data/mikrotik/ ├── ai/ │ ├── openai.txt │ ├── claude.txt │ └── gemini.txt ├── video/ │ ├── netflix.txt │ └── youtube.txt └── social/ └── twitter.txt ``` ### 2. DNS策略选择 ``` 国内网站 → 国内DNS 国外网站 → 国外DNS AI服务 → 智能防污染 (推荐) 流媒体服务 → 国外DNS ``` ### 3. MikroTik配置 ``` 常用服务 → mask: 32 (单IP) 大型服务 → mask: 24 (子网) 超大服务 → mask: 20 (更大子网) ``` --- ## 🔥 常用命令 ```bash # 编译 go build -o mosdns . # 启动 ./mosdns -c config.yaml # 后台运行 nohup ./mosdns -c config.yaml & # 重启服务 systemctl restart mosdns # 查看日志 journalctl -u mosdns -f # 配置验证 ./mosdns -c config.yaml -dry-run # 性能测试 ab -n 10000 -c 100 http://localhost:5541/api/server-info ``` --- ## 📞 获取帮助 - 📖 完整文档: `YLTX-DNS智能防污染系统-二次开发总结.md` - 🐛 问题反馈: GitHub Issues - 💬 技术讨论: GitHub Discussions --- **⚡ 快速、稳定、智能的DNS解决方案** *最后更新: 2025-10-15*