first commit

This commit is contained in:
qwer-xyz
2026-06-20 14:22:31 +08:00
commit c2498911ab
793 changed files with 291660 additions and 0 deletions
+104
View File
@@ -0,0 +1,104 @@
针对 Incus/LXC 容器环境的 dae 透明代理。
这套方案实现了:宿主机自身流量直连、接管容器出站流量走出口节点、兼容容器入站端口映射、规避节点不支持 UDP 导致的断网。
---
### 部署流程 (适用于 Ubuntu 24.04 + Incus)
#### 第一步
默认情况下,Incus 容器网桥内的流量走的是二层转发,会绕过大多的网络层探针。为了让 `dae` 能抓到容器发出的 TCP 握手包,必须开启网桥的三层过滤。
在宿主机执行以下命令:
```bash
# 1. 确保 Incus 网桥保持默认的 NAT 开启状态 (保证入站映射正常)
incus network set incusbr0 ipv4.nat=true
# 2. 加载网桥过滤模块
sudo modprobe br_netfilter
# 3. 写入内核参数,强制网桥流量经过 iptables (进而被 dae 的 eBPF 探针捕获)
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee /etc/sysctl.d/99-bridge-nf.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" | sudo tee -a /etc/sysctl.d/99-bridge-nf.conf
echo "net.bridge.bridge-nf-call-arptables = 1" | sudo tee -a /etc/sysctl.d/99-bridge-nf.conf
# 4. 生效配置
sudo sysctl -p /etc/sysctl.d/99-bridge-nf.conf
```
#### 第二步:安装 dae
```bash
sudo apt update && sudo apt install curl -y
sudo bash -c "$(curl -sL https://github.com/daeuniverse/dae-installer/raw/main/installer.sh)"
```
#### 第三步
清空并编辑 `/usr/local/etc/dae/config.dae`,将以下内容粘贴进去。
```dae
global {
tproxy_port: 8321
tproxy_port_protect: true
wan_interface: auto
# 绑定 Incus 网桥
lan_interface: incusbr0
auto_config_kernel_parameter: true
}
node {
# 落地节点
node1: ''
}
group {
my_upstream {
filter: name(node1)
policy: fixed(0)
}
}
dns {
upstream {
# 强制使用 tcp 协议查 DNS,完美解决代理节点不支持 UDP 导致的 DNS 解析超时黑洞
cloudflare: 'tcp://1.1.1.1:53'
}
routing {
request {
fallback: cloudflare
}
}
}
routing {
# 1. 内网互通与组播放行
dip(224.0.0.0/3, 'ff00::/8') -> direct
dip(geoip:private) -> direct
# 2. 宿主机防失联 (SSH)
dport(22, 2551) -> must_direct
sport(22, 2551) -> must_direct
# 3. 兼容 NAT 端口映射的回程放行
sport(80, 443, 3306) -> must_direct
# 4. 劫持容器网段
sip(10.10.0.0/22) -> my_upstream
# 5. 宿主机自身流量及未匹配流量兜底直连
fallback: direct
}
```
#### 第四步:启动
```bash
sudo systemctl daemon-reload
sudo systemctl restart dae
sudo systemctl enable dae
```