找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1853|回复: 17

[其它X86系统] 内核级透明代理Daed配置全教程

[复制链接]

daed好像最近很火,连esir这些大神都参加入了。
有很多网友反馈,比较难配置,下面就讲下daed的配置的详细解释
1、全局配置文件
  1. global {
  2.     # tproxy监听端口
  3.     tproxy_port: 12345

  4.     # 设置为true开启可保护tproxy端口不受未经请求的流量的影响
  5.     tproxy_port_protect: true

  6.     # so_mark标记网络数据包,如果不为零,则从 dae 发送的流量将被设置为 SO_MARK
  7.     so_mark_from_dae: 0

  8.     # 日志级别: error, warn, info, debug, trace.
  9.     log_level: info

  10.     # 是否禁止等待网络,在拉取订阅之前
  11.     disable_waiting_network: false

  12.     ##### 网络接口和内核选项
  13.     # 如果你需要为其他局域网设备提供代理,需要绑定LAN接口,多个网卡","分割
  14.     lan_interface: eth0,docker0

  15.     # 如果你要代理本机流量,需要绑定WAN接口,多个接口","分割,也可以使用自动检测"auto"
  16.     wan_interface: auto

  17.     # 自动配置Linux内核参数。ip_forward和send_redirects
  18.     auto_config_kernel_parameter: true

  19.     ##### 节点连通性检查
  20.     # 如果你主机有双栈的话,检查链接需要有IPV4和IPV6
  21.     # 第一个是URL,其他可以指定IP
  22.     # 考虑到流量消耗,建议选择anycast IP(CDN)、响应数据少的站点。
  23.     #tcp_check_url: 'http://cp.cloudflare.com'
  24.     tcp_check_url: 'http://cp.cloudflare.com,1.1.1.1,2606:4700:4700::1111'

  25.     # 检查的HTTP请求方法
  26.     tcp_check_http_method: HEAD

  27.     # 用于检查节点的UDP连接. 如果dns_upstream配置包含 tcp, 同样可以用来检查TCP节点
  28.     # 第一个是URL,其他是IP
  29.     # 如果你主机有双栈的话,IPV4和IPV6都需要指定
  30.     #udp_check_dns: 'dns.google.com:53'
  31.     udp_check_dns: 'dns.google.com:53,8.8.8.8,2001:4860:4860::8888'

  32.     # 检查间隔
  33.     check_interval: 30s

  34.     # 当节点延迟差多少会切换节点
  35.     check_tolerance: 50ms


  36.     ##### 连接选项.
  37.     # 拨号模式:ip,domain,domain+,domain++
  38.     dial_mode: domain

  39.     # 是否允许不安全的TLS证书
  40.     allow_insecure: false

  41.     # 等待第一次嗅探数据发送的超时时间
  42.     # 如果dial_mode是ip,那么设置为0
  43.     sniffing_timeout: 100ms

  44.     # tls实现,设置为tls则使用crypto/tls,设置为utls则使用uTLS,可以模仿浏览器的指纹
  45.     tls_implementation: utls

  46.     # utls要模仿的客户端,仅当utls时生效

  47.     utls_imitate: chrome_auto
  48. }
