RouterOS DNS劫持防污染配置实战指南

发布于2026-07-16 12:06 阅读33次 本文详细介绍了在MikroTik RouterOS上配置DNS劫持与防污染方案,通过DoH加密解析,彻底解决运营商DNS劫持和污染问题,提升家庭及企业网络的安全性和解析准确度。配置步骤清晰完整,包含常见避坑指南。
## 背景
在日常网络使用中,你是否遇到过以下情况:访问某个网站被跳转到广告页面、DNS解析返回错误的IP地址、或者某些域名解析结果明显被篡改?这些都是典型的DNS劫持和DNS污染问题。
作为网络管理员或折腾爱好者,在MikroTik RouterOS上部署一套可靠的DNS防污染方案,是提升网络体验的关键一步。本文将手把手教你配置RouterOS的DNS劫持与DoH(DNS over HTTPS)加密解析方案。
## 准备工作
- 一台运行RouterOS的设备(建议v7.6及以上版本)
- 拥有管理员权限
- 设备已连接互联网
- 建议先备份现有配置
进入终端前,先执行备份:
```
/system backup save name=before-dns-config
```
## 第一步:上传CA证书
DoH查询需要SSL/TLS加密,首先导入根证书。下载最新的DigiCert根证书并导入:
```
/tool fetch url="https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem"
/certificate import file-name=DigiCertGlobalRootCA.crt.pem passphrase=""
```
导入成功后可以在 /certificate 列表中看到证书。
## 第二步:启用DNS服务并配置DoH
这是核心步骤。我们需要让RouterOS本身作为局域网DNS服务器,并通过DoH向可信的上游服务器发送加密查询:
```
/ip dns set servers="" use-doh-server=https://dns.quad9.net/dns-query verify-doh-cert=yes allow-remote-requests=yes cache-size=20480 max-concurrent-queries=200 max-concurrent-tcp-sessions=100 cache-max-ttl=1w query-server-timeout=5s query-total-timeout=10s
```
## 关键参数说明
| 参数 | 含义 | 建议值 |
|------|------|--------|
| use-doh-server | DoH解析服务器URL | 根据需求选择 |
| verify-doh-cert | 是否验证DoH证书 | yes(强烈推荐) |
| allow-remote-requests | 允许局域网设备查询 | yes |
| cache-size | DNS缓存条目数 | 10240~20480 |
## 常用DoH服务器推荐
- **Quad9**(推荐): `https://dns.quad9.net/dns-query` — 自带恶意域名过滤
- **Cloudflare**: `https://cloudflare-dns.com/dns-query` — 速度快,隐私保护好
- **AliDNS**: `https://dns.alidns.com/dns-query` — 国内解析兼容性好
- **DNSPod**: `https://doh.pub/dns-query` — 腾讯出品,国内节点多
还可以配置多个DoH服务器作为备用,当主服务器不可用时自动切换。
## 第三步:配置DNS劫持(强制代理)
为了避免局域网设备绕过你的DNS服务器,需要在防火墙上配置DNS劫持规则:
```
/ip firewall nat add chain=dstnat protocol=udp dst-port=53 in-interface=bridge action=redirect to-ports=53 comment="DNS劫持-UDP"
/ip firewall nat add chain=dstnat protocol=tcp dst-port=53 in-interface=bridge action=redirect to-ports=53 comment="DNS劫持-TCP"
```
## 避坑指南
1. **不要忘记放行RouterOS自身**:添加劫持规则后RouterOS自己也无法正常查询,需要在dstnat规则之前加一条accept规则跳过RouterOS自己的DNS请求。
2. **DoH及DNS缓存不要同时使用ISP提供的DNS服务器**:如果 `servers` 参数中填了运营商DNS,DoH就形同虚设了。要保持 `servers=""` 为空。
3. **IPv6也要考虑**:如果启用了IPv6,需要对IPv6的DNS请求也做类似处理。
4. **设备兼容性**:部分老旧IoT设备可能不支持DoH返回的某些记录格式,建议保留一台传统DNS作为fallback。
5. **监控DNS性能**:定期检查DNS缓存命中率和响应时间,避免缓存设置过大导致内存不足。
## 验证配置
配置完成后,在客户端电脑上执行:
```powershell
# Windows PowerShell
Resolve-DnsName www.example.com
nslookup www.example.com
```
```bash
# Linux / macOS
dig www.example.com
nslookup www.example.com
```
确认解析结果正确、没有被劫持,并且查询速度在可接受范围内。
## 总结
通过以上配置,你的RouterOS设备具备了可靠的DNS防污染能力。所有局域网设备的DNS查询都会被强制代理到RouterOS,再由RouterOS通过加密的DoH通道向可信上游服务器查询,有效杜绝了运营商劫持和中间人攻击。
这套方案适用于家庭网络、小型企业办公网络等多种场景,配置简洁且维护成本低,是网络优化工具箱中必不可少的一环。