Youtube视频


相关链接

dae官方仓库

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
}
如果觉得我的文章对你有用,请随意赞赏