Youtube视频
相关链接
dae配置文件
全局配置
global {
# tproxy监听端口
tproxy_port: 12345
# 设置为true开启可保护tproxy端口不受未经请求的流量的影响
tproxy_port_protect: true
# so_mark标记网络数据包,如果不为零,则从 dae 发送的流量将被设置为 SO_MARK
so_mark_from_dae: 0
# 日志级别: error, warn, info, debug, trace.
log_level: info
# 是否禁止等待网络,在拉取订阅之前
disable_waiting_network: false
##### 网络接口和内核选项
# 如果你需要为其他局域网设备提供代理,需要绑定LAN接口,多个网卡","分割
lan_interface: eth0,docker0
# 如果你要代理本机流量,需要绑定WAN接口,多个接口","分割,也可以使用自动检测"auto"
wan_interface: auto
# 自动配置Linux内核参数。ip_forward和send_redirects
auto_config_kernel_parameter: true
##### 节点连通性检查
# 如果你主机有双栈的话,检查链接需要有IPV4和IPV6
# 第一个是URL,其他可以指定IP
# 考虑到流量消耗,建议选择anycast IP(CDN)、响应数据少的站点。
#tcp_check_url: 'http://cp.cloudflare.com'
tcp_check_url: 'http://cp.cloudflare.com,1.1.1.1,2606:4700:4700::1111'
# 检查的HTTP请求方法
tcp_check_http_method: HEAD
# 用于检查节点的UDP连接. 如果dns_upstream配置包含 tcp, 同样可以用来检查TCP节点
# 第一个是URL,其他是IP
# 如果你主机有双栈的话,IPV4和IPV6都需要指定
#udp_check_dns: 'dns.google.com:53'
udp_check_dns: 'dns.google.com:53,8.8.8.8,2001:4860:4860::8888'
# 检查间隔
check_interval: 30s
# 当节点延迟差多少会切换节点
check_tolerance: 50ms
##### 连接选项.
# 拨号模式:ip,domain,domain+,domain++
dial_mode: domain
# 是否允许不安全的TLS证书
allow_insecure: false
# 等待第一次嗅探数据发送的超时时间
# 如果dial_mode是ip,那么设置为0
sniffing_timeout: 100ms
# tls实现,设置为tls则使用crypto/tls,设置为utls则使用uTLS,可以模仿浏览器的指纹
tls_implementation: utls
# utls要模仿的客户端,仅当utls时生效
# 参考 https://github.com/daeuniverse/dae/blob/331fa23c16/component/outbound/transport/tls/utls.go#L17
utls_imitate: chrome_auto
}
订阅配置
subscription {
# 添加订阅链接.
my_sub: 'https://www.example.com/subscription/link'
# 多个订阅
another_sub: 'https://example.com/another_sub'
# 无标签订阅
'https://example.com/no_tag_link'
# 本地文件订阅,将内容存放在/etc/dae/relative/path/to/mysub.sub
'file://relative/path/to/mysub.sub'
}
节点配置
node {
# 支持 socks5, http, https, ss, ssr, vmess, vless, trojan, tuic, juicity, etc.
# Full support list: https://github.com/daeuniverse/dae/blob/main/docs/en/proxy-protocols.md
'socks5://localhost:1080'
mylink: 'ss://LINK'
node1: 'vmess://LINK'
node2: 'vless://LINK'
chains: 'tuic://LINK -> vmess://LINK'
}
分组配置
# 出站
group {
# 组名
my_group {
# 没有设置过滤器,代表使用全部节点
# 节点选择策略
# random:随机选择
#policy: random
# fixed:固定选择,以下是固定选择第一个节点
#policy: fixed(0)
# min:最小延迟节点
#policy: min
# 每个连接选择平均延迟最小的节点
policy: min_moving_avg
}
# 组名
group2 {
# 将会从全局节点池中过滤节点,包括订阅和手动添加的节点
# subtab是过滤订阅的标签,并且订阅中存在ExpireAt关键字的会被过滤
#filter: subtag(regex: '^my_', another_sub) && !name(keyword: 'ExpireAt:')
# 过滤节点,根据标签
#filter: name(node1, node2)
# 过滤香港节点
filter: name(HK_node)
# 过滤美国节点,并添加一个延迟偏差,下面的意思是美国的节点延迟计算会减去500ms
filter: name(US_node) [add_latency: -500ms]
# 对于每个连接,都会从组里面选择最近平均延迟最小的10个节点
policy: min_avg10
}
}
DNS配置
dns {
# ip偏好,如果为4,则当域名有ipv4和ipv6记录,则只会响应ipv4
#ipversion_prefer: 4
# 固定域名的ttl,若设置0,代表不缓存DNS查询结果
fixed_domain_ttl {
ddns.example.org: 10
test.example.org: 3600
}
upstream {
# 格式为 scheme://host:port, 支持 tcp/udp/tcp+udp.
# 如果是host是域名而且有IPv4和IPv6记录, dae 会通过组策略自动选择,例如最小延迟策略
# 请确保DNS流量通过dae并由dae转发, 这是域路由必须的
# 如果 dial_mode 是 "ip", 则上游DNS应答不应该被污染, 所以不推荐使用国内公共DNS.
alidns: 'udp://dns.alidns.com:53'
googledns: 'tcp+udp://dns.google.com:53'
}
routing {
# 根据DNS查询的请求,决定使用哪个DNS服务器
# 规则从上到下匹配
request {
# 内置出站:asis,reject
# 可用的方法qname, qtype
# 广告拒绝
qname(geosite:category-ads-all) -> reject
# 这里的意思是google中是cn的域名使用alidns
qname(geosite:google@cn) -> alidns
# 匹配后缀,匹配关键字
qname(suffix: abc.com, keyword: google) -> googledns
# 全匹配和正则匹配
qname(full: ok.com, regex: '^yes') -> googledns
# DNS 请求类型
# ipv4和ipv6请求使用alidns
qtype(a, aaaa) -> alidns
# cname请求googledns
qtype(cname) -> googledns
# 默认DNS服务器
fallback: alidns
}
# 根据DNS查询的响应,决定接受或者使用另外一个DNS服务器重新查询记录
# 规则从上到下匹配
response {
# 内置出站:accept,reject
# 可用的方法:qname, qtype, upstream, ip.
# 如果是发送到googledns的请求响应,则接受,可用于避免循环
upstream(googledns) -> accept
# 意思是如果请求的域名不是国内网站,但是返回了一个私有的IP,那就是被污染了。重新通过googledns请求
ip(geoip:private) && !qname(geosite:cn) -> googledns
# 以上不匹配,默认
fallback: accept
}
}
}
模版1
# 中国大陆网站使用alidns,其他使用googledns,若响应的结果出现DNS污染则重新使用googledns查询
dns {
upstream {
googledns: 'tcp+udp://dns.google.com:53'
alidns: 'udp://dns.alidns.com:53'
}
routing {
request {
qname(geosite:cn) -> alidns
qname(geosite:category-ads-all) -> reject
fallback: googledns
}
response {
upstream(googledns) -> accept
ip(geoip:private) && !qname(geosite:cn) -> googledns
fallback: accept
}
}
}
模版2
# 所有dns查询使用alidns,但如果检测到DNS污染,则重新使用googledns查询
dns {
upstream {
googledns: 'tcp+udp://dns.google.com:53'
alidns: 'udp://dns.alidns.com:53'
}
routing {
request {
qname(geosite:category-ads-all) -> reject
fallback: alidns
}
response {
upstream(googledns) -> accept
ip(geoip:private) && !qname(geosite:cn) -> googledns
fallback: accept
}
}
}
路由配置
routing {
### 以下是预设规则
# 本地的网络管理器应该直连,以避免在绑定WAN接口的时候出现错误的网络连通性检查结果
pname(NetworkManager) -> direct
# 把它放在前面,可以防止多播应该发送到局域网的数据包被代理转发。
# "dip" 意思是目的IP.
dip(224.0.0.0/3, 'ff00::/8') -> direct
# 该设置允许你直接访问私有地址而不是通过代理,如果你想访问代理主机的私有网络地址,可以修改下面配置
dip(geoip:private) -> direct
### 以下是自定义规则
# 内置出站:block, direct, must_rules
# must_rules表示不将DNS流量重定向到dae并继续匹配
# must_direct和must_my_groupName 表示不会将DNS流量重定向到dae,不会继续匹配
# 对于单个规则,direct会劫持并处理DNS请求(用于流量分割),而must_direct不会
# 如果存在DNS请求循环时,must_direct很有用
# "must_direct" 可以写成 "direct(must)".
# 同样,“must_groupname”也支持不劫持和处理 DNS 流量,
# 相当于“groupname(must)”。groupname指的是出站分组
# 如果没有任何规则匹配,默认的出站分组
fallback: my_group
## 域名规则
# 后缀匹配
domain(suffix: v2raya.org) -> my_group
# 全匹配,两种写法
# equals to domain(v2raya.org) -> my_group
domain(full: dns.google.com) -> my_group
# 关键字匹配
domain(keyword: facebook) -> my_group
# 正则匹配
domain(regex: '\.goo.*\.com$') -> my_group
# geosite匹配
domain(geosite:category-ads) -> block
domain(geosite:cn) -> direct
# 组合规则
domain(keyword: google, suffix: www.twitter.com, suffix: v2raya.org) -> my_group
## 目的IP规则
# 单个IP匹配
dip(8.8.8.8) -> direct
# 单个IP段匹配
dip(101.97.0.0/16) -> direct
# geoip匹配
dip(geoip:private) -> direct
# 多目的IP规则
dip(geoip:cn, geoip:private) -> direct
dip(9.9.9.9, 223.5.5.5) -> direct
## 源IP规则
sip(192.168.0.0/24) -> my_group
sip(192.168.50.0/24) -> direct
# 多源IP规则
sip(192.168.0.6, 192.168.0.10, 192.168.0.15) -> direct
# ip规则
ip(geoip:cn) -> direct
## 目的端口规则
# 单个端口
dport(80) -> direct
# 端口范围
dport(80) -> direct
# 端口范围
dport(10080-30000) -> direct
## 源端口规则
# 单个端口
sport(38563) -> direct
# 端口范围
sport(10080-30000) -> direct
## 四层协议规则:
# tcp
l4proto(tcp) -> my_group
# udp
l4proto(udp) -> direct
## IP版本规则:
# IPv4
ipversion(4) -> block
# IPv6
ipversion(6) -> ipv6_group
## 源MAC规则
mac('02:42:ac:11:00:02') -> direct
## 进程名规则 (当绑定WAN接口是只支持本地进程)
pname(curl) -> direct
## DSCP规则 (匹配 DSCP; 对于绕过BT有用).
# See https://github.com/daeuniverse/dae/discussions/295
dscp(0x4) -> direct
## "且"规则
dip(geoip:cn) && dport(80) -> direct
dip(8.8.8.8) && l4proto(tcp) && dport(1-1023, 8443) -> my_group
dip(1.1.1.1) && sip(10.0.0.1, 172.20.0.0/16) -> direct
## “非“规则
# 下面代表,域名不是geosite类型为google-scholar或者category-scholar-!cn或者category-scholar-cn
!domain(geosite:google-scholar,
geosite:category-scholar-!cn,
geosite:category-scholar-cn
) -> my_group
## 更复杂的规则,我觉得少用
domain(geosite:geolocation-!cn) &&
!domain(geosite:google-scholar,
geosite:category-scholar-!cn,
geosite:category-scholar-cn
) -> my_group
## 自定义 DAT 文件
domain(ext:"yourdatfile.dat:yourtag")->direct
dip(ext:"yourdatfile.dat:yourtag")->direct
## 设置 fwmark(Firewall Mark)
# 当您想要将流量重定向到特定接口(例如wireguard)或用于其他高级用途时,标记非常有用
# 以下是将Disney的流量重定向到wg0接口的过程
# You need set ip rule and ip table like this:
# 1. Set all traffic with mark 0x800/0x800 to use route table 1145:
# >> ip rule add fwmark 0x800/0x800 table 1145
# >> ip -6 rule add fwmark 0x800/0x800 table 1145
# 2. Set default route of route table 1145:
# >> ip route add default dev wg0 scope global table 1145
# >> ip -6 route add default dev wg0 scope global table 1145
# Notice that interface wg0, mark 0x800, table 1145 can be set by preferences, but cannot conflict.
# 3. Set routing rules in dae config file.
domain(geosite:disney) -> direct(mark: 0x800)
## Must rules
# 对于以下规则,DNS请求将会被强制重定向到dae,除了mosdns的请求
# 不同于must_direct/must_my_group,来自mosdns的流量会继续匹配其他规则
pname(mosdns) -> must_rules
ip(geoip:cn) -> direct
domain(geosite:cn) -> direct
fallback: my_group
}