复制代码
2、DNS配置文件
  1. dns {
  2.     # ip偏好,如果为4,则当域名有ipv4和ipv6记录,则只会响应ipv4
  3.     #ipversion_prefer: 4

  4.     # 固定域名的ttl,若设置0,代表不缓存DNS查询结果
  5.     fixed_domain_ttl {
  6.         ddns.example.org: 10
  7.         test.example.org: 3600
  8.     }

  9.     upstream {
  10.         # 格式为 scheme://host:port, 支持 tcp/udp/tcp+udp.
  11.         # 如果是host是域名而且有IPv4和IPv6记录, dae 会通过组策略自动选择,例如最小延迟策略
  12.         # 请确保DNS流量通过dae并由dae转发, 这是域路由必须的
  13.         # 如果 dial_mode 是 "ip", 则上游DNS应答不应该被污染, 所以不推荐使用国内公共DNS.
  14.         alidns: 'udp://dns.alidns.com:53'
  15.         googledns: 'tcp+udp://dns.google.com:53'
  16.     }
  17.     routing {
  18.         # 根据DNS查询的请求,决定使用哪个DNS服务器
  19.         # 规则从上到下匹配
  20.         request {
  21.             # 内置出站:asis,reject
  22.             # 可用的方法qname, qtype
  23.             # 广告拒绝
  24.             qname(geosite:category-ads-all) -> reject
  25.             # 这里的意思是google中是cn的域名使用alidns
  26.             qname(geosite:google@cn) -> alidns
  27.             # 匹配后缀,匹配关键字
  28.             qname(suffix: abc.com, keyword: google) -> googledns
  29.             # 全匹配和正则匹配
  30.             qname(full: ok.com, regex: '^yes') -> googledns
  31.              # DNS 请求类型
  32.              # ipv4和ipv6请求使用alidns
  33.             qtype(a, aaaa) -> alidns
  34.             # cname请求googledns
  35.             qtype(cname) -> googledns
  36.             # 默认DNS服务器
  37.             fallback: alidns
  38.         }
  39.         # 根据DNS查询的响应,决定接受或者使用另外一个DNS服务器重新查询记录
  40.         # 规则从上到下匹配
  41.         response {
  42.             # 内置出站:accept,reject
  43.             # 可用的方法:qname, qtype, upstream, ip.
  44.             # 如果是发送到googledns的请求响应,则接受,可用于避免循环
  45.             upstream(googledns) -> accept
  46.             # 意思是如果请求的域名不是国内网站,但是返回了一个私有的IP,那就是被污染了。重新通过googledns请求
  47.             ip(geoip:private) && !qname(geosite:cn) -> googledns
  48.             # 以上不匹配,默认
  49.             fallback: accept
  50.         }
  51.     }
  52. }
