首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Linux 連接騰達路由器離線時 DNS 劫持現象分析:路由器攔截所有域名解析至自身 IP

     編輯:程式設計綜合問答

現象描述與核心判斷

ping www.baidu.com
PING www.baidu.com (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: seq=0 ttl=64 time=1.678 ms
...

**核心異常**:www.baidu.com 解析為路由器 LAN 口 IP 192.168.0.1,而非真實公網 IP。且 ping 通、TTL=64 (本地回應特徵)。

**結論**:路由器**攔截所有 DNS 查詢**,強制解析為自身 IP,並由路由器內部 Web 服務回應 ICMP/HTTP 請求 (通常導向「離線提示頁」或「認證門户」)。

技術原理:DNS 劫持 / 捕獲門戶

  1. DNS 請求攔截:路由器啟用「強制 DNS 重定向」或「捕獲門戶」功能,將 LAN 口 53 端口 (UDP/TCP) 流量導向自身 DNS 服務。
  2. 偽造 DNS 回應:路由器 DNS 服務對**任何域名**回應 A 192.168.0.1 (或配置的虛擬 IP)。
  3. 內部 Web 服務回應:路由器運行輕量 HTTP 服務 (如 nginx/uhttpd),監聽 80/443 埠,回傳「未聯網引導頁」或「認證頁」。
  4. ICMP 回應:路由器协议栈直接回應 ping 封包 (TTL=64 表示本地產生,非轉發)。

為什麼其他路由器不這樣?

行為正常路由器 (WAN 斷開)騰達/部分家用路由器
DNS 查詢轉發至上游 DNS (超時/失敗) → 客戶端收到 SERVFAIL/Timeout攔截 → 偽造 A 記錄指向路由器 IP
HTTP 存取連線超時/重置導向路由器內部引導頁
用戶體驗瀏覽器顯示「無法連線伺服器」瀏覽器顯示路由器品牌頁面 (廣告/設定引導)
設計初衷誠實反映網路狀態「友善提示」/ 強制認證 / 廣告曝光

驗證與排查步驟

  1. 確認是路由器行為:更換電腦/手機、固定 DNS (8.8.8.8/1.1.1.1) → 現象一致,排除客戶端病毒/劫持。
  2. 抓包分析:tcpdump -i eth0 -n port 53 觀察 DNS 請求是否到達路由器、回應內容。
  3. 檢查路由器設定:登入管理介面 (通常 192.168.0.1) → 尋找「捕獲門戶」、「強制 DNS」、「離線頁面」、「廣告過濾」等選項並關閉。
  4. 測試聯網狀態下行為:接上 WAN 線 → 觀察 DNS 是否恢復正常解析。若聯網時也劫持,屬嚴重缺陷/惡意行為。

解決方案與繞過方法

方案適用場景操作步驟優缺點
關閉路由器捕獲門戶功能管理員權限、路由器支援管理介面 → 高級設置 → 關閉「捕獲門戶/強制 DNS/離線頁面」根治、無副作用
使用 DoH/DoT 加密 DNS路由器無法關閉攔截、客戶端可控瀏覽器/系統設定 DNS over HTTPS (DoH) / DNS over TLS (DoT),繞過 53 埠攔截客戶端生效、需支援軟體
修改 hosts 檔案臨時測試特定域名C:\Windows\System32\drivers\etc\hosts 加入 真實IP www.baidu.com僅限已知域名、維護成本高
刷機第三方固件硬體支援 (OpenWrt/dd-wrt/Asuswrt-Merlin)刷入開源固件,完全掌控網路行為風險高、需技術能力、可能失去保固
更換路由器無法接受廠商行為選購支援 OpenWrt/原生 Linux 的路由器 (如 Xiaomi/Redmi AX 系列、GL.iNet、NanoPi R4S 自組)徹底、成本高

Linux 客戶端強制繞過驗證

# 1. 使用 systemd-resolved 強制 DoH (Ubuntu 20.04+)
# /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1
DNSOverTLS=yes
FallbackDNS=8.8.8.8
# systemctl restart systemd-resolved

# 2. 使用 dnscrypt-proxy (跨平台)
# 安裝 → 設定 listen_addresses = ['127.0.0.1:53'] → 系統 DNS 指向 127.0.0.1

# 3. 臨時測試指定 DNS 伺服器
dig @1.1.1.1 www.baidu.com  # 繞過路由器 DNS
nslookup www.baidu.com 8.8.8.8

總結

騰達路由器離線時將所有域名解析至自身 IP,是**廠商預設啟用「捕獲門戶/強制 DNS 劫持」功能**導致。此行為違反網路中立性與 DNS 標準,干擾網路診斷、洩露隱私 (強制導流廣告頁)。**根治方法:登入路由器管理介面關閉相關功能**,或使用 **DoH/DoT 加密 DNS 繞過 53 埠攔截**,或刷寫開源固件/更換尊重用戶控制權的路由器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved