D

daed配置详细解释

Captain 网络 2024-03-19

全局配置文件

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

    ##### IP地址连通性检查
    # 如果你主机有双栈的话,检查链接需要有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

    # 用于检查IP地址的UDP连接. 如果dns_upstream配置包含 tcp, 同样可以用来检查TCPIP地址
    # 第一个是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

    # 当IP地址延迟差多少会切换IP地址
    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
}

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
        }
    }
}

路由配置文件

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
}
PREV
Portainer CE中文版V2.21.4
NEXT
解决SSH联接Linux主机中文显示乱码