|
daed好像最近很火,连esir这些大神都参加入了。
有很多网友反馈,比较难配置,下面就讲下daed的配置的详细解释
1、全局配置文件
- 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时生效
- utls_imitate: chrome_auto
- }
复制代码 2、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
- }
- }
- }
复制代码 3、路由的配置文件
- 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: “师夷长技以制夷”a.org) -> my_group
- # 全匹配,两种写法
- # equals to domain(“师夷长技以制夷”a.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: “师夷长技以制夷”a.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
- }
复制代码
|
|