路由、節點與規則
本頁說明「路由」分區中的「策略」「節點」與「規則」三個頁面。內容涵蓋選擇群組成員、管理訂閱、檢視與修改規則、暫存規則後一併套用,以及使用追蹤模擬檢查路由。
策略群組
開啟「路由」分區中的「策略」。「群組」分頁為每個群組顯示一張卡片。
檢視群組卡片
- 卡片標題列顯示群組名稱、策略,以及可用、無法使用與未測試的成員數。
- 展開「組態」可查看群組設定,例如「檢測網址」「檢測間隔」與「容忍差值」。
- 下方的成員網格顯示每個成員的狀態或延遲。成員超過 12 個時,網格上方會出現「篩選節點」「地區」「排序」(「依延遲」或「依名稱」)與「只顯示可用節點」。
選擇成員
- 策略為「手動選擇」的群組,在網格中點選成員後立即切換至該成員。
- 自動策略的群組若後端允許手動固定,點選成員即固定該成員。狀態由「自動」變為「已手動固定」,提示訊息說明自動策略已暫停。
- 如需解除固定,開啟卡片的「更多操作」,選擇「恢復自動選擇」。此項目只在群組已固定時出現。提示訊息會列出自動策略目前選出的成員。
- 卡片顯示「兩者」「TCP」「UDP」選擇器時,先選擇網路。選擇「兩者」時,選擇成員、固定成員或「恢復自動選擇」同時作用於 TCP 與 UDP;選擇「TCP」或「UDP」時只作用於該網路。
- 卡片顯示「切換時中斷現有連線」時,此開關決定切換成員時是否中斷現有連線。變更此開關會寫入群組組態並重載。在「手動選擇」策略的群組中選擇成員後,提示訊息會說明現有連線已保留或已中斷。
測試、編輯與檢測設定
以下三項操作都位於卡片的「更多操作」中。
- 選擇「測試全部」可探測所有成員。提示訊息列出可用、無法使用與狀態未知的數量,以及選擇是否變更。後端無法探測此群組時,此項目停用。
- 選擇「編輯群組」可修改「選擇方式」與篩選條件(「篩選 1」「篩選 2」「新增篩選」),然後點選「套用」。doona 在定義此群組的檔案中改寫 group 區段內的策略與篩選條件,保留其他欄位;驗證通過後寫入並重載。群組有多處定義、所在檔案唯讀,或已讀取的檔案中沒有此群組定義時,此項目停用。
- 選擇「檢測設定」可修改「檢測網址」「檢測間隔」「容忍差值」與「閒置逾時」。對話框只顯示後端列為可寫入的欄位。欄位留空表示使用全域值或預設值,然後點選「套用」。對話框開啟後若後端已變更某個值,該欄位會顯示說明;再次套用會以對話框中的值取代。
編排群組成員
- 開啟「群組成員」分頁。左側為群組,右側為節點與訂閱。
- 將節點或訂閱拖曳到群組;也可勾選多列後,點選清單下方的「加入群組」。
- 依名稱加入的節點或整個加入的訂閱,可點選其移除按鈕移除。群組以規則選入的節點無法在此移除,須在組態來源中修改。
- 如需建立群組,點選「新增群組」,輸入「群組名稱」,選擇「選擇方式」,再點選「建立」。建立後須加入至少一個節點或訂閱;沒有成員的群組會包含所有節點,因此無法套用。
- 變更會先暫存,頁面顯示尚未套用的變更數。點選「全部捨棄」可捨棄變更;點選「檢查並套用」可開啟「檢查變更」。
- 「檢查變更」列出每項暫存變更,每項都有復原按鈕。展開「檢視寫入的組態文字」可查看群組文字。點選「套用」後,doona 先驗證整份組態,再寫入並重載;驗證失敗時不會寫入。
- 有暫存變更時離開頁面,會先要求確認捨棄變更。
節點與訂閱
開啟「路由」分區中的「節點」。「節點」分頁列出節點來源,包括訂閱、檔案與組態內的節點。後端提供節點清單時才會顯示「延遲」分頁。
來源與節點
- 「來源」表格顯示每個來源的「種類」「節點」「用量」「更新」「自動重新整理」「到期」與「狀態」。
- 選取一列來源後,下方的節點表格顯示該來源的節點。「搜尋節點」涵蓋所有來源;「群組」與「協定」可篩選表格。
- 每列節點顯示「協定」「延遲」與「所屬群組」。點選該列的測試按鈕可測量此節點;提示訊息顯示延遲或失敗原因。
- 在節點列點選「加入群組」,再選擇群組。doona 會在主組態中將節點名稱加入該群組並重載。選擇「新增群組…」可建立以名稱篩選納入此節點的群組:輸入「名稱」,選擇「選擇方式」,再點選「加入」。
延遲
- 開啟「延遲」分頁。摘要顯示最低延遲、最高延遲與無法使用的節點數。
- 圖表顯示每個節點的「目前延遲」。後端提供時,也會顯示「移動平均」與「近 10 次平均」。
- 在「分組方式」中選擇「依群組」或「依協定」。每組會列出無法使用或未測量的節點名稱。
- 點選圖表中的節點,可在「節點」分頁開啟該節點。
新增訂閱或節點
新增或移除訂閱與檔案來源需要後端允許管理來源;新增或移除單一節點需要後端允許管理節點。兩類操作都要求主組態可寫入;參閱唯讀來源。
- 點選「新增訂閱」,輸入「名稱」與「訂閱網址」(HTTP 或 HTTPS)。視後端支援情況,對話框也提供「自動重新整理」「User-Agent」與「快取訂閱內容」。
- 點選「新增」。後端將訂閱寫入主組態的 subscription 區段。訂閱網址會儲存,但不會再回傳顯示。
- 新訂閱在擷取前沒有節點。後端支援重新整理訂閱時,doona 會立即重新整理,提示訊息顯示節點數。重新整理失敗時,提示訊息提供「重試」。
- 如需新增單一節點,點選節點表格上方的「貼上節點連結」。輸入「名稱」與「節點連結」(例如
vless://…),再點選「新增」。節點會寫入主組態的 node 區段。
重新整理訂閱
- 點選訂閱列的重新整理按鈕,可立即擷取該訂閱。點選「重新整理全部訂閱(N)」可一次擷取所有訂閱;「設定」頁的後端操作也提供相同操作。
- 重新整理會經由訂閱的下載路由擷取內容,並套用新的節點;訂閱的來源設定不會改變。
- 成功時,提示訊息顯示節點數。失敗時,保留最近一次成功載入的節點。
- 下載路由尚無可用節點時,重新整理會失敗,不會改用直連。例如,路由規則將訂閱導向一個由該訂閱尚未提供的節點組成的群組。
- 如需變更訂閱的重新整理頻率,在該列的「自動重新整理」欄選擇數值。doona 會將間隔寫入主組態並重載。
移除來源或節點
- 如需移除訂閱或檔案來源,開啟該列的「更多操作」,選擇移除項目,再於對話框確認。doona 會從主組態刪除此來源及其節點並重載。
- 組態內的節點在其列上有移除按鈕。移除後,該節點會從主組態的 node 區段刪除並重載。
路由規則
開啟「路由」分區中的「規則」。分頁包括「路由規則」「DNS 規則」與「追蹤模擬」;每個分頁只在後端提供對應功能時顯示。
檢視規則清單
- 由上而下閱讀清單。第一條符合的規則決定出站;最後一列編號為
—,即 fallback。 - 每列顯示「序」「運算式」「出站」「位置」與「命中」。
must標記表示出站已鎖定。 - 「位置」顯示規則所在的檔案與行號。「命中」計算目前快照中保留的流程記錄,不是累計值。
- 清單說明文字顯示規則數與規則清單的
generation。 - 後端只提供流程記錄而不提供規則清單時,此分頁改為顯示目前快照中依規則分組的流程,包括「命中」與「佔比」。
開啟規則來源
- 點選某列的「開啟來源」,「組態」頁會開啟該檔案並定位到規則所在行;參閱編輯來源。
- 位於引入檔、且不在 routing 區段內的規則無法在清單中變更,須透過「開啟來源」在檔案中編輯。
編輯或移除規則
- 點選某列的「編輯出站設定」。對話框顯示規則的運算式。選擇其他「出站」,必要時開啟「鎖定此出站」,再點選「編輯出站設定」確認。此操作只修改出站,條件保持原樣。
- 點選某列的「移除規則」。對話框列出將刪除的檔案與行號。點選「移除規則」確認。
- 兩項操作都在驗證通過後寫入並重載。提示訊息說明變更已生效;現有連線維持目前的路由,重新連線後才套用變更。
- 規則所在檔案唯讀或內容不完整、doona 無法定位規則所在行,或規則位於 routing 區段外的引入檔時,兩個按鈕都會停用,游標停留時顯示原因。
- 在連線的「更多操作」中選擇「編輯命中規則的出站設定」,會為該連線命中的規則開啟此對話框。
DNS 規則
- 開啟「DNS 規則」分頁。分頁包含兩份清單,各自依序比對:「request 規則」決定如何處理每個查詢;「response 規則」決定接受回答、拒絕回答,或透過另一個上游重新查詢。
- 每列顯示規則的運算式、「動作」與「位置」。「解析記錄」與「開啟 DNS 組態」分別連至「DNS」頁與組態的 dns 區段。
- 在任一清單點選「新增規則」可新增規則。對話框與從規則清單新增相同,但以「動作」取代「出站」,且沒有「鎖定此出站」。規則會寫入來源檔案的 dns routing 區段。
- 點選某列的「移除規則」可刪除規則。DNS 規則沒有編輯按鈕;如需修改,透過「開啟來源」在檔案中編輯。
新增規則
新增規則有兩種對話框。從規則清單開啟的對話框會立即寫入規則;從觀測流量開啟的對話框另外提供暫存。
從規則清單新增
- 在「路由規則」分頁,點選清單上方的「新增規則」。
- 在「條件寫法」中選擇「選擇」,再選擇「依據」(例如「網域後綴」「geosite 分類」或「目的 IP」)並輸入「值」,多個值以逗號分隔;或選擇「運算式」,直接輸入「條件」,例如
domain(geosite:netflix)。 - 選擇「出站」。預設為第一個群組;沒有群組時為
direct。開啟「鎖定此出站」會加上must。 - 選擇「插入位置」:「最後(fallback 之前)」或「第 N 條之前」。預設為清單中的第一個位置。
- 點選「新增規則」。doona 將規則加入來源檔案的 routing 區段,驗證通過後寫入並重載。
從觀測流量新增
以下頁面也提供「新增規則」:
- 「連線」:選取一列後使用工具列按鈕,或在連線詳細資料面板中使用。參閱連線。
- 「分流」:記錄詳細資料中的「為此目標新增規則」。參閱分流。
- 「DNS」:「查詢」結果及其中每個回答位址、「解析記錄」中的記錄,以及「快取」中的項目。參閱DNS。
- 「追蹤模擬」:提供此按鈕的規則評估卡片。參閱追蹤模擬。
在對話框中:
- 流量可寫入多份清單時,選擇「規則清單」:「路由規則」「DNS request 規則」或「DNS response 規則」。
- 流量提供多種條件時,選擇「依據」。DNS 規則也可限定為該查詢的記錄類型。
- 選擇「出站」;DNS 規則則選擇「動作」。出站沒有預設值。選項下方顯示目前的出站;所選出站不會改變流量走向時,對話框會提示。
- 確認「插入位置」。流量命中的規則位於可寫入檔案時,預設為「命中規則之前」。其他選項為「最後(fallback 之前)」與「最前」。
- 對話框底部預覽規則內容。前面的規則仍可能先命中此流量,或清單中、暫存清單中已有相同規則時,對話框會顯示說明。
- 點選「暫存」或「套用」:
- 「暫存」將規則加入暫存清單,不寫入。提示訊息提供「檢視暫存的規則」。
- 「套用」立即寫入這條規則並重載。提示訊息說明新規則已生效;路由規則提供「檢視規則」,從 DNS 查詢新增的 DNS 規則則提供「重新查詢」。
- 組態無法寫入時,對話框改為提供「複製規則」。
暫存清單
- 暫存規則只保留在目前的瀏覽器工作階段。重新載入頁面會捨棄暫存規則,因此有暫存規則時離開頁面,瀏覽器會先要求確認。
- 「規則」頁在每份含暫存規則的清單上方顯示「待套用:N」卡片。每列顯示規則內容與插入位置。
- 點選某列的「捨棄暫存的規則」可捨棄該規則。
- 點選卡片上的「套用暫存的規則」或頂端列的「套用(N)」,會寫入所有清單中的全部暫存規則。卡片會註明其他清單中的暫存規則數;需寫入多個檔案時,也會顯示檔案數。
- 規則逐一寫入各檔案,每個檔案各自驗證並重載。已寫入的規則會離開暫存清單。某個檔案失敗時,尚未寫入的規則保留在暫存清單中,失敗原因與相關行號顯示在卡片上。
- 頂端列的「重載 honk」只重載已寫入的組態,不會寫入暫存規則。參閱頂端列。
追蹤模擬
追蹤模擬依目前組態模擬規則比對,不會與目的地建立連線。
執行追蹤
- 開啟「規則」中的「追蹤模擬」。
- 選擇「網路協定」(TCP 或 UDP)。輸入「網域」「目的 IP」或兩者,以及「目的連接埠」。
- 選擇「解析模式」:「不解析(none)」「即時解析(live)」或「先查 DNS 再模擬(query)」。live 與 query 會先解析網域,因此須填寫網域,並將「目的 IP」留空。只能使用後端提供的模式。
- 展開「進階條件」可加入「來源 IP」「來源連接埠」或「行程名稱」。
- 點選「開始追蹤」。
僅提供目的 IP 時,模擬依 IP 與連接埠判定。dial_mode 使用 domain 系列模式時,引擎會從實際 TLS 或 HTTP 流量嗅探網域,並重新評估規則;如需模擬此結果,請一併提供網域。
解讀結果
- 狀態列顯示觀測時間與追蹤所依據的
generation。 - 使用 query 解析時,DNS 查詢卡片顯示查詢結果。「查詢 DNS」與「檢視快取」會在「DNS」頁開啟該名稱。
- 每張「規則評估 N」卡片顯示「判定」(「已判定」或「無法判定」)與「出站」。前序規則缺少輸入時,卡片改為顯示「可能出站」與「缺少輸入」;補齊這些輸入後重新執行追蹤。
- 出站為群組時,卡片顯示「節點」鏈與「連通性」。測試按鈕可測量該節點;檢視群組與檢視節點的連結可開啟對應頁面。
- 表格列出每條規則的「結果」(「相符」「不符」「略過」或「無法判定」)以及該規則缺少的輸入。
從結果新增規則
點選規則評估卡片上的「新增規則」,會開啟從觀測流量新增的對話框,條件取自追蹤輸入。再點選「暫存」或「套用」。