复制代码
3、路由的配置文件
  1. routing {
  2.     ### 以下是预设规则

  3.     # 本地的网络管理器应该直连,以避免在绑定WAN接口的时候出现错误的网络连通性检查结果
  4.     pname(NetworkManager) -> direct

  5.     # 把它放在前面,可以防止多播应该发送到局域网的数据包被代理转发。
  6.     # "dip" 意思是目的IP.
  7.     dip(224.0.0.0/3, 'ff00::/8') -> direct

  8.     # 该设置允许你直接访问私有地址而不是通过代理,如果你想访问代理主机的私有网络地址,可以修改下面配置
  9.     dip(geoip:private) -> direct

  10.     ### 以下是自定义规则
  11.   
  12.     # 内置出站:block, direct, must_rules
  13.     # must_rules表示不将DNS流量重定向到dae并继续匹配
  14.     # must_direct和must_my_groupName 表示不会将DNS流量重定向到dae,不会继续匹配
  15.     # 对于单个规则,direct会劫持并处理DNS请求(用于流量分割),而must_direct不会
  16.     # 如果存在DNS请求循环时,must_direct很有用
  17.     #  "must_direct" 可以写成 "direct(must)".
  18.     # 同样,“must_groupname”也支持不劫持和处理 DNS 流量,
  19.     # 相当于“groupname(must)”。groupname指的是出站分组
  20.     # 如果没有任何规则匹配,默认的出站分组
  21.     fallback: my_group
  22.   
  23.     ## 域名规则
  24.   
  25.     # 后缀匹配
  26.     domain(suffix: “师夷长技以制夷”a.org) -> my_group
  27.     # 全匹配,两种写法
  28.     # equals to domain(“师夷长技以制夷”a.org) -> my_group
  29.     domain(full: dns.google.com) -> my_group
  30.     # 关键字匹配
  31.     domain(keyword: facebook) -> my_group
  32.     # 正则匹配
  33.     domain(regex: '\.goo.*\.com$') -> my_group
  34.     # geosite匹配
  35.     domain(geosite:category-ads) -> block
  36.     domain(geosite:cn) -> direct
  37.     # 组合规则
  38.     domain(keyword: google, suffix: www.twitter.com, suffix: “师夷长技以制夷”a.org) -> my_group
  39.   
  40.     ## 目的IP规则
  41.     # 单个IP匹配
  42.     dip(8.8.8.8) -> direct
  43.     # 单个IP段匹配
  44.     dip(101.97.0.0/16) -> direct
  45.     # geoip匹配
  46.     dip(geoip:private) -> direct
  47.     # 多目的IP规则
  48.     dip(geoip:cn, geoip:private) -> direct
  49.     dip(9.9.9.9, 223.5.5.5) -> direct
  50.   
  51.   
  52.     ## 源IP规则
  53.     sip(192.168.0.0/24) -> my_group
  54.     sip(192.168.50.0/24) -> direct
  55.     # 多源IP规则
  56.     sip(192.168.0.6, 192.168.0.10, 192.168.0.15) -> direct
  57.   
  58.     # ip规则
  59.     ip(geoip:cn) -> direct
  60.   

  61.     ## 目的端口规则
  62.     # 单个端口
  63.     dport(80) -> direct
  64.     # 端口范围
  65.     dport(80) -> direct
  66.     # 端口范围
  67.     dport(10080-30000) -> direct
  68.   
  69.     ## 源端口规则
  70.     # 单个端口
  71.     sport(38563) -> direct
  72.     # 端口范围
  73.     sport(10080-30000) -> direct
  74.   
  75.     ## 四层协议规则:
  76.     # tcp
  77.     l4proto(tcp) -> my_group
  78.     # udp
  79.     l4proto(udp) -> direct
  80.   
  81.     ## IP版本规则:
  82.     # IPv4
  83.     ipversion(4) -> block
  84.     # IPv6
  85.     ipversion(6) -> ipv6_group
  86.   
  87.     ## 源MAC规则
  88.     mac('02:42:ac:11:00:02') -> direct
  89.   
  90.     ## 进程名规则 (当绑定WAN接口是只支持本地进程)
  91.     pname(curl) -> direct
  92.   
  93.     ## DSCP规则 (匹配 DSCP; 对于绕过BT有用).
  94.     # See https://github.com/daeuniverse/dae/discussions/295
  95.     dscp(0x4) -> direct
  96.   
  97.     ## "且"规则
  98.     dip(geoip:cn) && dport(80) -> direct
  99.     dip(8.8.8.8) && l4proto(tcp) && dport(1-1023, 8443) -> my_group
  100.     dip(1.1.1.1) && sip(10.0.0.1, 172.20.0.0/16) -> direct
  101.   
  102.     ## “非“规则
  103.     # 下面代表,域名不是geosite类型为google-scholar或者category-scholar-!cn或者category-scholar-cn
  104.         !domain(geosite:google-scholar,
  105.         geosite:category-scholar-!cn,
  106.         geosite:category-scholar-cn
  107.     ) -> my_group
  108.   
  109.     ## 更复杂的规则,我觉得少用
  110.         domain(geosite:geolocation-!cn) &&
  111.     !domain(geosite:google-scholar,
  112.             geosite:category-scholar-!cn,
  113.             geosite:category-scholar-cn
  114.         ) -> my_group
  115.   
  116.         ## 自定义 DAT 文件
  117.     domain(ext:"yourdatfile.dat:yourtag")->direct
  118.     dip(ext:"yourdatfile.dat:yourtag")->direct
  119.   
  120.     ## 设置 fwmark(Firewall Mark)
  121.     # 当您想要将流量重定向到特定接口(例如wireguard)或用于其他高级用途时,标记非常有用
  122.     # 以下是将Disney的流量重定向到wg0接口的过程
  123.     # You need set ip rule and ip table like this:
  124.     # 1. Set all traffic with mark 0x800/0x800 to use route table 1145:
  125.     # >> ip rule add fwmark 0x800/0x800 table 1145
  126.     # >> ip -6 rule add fwmark 0x800/0x800 table 1145
  127.     # 2. Set default route of route table 1145:
  128.     # >> ip route add default dev wg0 scope global table 1145
  129.     # >> ip -6 route add default dev wg0 scope global table 1145
  130.     # Notice that interface wg0, mark 0x800, table 1145 can be set by preferences, but cannot conflict.
  131.     # 3. Set routing rules in dae config file.
  132.     domain(geosite:disney) -> direct(mark: 0x800)
  133.   
  134.     ## Must rules
  135.         # 对于以下规则,DNS请求将会被强制重定向到dae,除了mosdns的请求
  136.         # 不同于must_direct/must_my_group,来自mosdns的流量会继续匹配其他规则
  137.     pname(mosdns) -> must_rules
  138.     ip(geoip:cn) -> direct
  139.     domain(geosite:cn) -> direct
  140.     fallback: my_group
  141. }
复制代码




前排吃瓜
回复

使用道具 举报

坐等吃瓜
回复

使用道具 举报

楼主,我想看看你自己的配置,可以发出来吗
回复

使用道具 举报

如果有大神能集成傻瓜式的模块插件更好
回复

使用道具 举报

看起来很NB~~~~~~~
回复

