為第一條連線設定路由
從快速啟動繼續,保持 honk 運作並以管理員身分登入。你需要一個可用的 HTTP 或 HTTPS 訂閱 URL,以及閘道器的 shell 存取權限。本教學將 example.com 送入名為 proxy 的新群組,其他流量保持直連。訂閱名稱使用 harbor。
1. 新增訂閱
開啟節點頁,選擇新增訂閱。在名稱中填寫 harbor,在訂閱網址中填寫供應商的 URL,然後選擇新增。doona 會寫入宣告並請求更新。
檢查成功通知是否顯示節點數,再選擇 harbor 檢視其節點。如果宣告已儲存但擷取失敗,先解決回報的錯誤,再選擇卡片上的更新 harbor。訂閱包含代理節點後再繼續。
2. 建立群組
開啟策略頁,選擇新增群組。在群組名稱中填寫 proxy,將選擇方式設為平均最快。在訂閱中選擇 harbor,檢查符合的節點後選擇建立。
頁面應出現 proxy 卡片,其中包含訂閱成員。展開卡片,檢視所選成員及其延遲或健康狀態。群組內沒有節點時請勿繼續。控制項無法使用時,見群組建立與編輯條件。
3. 將測試網域送入群組
開啟規則 → 路由規則。如果顯示檢視切換,先選擇進階,再選擇新增規則。
| 欄位 | 值 |
|---|---|
| 條件寫法 | 選擇 |
| 依據 | 完整網域 |
| 值 | example.com |
| 出站 | proxy |
| 插入位置 | 最後(fallback 之前) |
選擇對話框中的新增規則,立即寫入並重載。檢查新規則已生效通知及新增規則:
domain(full: example.com) -> proxy
保留 fallback: direct。新增功能無法使用時,見路由規則條件。
4. 定義 DNS 上游
快速啟動沒有 DNS 區塊。開啟組態 → 設定檔,在設定檔中選擇 /etc/honk/config.dae,將以下區塊附加到現有區塊之後。保留剛才建立的訂閱、群組和路由規則。
# 透過代理群組傳送指定的 DNS 請求。
dns {
# 使用數字伺服器位址,避免依賴其網域的初始解析。
upstream {
remote_dns: 'https://1.1.1.1/dns-query' -> proxy
}
# 保留其他請求的原目的地。
routing {
request {
fallback: asis
}
}
}
選擇套用,等待檔案已寫入、組態已重載的通知。重新開啟檔案,檢查 remote_dns 是否存在。編輯器或套用無法使用時,見組態寫入條件。
5. 新增並套用 DNS 規則
開啟規則 → DNS 規則,在request 規則中選擇新增規則。將依據設為完整網域,在值中填寫 example.com,在動作中選擇 remote_dns,將插入位置設為最後(fallback 之前)。
選擇新增規則以寫入並重載。檢查新規則已生效通知及請求規則:
qname(full: example.com) -> remote_dns
兩條規則現已套用。路由規則選擇流量使用的群組;DNS 規則選擇解析器,該解析器的請求也經過此群組。以上每次儲存都會單獨生效。新增功能無法使用時,見 DNS 規則條件。
6. 用追蹤模擬驗證規則
在規則頁開啟追蹤模擬。將網路協定設為 TCP,網域填寫 example.com,目的連接埠填寫 443。目的 IP留空,在解析模式中選擇不解析(none),再選擇開始追蹤。
結果應符合你的網域規則,出站為 proxy,節點鏈中包含 harbor 的節點。改用 example.net 再執行一次,出站應為 direct。追蹤只模擬規則評估,不建立連線,也不能證明代理可以存取網站。控制項無法使用時,見路由追蹤條件。
7. 觀察真實連線
發出請求前先開啟連線頁。在閘道器執行:
curl --http1.1 --limit-rate 32 https://example.com/ -o /dev/null
傳輸期間,在連線頁找到 example.com 並開啟對應列。檢查節點鏈是否包含 proxy 和 harbor 的某個節點。短連線可能在檢視前已經結束,必要時再次發出請求。傳輸成功表示此路由能承載真實流量。頁面無法使用時,見連線條件。
代理流量由使用者空間處理,會出現在連線頁。直連流量由核心轉送,不會出現在該頁。使用追蹤檢查直連回退,或檢視組態參考中的完整檔案範例。