開啟 3 天免費試用
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。


dae 旁路由是區域網絡內一部運行 dae 的 Debian 主機,dae 是以 eBPF 為基礎的透明代理,而主路由器繼續負責 DHCP 和上網連線。只把 dae 綁定到 LAN 介面,把一部裝置的閘道指向這部主機,並證明撤銷改動後這部裝置能回復正常。本文依據文末所列官方來源整理,未完成完整端到端實測。
關鍵要點
- dae 綁定 LAN 需要 Linux 5.17 或以上版本,以及特定的 BPF 核心選項。
- 只綁定
lan_interface時,Debian 主機本身的程式不會經代理。- 在單臂閘道上,除非兩個重新導向開關都關閉,ICMP 重新導向可能令客戶端繞過 dae。
- 測試裝置的還原方法很簡單:改回原本的閘道和 DNS。
dae eBPF 透明代理把分流邏輯放進 Linux 核心。直連流量因此可以不經用戶空間代理而直接通過,項目稱之為 Real Direct,這需要開啟 IP 轉發。[1] 代理部分仍然連接你定義的節點,節點使用 VLESS、Trojan 或 Shadowsocks 等連結。[2]
本文以 dae 架設一部 Debian 旁路閘道。如果你的閒置裝置運行的是 OpenWrt,可參考 OpenWrt 單臂旁路閘道設定流程。如果仍在選擇流量接管方式,REDIRECT、TPROXY 與 TUN 的比較介紹了傳統以規則為本的方案;dae 則以自己的 eBPF 程式取代你人手維護的規則。
運行任何閘道,都代表更新、故障和日誌由你負責。自建服務規劃指南列出了這些責任;在把家中流量交給它之前,亦值得先比較自行維護的伺服器與託管 VPN 服務。
本文基線為 dae v2.1.1,文件按該版本標籤閱讀。快速入門指南列明,綁定 LAN 或 WAN 介面的最低核心版本為 Linux 5.17,運行 dae trace 則需要 5.15。[3]
uname -r
(zcat /proc/config.gz || cat /boot/config-$(uname -r)) | grep -E 'CONFIG_(BPF|BPF_SYSCALL|BPF_JIT|DEBUG_INFO_BTF|NET_CLS_BPF|NET_SCH_INGRESS|KPROBES)='
ip -4 addr show
ip route show default
快速入門列出完整的必需選項,包括 CONFIG_BPF_SYSCALL=y、CONFIG_DEBUG_INFO_BTF=y 和 CONFIG_NET_CLS_BPF=m。桌面發行版通常已啟用,嵌入式建置則不一定。[3] 欠缺任何一個必需選項就停下,不要嘗試載入其他核心的模組。
把將要使用的佈局記下。本文假設主路由器為 192.168.1.1,Debian 主機在 eth0 介面使用固定地址 192.168.1.2,兩者位於同一個區域網絡。請在主路由器的 DHCP 設定為主機保留地址,而不是改由其他裝置運行 DHCP。
對於 Debian 和 Ubuntu,快速入門使用 Dae Universe 的 APT 軟件源。APT 3.0 或以上選用 .sources 檔案,較舊的 APT 選用 .list 檔案,然後匯入簽署密鑰並安裝。[3]
sudo apt update && sudo apt install curl
sudo curl -fsSL -o /etc/apt/sources.list.d/daeuniverse.sources https://daeuniverse.pages.dev/daeuniverse.sources
sudo curl -fsSL -o /usr/share/keyrings/daeuniverse-archive-goose.gpg https://daeuniverse.pages.dev/daeuniverse-archive-goose.gpg
sudo apt update && sudo apt install dae
dae --version
套件會安裝 systemd 服務和示例檔案 /etc/dae/example.dae;你的設定要放在 /etc/dae/config.dae。[3] 暫時不要啟動服務。確認輸出的版本號,並把它和網絡佈局記在一起。
以 chmod 600 建立 /etc/dae/config.dae,因為其中存放節點憑證。以下設定只綁定 LAN 介面,定義一個你擁有或有權使用的節點,並把本地和多點傳播以外的流量全部送往這個節點。[2][3]
global {
lan_interface: eth0
log_level: info
allow_insecure: false
auto_config_kernel_parameter: true
}
node {
mynode: 'vless://REPLACE_WITH_YOUR_OWN_LINK'
}
dns {
upstream {
googledns: 'tcp+udp://dns.google:53'
}
routing {
request {
fallback: googledns
}
}
}
group {
proxy {
filter: name(mynode)
policy: fixed(0)
}
}
routing {
dip(224.0.0.0/3, 'ff00::/8') -> direct
dip(geoip:private) -> direct
fallback: proxy
}
不寫 wan_interface 是刻意的。按快速入門的說明,只綁定 LAN 時,受影響的是來自區域網絡裝置的流量,主機本身的程式(包括 SSH 和套件更新)不受影響。[3] 保持 allow_insecure: false,讓證書問題明確報錯,而不是被掩蓋。
啟動前先驗證。項目的 systemd 服務單元會在 ExecStartPre 執行同樣的檢查,這一步不會改動 BPF 狀態,亦不存取網絡。[4]
sudo dae validate -c /etc/dae/config.dae
設定 auto_config_kernel_parameter: true 後,dae 會為它綁定的 LAN 介面設定核心參數,包括轉發和 send_redirects。[2][5] 在單臂閘道上,客戶端的封包從同一個介面進出,核心通常會發出 ICMP 重新導向,叫客戶端繞過 dae、直接找主路由器。
核心規定,只要 conf/all 或 conf/<interface> 其中一個開啟,該介面的 send_redirects 便算開啟,所以兩者都必須為 0。[6] 啟動 dae 後讀取這些值:
sudo systemctl start dae
sysctl net.ipv4.ip_forward net.ipv4.conf.all.send_redirects net.ipv4.conf.eth0.send_redirects
如果 all 仍為 1,就把 net.ipv4.conf.all.send_redirects = 0 寫入 /etc/sysctl.d/ 下的一個檔案,並執行 sudo sysctl --system。另外要留意,dae 每次啟動都會設定 net.ipv4.conf.all.rp_filter = 0,並調整它自己的 dae0 介面;請記下原本的值,解除安裝後方便還原。[5]
揀選一部以有線連接或 Wi-Fi 穩定的手提電腦或桌上電腦。記錄它目前經 DHCP 取得的地址、閘道和 DNS。然後改為手動 IPv4 設定:地址不變,閘道設為 192.168.1.2,DNS 設為 192.168.1.1。
DNS 繼續指向主路由器是刻意的。dae 會攔截它所路由的 UDP 和 TCP 53 連接埠流量,所以測試裝置送往路由器的查詢仍會經過 dae 的 DNS 模組,並按你的 dns 設定處理。[7] 疑難排解文件亦提醒,暫停狀態下的 dae 不會攔截 DNS,因此不應把閘道主機公佈為 DNS 伺服器。[8]
下表為預期現象,實際結果請自行記錄。
| 檢查方法 | 預期現象 | 失敗時處理 |
|---|---|---|
| 在測試裝置開啟 IP 檢測頁 | 顯示節點的公共地址 | 查看 journalctl -u dae 和節點連結 |
| 在另一部裝置開啟同一頁面 | 顯示平日的網絡供應商地址 | 改錯了裝置或 DHCP |
| 在測試裝置解析域名 | 正常傳回回應 | 檢查上游和 dip(geoip:private) 規則 |
| 開啟路由器管理頁和區域網絡共享 | 本地地址仍可存取 | 確認私有地址規則排在前面 |
在主機查看 sysctl 重新導向值 | 兩個 send_redirects 均為 0 | 修正 sysctl 檔案並重新啟動 dae |
檢查出口時,可以查看測試裝置對外顯示的公共地址。地址改變了,代表網頁流量到達了節點;DNS 和區域網絡存取仍要按上表分開檢查。
在裝置旁邊進行故障演練。以 sudo systemctl stop dae 停止 dae;視乎主機的轉發狀態,測試裝置會斷網,或退回直接轉發。然後把裝置還原為原本的 DHCP 設定,確認可正常上網。這一步就是日後任何故障時的還原路徑,包括 Debian 主機斷電。
只有還原順利之後,才執行 sudo systemctl enable dae。設定開機啟動並不會即時啟動服務。[3] 修改設定時,dae reload 會在不中斷現有連線的情況下生效,dae suspend 則會暫時暫停 dae。[3]
解除安裝時,先把所有裝置還原為 DHCP 設定,再執行 sudo systemctl disable --now dae 和 sudo apt remove dae,並刪除軟件源檔案、密鑰和你加入的 sysctl 檔案。還原你記下的 rp_filter 值;如果不肯定 dae 留下了甚麼,就重新啟動主機。
主機本身的程式不在只綁定 LAN 的範圍內,所以在這部主機上更新 Debian 或使用 SSH 都不會經節點。[3] 其他區域網絡裝置仍以主路由器為閘道,除非你改動了它們,否則不受影響。
常見的缺口是 IPv6。主機透過路由器通告(Router Advertisement)得知預設路由器,因此有全球 IPv6 地址的測試裝置,即使改了 IPv4 閘道,IPv6 流量仍會送往主路由器。[9] 要麼只測試 IPv4 路徑並記錄這項限制,要麼在擴大範圍前另行規劃 IPv6。
只有出口、DNS、區域網絡和還原檢查全部通過,而且主機在啟用 dae 的情況下經得起重新啟動,才考慮擴大範圍。先以手動閘道設定逐部加入裝置。修改主路由器 DHCP 派發的閘道會一次過影響所有客戶端,應留到最後。
基於上述的暫停原因,派發的 DNS 伺服器仍保持為主路由器。[8] 如果 Debian 主機還要運行本地 DNS 服務,請先閱讀 dae DNS 文件中有關 must_direct 規則的說明,因為送往主機本身的 53 連接埠流量會被這類規則另行處理。[7]
lan_interface,先驗證設定,並妥善保管節點憑證。send_redirects 開關都已關閉,避免客戶端繞過 dae。在這份設定下不會。只綁定了 lan_interface,所以 dae 處理的是區域網絡裝置的流量,主機本身的程式仍走正常路由。
dae 快速入門把 Linux 5.17 列為綁定 LAN 介面的最低版本,同時需要 BPF 和 BTF 相關核心選項,可以在核心設定中逐項核對。
在單臂閘道上,核心會提示客戶端把流量直接送往主路由器。只要全域開關或介面開關其中一個開啟,重新導向便會繼續發出。
不需要。DHCP 繼續由主路由器負責,只以人手修改一部裝置。這樣還原簡單,亦可避免同一區域網絡出現兩部互相衝突的 DHCP 伺服器。
dae 會攔截它所路由的 53 連接埠流量,查詢照樣經過它的 DNS 模組。即使 dae 被暫停,這些查詢亦可繼續由路由器正常回應。
以它為閘道的裝置會斷網,直至改回使用主路由器為止。還原測試裝置的 DHCP 設定就是還原路徑,所以務必預先演練一次。
不是。dae 以 eBPF 程式實現流量攔截和分流,你不需要自行維護 TPROXY 或 REDIRECT 規則,但區域網絡設計上的問題依然存在。
免責聲明: 本文僅供一般資訊參考,不構成法律、技術或其他專業建議。我們不保證內容的準確性、完整性或時效性。請只在你擁有或獲授權使用的網絡、主機和代理節點上操作。
來源:
Sources checked 2026 年 10 月 14 日。
延伸閱讀:
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。