使用道具 举报

配置过一下,没配置好,网络体验不太好
回复

使用道具 举报

 楼主| | 显示全部楼层
lingwei 发表于 2024-3-30 09:41
配置过一下,没配置好,网络体验不太好

体验极好,比其它插件要快1-2秒左右。很好用~~
回复

使用道具 举报

 楼主| | 显示全部楼层
kinkit 发表于 2024-3-29 23:23
楼主,我想看看你自己的配置,可以发出来吗

我的配置极简:
路由配置:
pname(NetworkManager) -> direct
    dip(224.0.0.0/3, 'ff00::/8') -> direct
    dip(geoip:private) -> direct

    ### 以下是自定义规则
  
    ## 规则
    ip(geoip:cn) -> direct
    domain(geosite:cn) -> direct
    domain(geosite:category-ads) -> block

  
    # 默认出站分组
    fallback: proxy
DNS配置:
upstream {
    googledns: 'tcp://dns.google.com:53'
    alidns: 'udp://dns.alidns.com:53'
  }
  routing {
    request {
      qname(geosite:cn) -> alidns
      fallback: googledns
    }
    response {
        upstream(googledns) -> accept
        fallback: accept
    }
  }

全局配置那lan口要选择,然后连接选项要选择‘utls’,然后模型选择chrome_auto.
回复

使用道具 举报

allenstella 发表于 2024-3-30 14:27
体验极好,比其它插件要快1-2秒左右。很好用~~

求大佬出个详细教材~~~
回复

使用道具 举报

我完全没有出去的需求,从不出去,仅仅是对于内核BPF好奇,打开了运行看看。
自己写了个luci,我的脾气是,自己能写的就不用别人的。不编译二进制,直接下载来用。
发现在官方OP源码上打开编译BPF有非常多的坑,没有人给你指点,十个人有八个人干不成。
DAED这个东西性能我不知道,因为我不出去。不过内核打开了BPF,却发现有显著问题:
1.系统跑分下降(不是很多)。
2.严重损害本机WIFI性能(只达到正常时的一半左右)。
3.某些程序运行异常(似乎问题出在获取路由表、netfilter查询方面)。
4.另外daed的webui对浏览器兼容差,有些浏览器打不开,你得装多两个浏览器试试。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

楼上大佬的ui跟esir的差不多
回复

使用道具 举报

 楼主| | 显示全部楼层
wulishui 发表于 2024-3-31 12:08
我完全没有出去的需求,从不出去,仅仅是对于内核BPF好奇,打开了运行看看。
自己写了个luci,我的脾气是, ...

你编译的是什么版本?ubuntu下编译的版本达到了0.5x,而Openwrt下的版本还在0.4x阶段。现在的版本成熟很多吧。
回复

使用道具 举报

本帖最后由 wulishui 于 2024-4-1 13:27 编辑
allenstella 发表于 2024-3-31 18:24
你编译的是什么版本?ubuntu下编译的版本达到了0.5x,而Openwrt下的版本还在0.4x阶段。现在的版本成熟很多 ...

跟daed无关,因为我并没有使用它,开与不开它问题都一样,仅仅是BPF产生的问题。这些问题实在影响我日常使用,反正我也用不上,恢复之前的config,make clean重新编译固件,终于清爽了
0401---验证发现,wifi问题和BPF无关(是什么原因暂时不清楚)。
但依靠iptables(可能性最大)工作(实际是netfilter有关)有大问题是相关的。
回复

使用道具 举报

kinkit 发表于 2024-3-31 17:02
楼上大佬的ui跟esir的差不多

很多东西最后都是大同小异。
去年我曾经从github下过一个驱动,是下载zip包,而不是git clone。因为内核不兼容,我修改了几百处,因为他原来的逻辑判断不science,我按照我自己的习惯改了。makefile因为我要增加几个模块,也增加了几处命令。因为我不会使用github,我本想将改动提交给他,但是我没有渠道,一直没有提交。今年我去看发现他升级了源码,我又去zip下载回来编译发现原先我改的path不能用,于是我去对比,发现他也改了,他所改的相关部分和我改的部分一字不差,逻辑判断、行的前后变化(写代码的都知道,有些命令可前可后,执行结果都一样),都一样,甚至makefile上我添加的那几行,他的也添加上了!!!那一刻我甚至怀疑我整个电脑屏幕已经暴露在别人眼下了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-10 10:06

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表