電腦網路與 Internet 通訊

單元 22 流量接管、分流、DNS 與軟路由整合

學習目標與問題

整合 17 至 21。你應能解釋系統代理、TUN/TAP 和透明代理的差異,畫出 DNS/IPv4/IPv6/UDP 路徑,並找出策略缺口。協定只解決通道的一部分,「代理已連線」不能替完整路徑作證。

來源政策與代理分流整合見 03A/L15;LAN 探索、跨 VLAN 與印表機資料路徑見 04A/L16。代理重新建立上游 socket 後,來源不一定仍是客戶端來源。

22.1 應用怎樣進入通道

系統代理是 OS/應用約定,配合 HTTP/SOCKS 端點;不遵守的應用可以直接建立其他 socket。PAC 可依請求選擇,但支援與規則依實作。TUN 讓程式收發三層 IP 封包,TAP 收發二層訊框;介面本身不提供加密、遠端 peer 或可靠傳輸。使用者空間 stack 或路由程式還需處理封包和通道。

透明代理以 redirect/TPROXY/policy routing 等機制讓未顯式設定的流量進代理;必須保留/取得原始目的資訊,處理回程、loop 及 UDP 狀態。具體實作和系統權限差異很大,不能把 Linux 命令套進 macOS 或 Windows。軟路由是一種設備/部署角色,可組合路由、防火牆、DHCP、DNS、代理/VPN,不是新的加密協定。

22.2 分流先定義意圖

目標可以是「企業私網經 VPN」「某類域名經代理」「所有應用資料經指定出口」。規則要寫輸入、優先序、預設值及不可獲得域名時怎麼處理。域名規則常需要顯式代理請求、DNS 關聯、Fake IP 或 sniffing 提供資訊;SNI 加密、快取、直接 IP 和連線重用會限制觀察。

Fake IP 用保留的合成位址與對映表把名稱關聯到流量,代理再還原真實目的。它不是公開 DNS 位址,也不是加密機制;位址池衝突、對映壽命、繞過 DNS 的應用和快取可能影響正確性。實作選擇的位址池和排除規則須查具體版本。

22.3 DNS 是獨立路徑

應用可能用系統 DNS,也可能自己做 DoH/DoT 或直接 IP。DoT 把 DNS 放 TLS,DoH 把 DNS 放 HTTPS,DoQ 用 QUIC;加密 DNS 不自動通過 VPN/代理,也不讓 resolver 看不見查詢。代理伺服器的名稱需要 bootstrap,若所有解析都依賴尚未建立的代理,可能產生依賴循環。

先畫:應用→本地 stub→遞迴 resolver→權威;再標每個請求的出口。比較實際與政策,才能判斷是否有不預期的 DNS 路徑。DNSSEC 驗證與通道加密另行標示,不將「防洩漏」等同解析資料真實。

22.4 完整整合例題

政策:本機網站流量都走 P,LAN 印表機直連,P 的外層 endpoint 走實體出口。實際規則只有 IPv4 TCP 被接管;瀏覽器使用 AAAA 與 QUIC 時,IPv6 UDP 可能走原出口。修正要看接管覆蓋、IPv6 路由、UDP 轉送及 fallback 政策;僅把 DNS 改成 P 提供的 resolver 無法自動修補資料路由。

流量預期必須核對
目標 A/TCPP入口、目的規則、出口
目標 AAAA/TCPPIPv6 接管與 P 的 IPv6 出口能力
目標 UDP/443P 或明確拒絕並 fallbackUDP 入口、relay 能力、應用行為
DNS/DoH指定 resolver 路徑應用繞過、bootstrap 與出站路由
LAN 印表機本地直連例外優先、對應網段
P endpointunderlay免進入自身隧道、防 loop

本題位址/行為是模型。實際驗證需本機入口、實體出口和 P 端日誌等證據;不能僅靠網頁顯示一個公網 IP 證明所有協定全部覆蓋。

軟路由還要檢查 RA 來源、預設路由及 SLAAC。若 LAN 由另一 IPv6 路由器取得預設路由,僅攔截 IPv4 的設備可能被繞過;需在自主管理的拓樸控制 RA 與雙協定接管,而非任意停用所有 ICMPv6。Fake IP 對映重啟後遺失、客戶端仍有舊合成位址快取,是另一可檢查故障。

22.5 鏈式代理與信任

C→P1→P2→S 的每段通道、解析責任和認證都需獨立畫。P1 可能知道 P2,P2 知道 S;端到端 TLS 仍可保護內容,但時間相關、多方觀察、帳號關聯和日誌仍可暴露身分。增加跳數不能保證匿名,且增加故障點、延遲與管理負擔。

出口失敗應區分:規則未匹配、proxy 域名解析失敗、握手認證失敗、目標解析失敗、目標連線失敗、MTU 和資料階段。每層日誌用相同時間與連線 ID 關聯,注意時鐘誤差。不要同時修改所有規則來「試試看」。

實驗、習題與檢核

L09 比較域名/IP 請求,L10 檢查 endpoint 例外,L14 填寫完整策略與證據表;L12 故障案例可離線完成。

  1. TUN 是否保證加密與全流量覆蓋?
  2. 系統 proxy 為何可能漏掉應用 UDP?
  3. 為什麼加密 DNS 不自動表示經 VPN 傳送?
  4. 單次公網 IP 測試不能驗證哪些流量?

檢核:能分別檢查接管、規則、DNS、通道及出口,而且同時考慮 IPv4/IPv6 與 TCP/UDP。來源:Linux TUN/TAP 文件、Linux TPROXY 文件、RFC 7858(DoT)、RFC 8484(DoH)、RFC 9250(DoQ)、Xray FakeDNS 設定。