普通视图

Daed 1.5.1版本更新了什么?

2025年12月1日 08:00
😀
历经半年没有更新的Daed,在Dae发布1.1.0rc1之后2个月,终于刷了一大波的版本号,在废弃原有版本号的基础上,从0.5.0刷到了1.5.1版本,同步更新了上游Dae-core以及Dae-Wing,让我们来看看具体在功能上都有什么更新内容。
notion image

📝 Daed v1.5.1版本更新内容

上游Dae-core核心更新

1. 功能更新

  • TLS分片支持(2025-05-31)
    • 新增 TLS分片功能,增强网络流量混淆能力
    • 提交:feat: add TLS fragmentation (#825)
  • Anytls TCP&&UDP支持(2025-07-02)
    • 支持 anytls协议的TCP和UDP传输
    • 提交:feat(anytls): support anytls tcp&&udp (#852)
  • DNS本地绑定支持tcp+udp模式(2025-09-23)
    • DNS 本地绑定支持tcp+udp混合模式
    • 提交:feat(dns): support tcp+udp schema for dns local bind (#885)

2. 性能优化与修复

  • BPF 程序优化(2025-06-15)
    • 清理无用的BPF代码
    • 提交:chore(bpf): Cleanup dead bpf code (#842)
  • BPF 定时器修复(2025-06-25)
    • 修复BPF定时器相关问题
    • 提交:fix(bpf): Fix bpf timer (#845)
  • TProxy 传输解析重构(2025-06-21)
    • 重构 parse_transport并修复IPv6扩展头偏移计算错误
    • 提交:fix(tproxy): refactor parse_transport and fix wrong ipv6 extension header offset calc (#844)
  • BPF 程序加载优化(2025-06-22)
    • 为 L2/L3 网络设备加载独立的程序
    • 提交:optimize(bpf): Load separate programs for L2/L3 netdev (#822)

上游Dae-wing更新

1. 功能更新

  • 订阅链接更新 API(2025-11-29)
    • 新增更新订阅链接的 API 接口
    • 提交:feat(subscription): add update subscription link API (#171)

2. 依赖更新

  • Dae-core 更新(2025-11-28)
    • 从 bc7e464 更新到 7e67e31
    • 提交:build(deps): bump dae-core from 'bc7e464' to '7e67e31' (#172)

Daed前端更新

  • Mock 模式支持(2025-11-30)
    • 新增mock模式用于测试和开发
    • 更新截图生成流程
  • ConfigDetailView组件(2025-11-30)
    • 新增详细配置显示组件(是的,现在可以在Daed的管理页面显示订阅节点和节点的详细信息了,不用再像之前一样需要点击查看之后才能看到详细信息)
  • 响应式设计改进(2025-11-30)
    • 改进资源和卡片组件的响应式设计(最重要的改进就是适配了移动端页面,以前版本在移动端多节点情况下很难用,无法正常拖拽选择节点,现在可以正常拖拽和选择节点了。同时支持了对代理组使用订阅功能,允许使用整个订阅来适配代理组)
  • UI设计风格变更
    • 变成了白黄和黑黄,个人感觉没有之前好看。
  • 新增了Profile管理功能
  • 新增了管理面板密码修改功能
  • 依赖清理(2025 年 11 月 30 日)
    • 从依赖中移除了未使用的Mantine包
    • 代码清理和优化
 

🤗 总结归纳

主要来说这次Daed的版本更新还是挺激进的,不但同步了上游Dae-core的更新,同时还对自身的UI和显示组件,以及响应式设计进行了更新。目前来说,Daed的协议于功能支持已经与Dae最新版本相同,包括以下协议:
类别
支持的协议/类型
基础协议
HTTP(S), SOCKS4/4a/5
V2Ray系
VMess(AEAD), VLESS
Shadowsocks系
Shadowsocks(AEAD), ShadowsocksR(SSR)
Trojan系
Trojan, Trojan-Go
高性能协议
Tuic(v5), Juicity, Hysteria2
我也有很长时间没有更新博客了。在家里网络稳定之后,就很难再找到新的突破点去折腾一些东西。所以这篇文章,也算是在刷一下更新。

📎 参考文章

 
💡
有关Daed安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  •  

EasyTier内网穿透及组网教程

2025年3月30日 08:00
😀
最近出门的次数变得越来越多,在外出的时间,家里的网络维护以及内网数据资料的获取成为了一个新的难题。之前我也有尝试过使用Tailscale以及Zerotier等方式进行内网穿透回家,但是由于Zerotier和Tailscale的中心服务器都是在国外,同时父母家那边的网络由于是社区宽带,已经不知道NAT了多少次,所以远程管理的效果还差也很折磨。这次发现了一个新的内网穿透软件:EasyTier,可以在一定程度上缓解上述提到的问题。这篇文章进行一些EasyTier的配置讲解
EasyTier介绍

📝 EasyTier 介绍

EasyTier是一个去中心化的VPN组网方案,由Rust和Tokio驱动。相对于Zerotier、Tailscale的区别也在于去中心化这个特点,客户端即服务端,处于不同网络环境下的客户端在组网的同时,也是服务端的一部分,提供基于RPC的中继能力。相比于Zerotier于Tailscale的中心化组网方案,EasyTier在具有多客户端的情况下,借助P2P异地组网,相比传统的中心化组网方案,成功率更高,可实现更好的内网穿透效果,更有效的利用家宽的上下行带宽。

EasyTier 特点

以下部分内容摘选自EasyTier的Github项目介绍页面
  • 去中心化:无需依赖中心化服务,节点平等且独立。
  • 安全:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。
  • 高性能:全链路零拷贝,性能与主流组网软件相当。
  • 跨平台:支持 MacOS/Linux/Windows/Android,未来将支持 IOS。可执行文件静态链接,部署简单。
  • 无公网 IP 组网:支持利用共享的公网节点组网,
  • NAT 穿透:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。(据说在NAT4-NAT4网络下也可能打洞成功)
  • 子网代理(点对网):节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。
  • 智能路由:根据流量智能选择链路,减少延迟,提高吞吐量。
  • TCP 支持:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。
  • 高可用性:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。
  • IPV6 支持:支持利用 IPV6 组网。
  • 多协议类型: 支持使用 WebSocket、QUIC 等协议进行节点间通信。
  • Web 管理界面:支持通过 Web 界面管理节点。

个人使用感受

目前我的网络环境为电信宽带,具有公网IPv4 + 公网IPv6,手机使用联通5G,正常情况下可以实现在建立连接之后3-5秒内实现P2P的内网穿透,不再借助中继服务器进行数据传输,同城延迟在50ms左右,如果是相同运营商的宽带,理论上同城延迟会更低。
同时,在CoalCloud(碳云)的VPS,在启用EasyTier作为节点后,与家里的Debian旁路网关和手机均可即时建立P2P连接,无需EasyTier提供公共服务器进行数据传输。

📝 EasyTier 安装方法

目前EasyTier提供了多种安装方式,以适应不同的系统平台,同时提供多种第三方工具,可用于对EasyTier节点进行管理,例如EasyTier Game ( Windows )EasyTier Manager ( Windows )luci-app-easytier ( OpenWrt )等。
我个人目前将EasyTier部署在家庭网络内的旁路网关上,并使用了点对网的子网代理,整体使用官方所提供的一键安装脚本。同时为了进行中继通信和在与NAT44网络内设备建立连接情况下,我通过Docker Compose方式将EasyTier也部署在了CoalCloud的VPS上。在旁路网关部署未使用Docker Compose的原因在于我需要使用点对网的子网代理,即通过旁路网关作为跳板,实现对局域网内其他设备的访问与管理,如果通过Docker实现,可能会增加网络的复杂性,所以只使用了脚本安装。
EasyTier不区分服务端与客户端,所以的节点所使用的程序都是一样的,所以在了解以下基于Debian的节点安装及配置之后,可以举一反三,在其他设备进行配置。如果使用OpenWRT,可以尝试在软件仓库中搜索,大部分软件仓库均已收录EasyTier。

EasyTier 一键安装脚本

首先确保你的系统以及安装了wgetunzip 这两个必须的依赖,如果没有安装可通过如下命令安装(Debian、Ubuntu等使用apt进行软件包管理的系统):
然后通过如下命令进行EasyTier的脚本一键安装:
默认脚本下载位置位于/tmp 临时文件夹下,安装完成后可进行删除。

EasyTier 基础配置

EasyTier安装后,默认的配置文件位于/opt/easytier/config/default.conf ,下面列出我的配置文件宫参考,你也可以通过config_generator生成自己的配置文件:
各项参数意义如下:
instance_name: 实例名称
instance_id : 实例的uuid,可以使用config_generator生成
ipv4 :当前设备的虚拟局域网IPv4地址,如果你需要手动为设备指定虚拟局域网的IPv4地址,则需要此项,否则可删除。
dhcp : 如果你需要手动为当前设备指定虚拟局域网IPv4地址,并已经包含了ipv4的参数项,则此项填写为false,如果你希望自动为当前设备分配虚拟局域网IPv4地址,则填写true.
listeners : 一般情况下无需改动。如果你希望使用不同的端口,则自行修改端口并对端口进行防火墙放行。
rpc_portal : 默认端口为0,在官方文档中表示默认会尝试使用15888,但实际并没有使用,EasyTier启动后无法通过easytier-cli进行数据获取,报错信息如下所示。所以建议修改监听端口为15888
network_name:虚拟局域网的名称。EasyTier是通过network_namenetwork_secret进行网络的识别与连接确认,所以需要客户端的network_namenetwork_secret 完全一致。建议使用复杂一些的网络名称
network_secret :虚拟局域网的网络密钥。
uri :节点地址,可使用官方提供的节点(tcp://public.easytier.cn:11010),如果你自建了VPS节点,也可填写tcp://IP:PORT ,默认端口为11010。也可以查看EasyTier 公共服务器列表,选择最适合自己网络环境的公共服务器节点。
enable_kcp_proxy :是否开启KCP代理,将TCP流量转换为KCP流量,提升传输速度与降低延迟。建议开启。
latency_first : 延迟优先,建议开启。
enable_exit_node:是否设置当前节点为出口节点。目前建议关闭,由于EasyTier无法进行DNS劫持,所以暂时无法像Tailscale或者Zerotier使用出口节点进行翻墙等科学上网操作。
dev_name : 设置tun网卡名称,如果你的设备具有多个程序在使用tun设备,那么建议修改一下名称,避免产生冲突。
proxy_forward_by_system : 使用系统转发替代EasyTier内置转发。相对来说性能会有所提高,但是你需要对防火墙有一定的了解,或者你的节点部署在局域网环境内,没有开启防火墙。 bind_device : 没有在配置项中列出的部分。即是否绑定物理设备,如果你的机器使用了很多的虚拟网络设备,建议删除该项,使其绑定物理网卡,避免产生无法连接问题 use_smoltcp : 是否使用用户态协议栈,避免操作系统防火墙导致的无法子网代理 / KCP 代理。个人目前是删除了该项,因为暂时没有发现因防火墙导致的无法子网代理问题,同时在开启用户态时,性能损耗较为严重。 relay_all_peer_rpc : 转发所有对等节点的RPC数据包,帮助非当前虚拟局域网的其他节点建立连接。为了安全以及流量考虑,建议关闭或删除。 enable_encryption : 是否禁用加密。false为禁用加密,true为启用加密,默认为false。启用加密会增加CPU占用。

防火墙放行EasyTier端口

EasyTier默认监听端口为11010 ,如果你使用系统防火墙,需要对端口进行放行。同时如果部署在家庭网络内,需要在路由器的防火墙对11010端口也需要进行放行操作(Forward)。

EasyTier 运行命令

启动EasyTier

其中@default即使用defalt.conf配置文件,以下皆同。控制命令基于Systemd。

重启EasyTier

停止EasyTier

查看EasyTier运行状态

EasyTier-CLI命令

查看EasyTier已连接的节点

返回结果类似于如下,即已经建立连接的节点和目前的基本情况,包括是否使用P2P、延迟、丢包、NAT类型等:

查看EasyTier当前节点信息

返回结果大概与下面的信息相似,包括当前的虚拟局域网IPv4地址,子网代理范围,节点ID、公网IPv4地址、公网IPv6地址等。

EasyTier 子网代理

子网代理即点对网的组网方案,可通过一台跳板机进行局域网内其他设备的访问,且无需为局域网内其他设备配置EasyTier。例如你的EasyTier部署在主路由上,但在外面时候想访问家里的NAS,那么就需要点对网的组网方案。
EasyTier的点对网组网非常简单,在配置文件中增加如下部分:
cidr即你需要实现点对网组网的网段,例如我家里的局域网网段为10.0.0.0/24,那么即填写这个网段,如果你的是192.168.1.1类似的局域网地址,那么对应的cidr为192.168.1.0/24

🤗 总结归纳

目前在测试过程中还存在如下问题或未测试项:
  • 出口节点目前不能代理DNS流量,即EasyTier无法对设备的DNS进行劫持,所以无法实现通过节点进行科学上网。目前也不支持Magic DNS功能。
  • 两侧完全NAT44且不具有IPv6公网地址情况下的内网穿透表现还未进行测试。目前已经确认在一方具有公网IPv6情况下或IPv4处于端口映射及以上,即便另一方处于NAT44环境,P2P可建立连接。
  • WireGuard目前还未进行测试,因为我基本上不用WireGuard。这几天看看抽空研究一下。

📎 参考文章

 
💡
有关Easytier安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~ 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
 
  •  

Dae安装及配置指南

2024年12月1日 08:00
😀
我使用Dae替代OpenClash进行科学上网已经有一段时间,目前整体系统的运行情况也已经稳定,该踩的坑也都已经踩过。之前也零零散散写过几篇关于Dae的文章,主要是一些进阶的用法,例如搭配AdGuard Home和MosDNS等其他DNS解析程序,进行广告过滤、国内与国外域名分流等等使用方法,但这些文章没有更多的涉及到Dae本身的安装以及配置和使用指南,所以这篇文章就来填这个坑。

📝 什么是Dae

Dae(大鹅)是一个高性能的透明代理解决方案(科学上网解决方案),在作用上与MihomoSingbox等基本相同,均是通过域名、IP、端口、来源地址、目标地址以及规则集等等不同方式,对流量进行分流以及使用代理,从而达到科学上网的目的。但在核心原理上,Dae通过在Linux内核中使用eBPF实现流量分流拆分与透明代理,允许在网络驱动程序的最早阶段处理数据包。这样可以在将数据包传递给内核协议栈之前进行快速处理,比如丢弃、转发或修改数据包,所以相比其他软件,Dae的直连性能更好,同时也更方便实现国内外流量分流,在效率上更优。

Dae支持功能

  • 支持通过本地主机的进程名称进行流量分流。
  • 支持通过局域网中的MAC地址进行流量分流。
  • 支持使用反向匹配规则进行流量分流。
  • 支持根据策略自动切换节点。
  • 支持 Shadowsocks、Trojan(-go) 和Socks5的全锥NAT(Full Cone)
  • 支持高级DNS解析策略及域名分流
  • 天然支持IPv6,无需额外设置

Dae支持协议

  • HTTP(S), naiveproxy
  • Socks
  • VMess(AEAD, alterID=0) / VLESS
  • ShadowsocksR
  • Proxy chain (flexible protocol)链式代理

Dae支持系统

由于Dae软件自身特性(使用eBPF),只支持Linux核心的操作系统(Only Support By Linux Kernel),并且内核版本不低于5.17 ,如果使用0.9.0-rc以上,内核版本不低于6.1.0。Dae需要Linux Kernel内核开启如下选项,一般来说,完整的Linux系统都是已经处于开启状态:
可以通过如下命令查看Linux内核是否开启了这些选项:
所以Dae这个软件更适合部署于X86架构的路由器或者旁路由(旁路网关)上作为代理网关进行科学上网来使用,嵌入式设备或者硬路由由于Linux核心版本问题,大部分无法正常使用。常规的Linux发行版均可满足Dae的要求,例如Debian(我目前在使用的)、 Ubuntu、 Arch Linux、Fedora等等。Dae也支持在OpenWRT上进行使用,但需要自行进行固件编译,使用较新的Linux Kernel版本,并开启对应内核选项,默认版本大部分内核暂时不满足Dae的需求。
我个人建议作为科学上网的旁路网关(或者说是旁路由,但是其实并没有使用到路由的功能),还是尽量使用完整版的Linux发行版,现在Youtube上不少UP主也开始推荐主路由器 + Linux发行版作为旁路网关的家庭网络科学上网方案,一方面因为在旁路网关中,OpenWRT提供的很多功能用不到,另外一方面,在Linux Kernel的更新以及完整性上,OpenWRT也阉割了很多,Kernel特性支持较为落后,目前OpenWRT的主力版本还在使用5.15的Kernel,这也是为了兼容各种嵌入式设备与多平台架构的结果。

📝 Dae安装

本篇内容是以我个人网络环境和拓扑为操作前提进行编写,所以在特殊场景下,可能并不适用于你的网络环境。我所使用的整体系统环境如下:
  • Proxmox VE(PVE)环境,未进行网卡直通
  • Debian 12 (核心版本:6.1.0-26-amd64)
  • 作为旁路由(旁路网关)使用,只有一个网口ens18

Dae安装脚本

Linux衍生版本安装Dae

衍生版本包括Debian、Ubuntu、Kali、Fedora、Arch等等。
Dae提供了脚本直接进行安装,可通过如下命令进行:
当前Release版本为0.80.9,最新RC版本为0.9.0 1.0rc2,如果希望使用rc版本,可使用如下命令:
如果需要卸载Dae,可使用如下命令:
安装完成后,二进制执行文件位于/usr/local/bin/dae ,同时会自动添加systemctl执行脚本;
配置文件位于/usr/local/etc/dae/config.dae
这个方法不适用与OpenWRT用户。如果你是OpenWRT用户,请参考下面部分。

OpenWRT通过OPKG安装Dae

如果你是ImmortalWRT 24.10版本用户(Linux内核版本6.6.73),通过ImmortalWRT的官方软件源通过opkg即可安装,同时需要安装的kmod依赖也在下面的命令里面。目前提供的版本为0.9.0-r2
以上方法也同样适用于Daed。

OpenWRT编译安装Dae

如果使用的是官方版本的OpenWRT(官方版本可能无法直接安装kmod的ipk文件),在编译时没有选择所需的kmod依赖,而是使用的默认packages,那么可能需要重新编译安装,推荐直接使用ImmortalWRT,具体流程如下:
  1. 打开ImmortalWrt Firmware Selector并选择你的机器架构,软路由一般为Generic x86/64
notion image
 
  1. 点击Customize installed packages and/or first boot script进行定制ImmortalWRT,并在Installed Packages中复制粘贴如下内容:
  1. 点击Request Build,进行定制版ImmortalWRT定制版编译请求,然后等待编译完成并生成下载链接,这个过程大概5-10分钟。
  1. 编译完成后Custom Download里会显示不同版本的下载按钮,一般选择COMBINED-EFI (EXT4) ,下载后的镜像为*.img 格式,根据自己的虚拟化系统不同,进行格式转换。之后的流程与其他在软路由上安装OpenWRT的流程相同。
  1. 单独的Dae安装文件(dae_0.9.0-r2_x86_64.ipk)下载地址为:https://downloads.immortalwrt.org/releases/24.10.0/packages/x86_64/packages/dae_0.9.0-r2_x86_64.ipk
以上方法也同样适用于Daed。

更新GeoIP与GeoSite数据库

如果需要更新GeoIPGeosite数据库,那么可以使用如下命令:
更新GEOIP
更新GEOSITE
更新后的GeoIP与GeoSite文件位于/usr/local/share/dae 文件夹内,Dae会自动使用该位置的GeoIP与GeoSite数据库文件,无需进行移动或复制至新的位置。

📝 Dae配置文件

Dae的配置文件很简单,而且可读性也很高,不必考虑乱七八糟的防火墙劫持与DNS劫持,在我的网络环境下,对付ISP的劫持反诈的劫持也有很好的效果。
以我个人网络环境为例,提供Dae配置文件如下,需要修改的部分为global部分lan_interface的网卡名称、subscription 内的订阅地址,group部分的节点过滤规则。这套配置目前使用于旁路网关上,支持IPv6,同时ipleak超过300次检测未发现DNS泄露情况。
12月27日更新:
  • 增加了小米部分设备域名。部分反应miwifi.com 域名请求次数太多可能是导致内存泄露的原因。
需要注意部分:
  • Group 内节点组名称需要与 Routing 中规则名称对应,例如修改了节点组 Proxy 的名称,那么在 Routing 中也需要修改 proxy 为新的名称
  • 如果使用RC版本,DNS可以使用DOH或DOT,支持H3协议的DOH,以阿里巴巴的阿里云DNS举例:
    • DOH:h3://dns.alidns.com:443
    • DOT:tls://dns.alidns.com:853
    • DOQ:quic://dns.alidns.com:853
  • 节点过滤规则:如果使用固定节点,policy: fixed(0) 并且filter: name(节点名称) ,如果节点名称中包括emoji符号,可能无法正常选择提示报错,此时建议使用filter: name(keyword: ‘节点关键字’) 方式进行过滤选择。
  • Routing 中的规则为顺序匹配,从上至下,所以建议将特定规则放在最上方,将例如Geosite:CN 等较大的规则集放在下方,避免规则冲突无法正常匹配。例如,你可以将自定义规则放置于最上方。
  • 如果你的机场对节点入口域名使用了国内和国外不同的结果(例如目前的TagSS,为了避免来自国外流量的DDoS),或者无法获取到节点正确的IP地址,那么建议修改udp_check_dns 为国内的DNS,例如阿里云的223.5.5.5 可能会解决这个问题。

启动Dae

使用如下命令可以启动Dae。
在OpenWRT软路由中,启动命令为:
如果需要在前台使用Dae,便于查看Dae运行情况,可以使用:
在OpenWRT系统中则为如下命令:
当修改配置文件后,需要重载Dae配置文件时,可以使用:
在OpenWRT中则为如下命令

Dae自动更新并存储订阅

由于Dae每次启动时均需要重新读取订阅信息,本身并不存取订阅信息,当订阅链接被墙或者无法访问时,就无法正常获取到订阅信息及分组信息,造成访问异常。以下方法可以实现订阅信息存储和自动订阅更新。

systemd.timer方法

假设你的dae配置文件存储于/usr/local/etc/dae/ ,这也是通过自动安装脚本默认的存储位置。那么新建一个/usr/local/bin/update-dae-subs.sh文件:
赋予这个文件可执行权限:
配置systemd.timersystemd.service进行自动更新
  • /etc/systemd/system/update-subs.timer: 以下代码是每12小时,或者每次系统启动后15分钟更新
  • /etc/systemd/system/update-subs.service:
新建订阅链接文件:/usr/local/etc/dae/sublist ,并安装以下模板填写订阅链接,如果只有一个订阅,则保留并填写一个即可。当通过update-subs.timer 拉取订阅信息时,会自动建立sub1sub2sub3 的订阅文件。
赋予订阅链接文件600权限
修改config.daesubscription 部分内容为订阅文件
启动Timer

Crontab方法

如果你的系统没有system.timer ,也可以使用crontab进行替代。区别在于无法实现系统启动后自定义时间进行更新,只能定时更新。
编写/usr/local/bin/update-dae-subs.sh 文件
通过crontab实现定时更新,以下例子为12小时执行一次。你可以使用crontab计算器查询定时规则。
剩余步骤与上面system.timer部分相同。

🤗 Dae的其他用法

如果需要图形界面进行配置,可以选择Daed,配置文件内容大同小异,主要就是DNS和Routing部分,对应截取之后粘贴到控制台里面就好。

OpenAI相关规则

geosite:openai 规则并不全面,如果遇到无法使用的情况或者降智情况,可以添加以下部分规则,替换ai 代理组为你的代理组名称:
以上规则包括Gemini,Openai,Copilot,Apple Intelligence, Claude这些AI服务提供商。

关于Dae的CPU占用率高及内存泄露

建议添加如下规则禁止Quic。Daed也建议添加该规则。
同时建议添加机场节点域名至Direct规则内,避免回环产生的内存泄露。

📎 参考文章

💡
有关Dae安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
  •  

DAE搭配MosDNS使用配置

2024年10月12日 08:00
😀
本篇文章并非DAE及DAED的安装配置入门文章。关于DAE与DAED的安装方法之后会单独编写。本篇文章主要内容为在使用DAE或DAED的情况下,如何搭配MosDNS使用,提供一个高兼容性、高可用性的配置方案。以下内容基于Debian系统。

📝 DAE(大鹅)的DNS原理

DAE的分流原理

域名通过劫持 DNS 请求,将 DNS 请求的域名与所查 IP 进行关联来得到。尽管这种方式有一些问题:
  1. 可能会出现误判。例如需要分流到国内和国外的两个网站拥有同一个 IP,且在短时间内同时被访问,或浏览器有 DNS 缓存。
  1. 用户的 DNS 请求必须通过 dae。例如将 dae 设为 DNS,或在 dae 作为网关的情况下使用公共 DNS。
———
DAE对程序所在网关进行全部流量的处理,且与其他代理程序不同,并不提供DNS的转发端口,而是采用对只有经过该网关的全部DNS请求才会分流,所以无法直接使用原有代理程序那些套娃的DNS行为。
 
更新:
需要注意的是,如果上游MosDNS采用并发策略,一段时间后,可能会存在造成Dae内存泄露的情况,内存占用由原来的500M左右,增加至1G左右。目前原因还在排查。
MosDNS关系不大,如果手机使用相同订阅代理并连接同网WIFI,在内网会产生环回请求造成内存泄露。

常规代理程序DNS请求及解析

clash dns
在未通过公共DNS或者代理远端DNS请求解析的情况下,常规代理软件是可以进行DNS的无限套娃的,并不会返回给客户端解析的结果。在套娃的过程中可以不断针对不同的DNS请求进行过滤和分流,在日常使用中能够极大的提供便利,例如AdGuard Home的广告过滤与可视化控制面板、MosDNS的并发DNS请求、ECS请求等等。

DAE的DNS请求与解析

dae dns
DAE的不同点在于,在流量进入网关开始即进行分流,且基于Domain的分流模式必须将DAE作为唯一的DNS入口,在顺序上相当于将将代理程序前置作为入口,且由于DAE并不提供DNS转发的监听端口,所以无法后置于其他DNS程序。

📝 DAE与MosDNS的配合

DAE提供了一份使用外置DNS程序的指南:
external-dns.md
daeuniverse
根据这份指南我们可以对整体家庭局域网内的DNS请求链路进行梳理如下:
dae dns with mosdns
例如我在使用MosDNS的情况下,将GeoSite:CN的域名通过MosDNS并发请求阿里的公共DNS服务器,取得结果。同时对GeoSite:GFW以及Graylist(自定义灰名单)的域名使用Google的公共DNS进行请求,使其回到DAE的分流规则之内,这样既满足使用MosDNS并发请求加快DNS解析速度、ECS提供就近CDN节点的同时,也不会扰乱DAE基于domain的分流配置。

DAE DNS配置

主要配置为红色字体部分,DAE的DNS部分仅作为流量的监听,所有DNS的解析均发往MosDNS进行解析,无论是否被污染,由MosDNS中的规则进行DNS分流。

DAE Routing配置

主要部分为红色部分,将MosDNS进程放在must_direct策略内,不将DNS流量重定向到dae并继续匹配,避免产生回环。同时因为可继续匹配,所以MosDNS中使用Google Public DNS规则流量还可以继续进入DAE执行远端请求。

MosDNS配置

定义Tag

主序列配置

query_nocn配置

主DNS服务由Google Public DNS提供,副DNS服务由NextDNS服务提供,在使用Google Public DNS时流量会重新进入DAE,完成解析,获得无污染结果。

🤗 总结归纳

目前这套方法是我用下来最为舒服的,在解析速度和识别被污染域名方面均可以满足我的需要,同时对劫持到反诈页面也有很好的规避效果,例如Linux.do等网站打开也不会被劫持了。唯一不太方便的地方在于对于污染域名的配置上,在添加DNS的自定义规则时,需要在MosDNS的自定义文件内添加,例如我的是graylist
理论上,在此基础上还可以进行套娃,例如使用AdGuard Home等,但由于DAE作为入口劫持所有的流量,所以AdGuard Home的客户端会仅显示为DAE客户端。所以建议如果使用AdGuard Home,可将AdGuard Home放置于另外的容器或主机上作为DNS入口,同时上游配置DAE所在主机IP。
如果你的机场对节点入口域名使用了国内和国外不同的结果(例如目前的TagSS,为了避免来自国外流量的DDoS),或者无法获取到节点正确的IP地址,那么建议修改Config部分内的udp_check_dns 为国内的DNS,例如阿里云的223.5.5.5 可能会解决这个问题。

📎 参考文章

 
💡
有关DAE安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
 
  •  

Docker国内加速镜像

2024年10月12日 08:00
😀
最近国内使用Docker不是很顺畅,遭遇DNS污染+SNI阻断,在拉取Docker Hub上的docker时无法正常使用。国内的Docker加速镜像又部分关闭,自己手头还有一台闲置的HK小鸡,拿出来做个Docker加速镜像供网友使用。
Docker

📝 Dolingou提供的Docker加速镜像

Docker Hub加速镜像地址

加速镜像位于我在香港(Hong Kong)的一台小机器上,使用的是CoalCloud提供的服务,同时使用Cloudflare优选加速国内访问速度。为了避免滥用及攻击,镜像地址只允许GET请求,其他请求会返回"invaild method"405错误(Method Not Allowed

Docker Hub拉取限制

Pul拉取限制遵循Docker Hub限制:Usage and rate limits | Docker Docs,目前我所提供的免费Docker加速镜像处于匿名用户级别,即6小时100次拉取,请酌情使用。
用户类型
速率限制
匿名用户
每个IP地址每6小时100次拉取
认证用户
每6小时200次拉取
拥有付费Docker订阅的用户
每天最多5000次拉取

📝 其他Docker Hub加速镜像

部分Docker Hub加速镜像使用Cloudflare Worker进行部署,仅适用于日常用途,请勿滥用,尊重提供者。
DockerHub 镜像仓库
是否正常
docker.registry.cyou
正常
docker-cf.registry.cyou
正常
dockerpull.com
正常
dockerproxy.cn
正常
docker.1panel.live
正常
hub.rat.dev
正常
dhub.kubesre.xyz
正常
docker.hlyun.org
正常
docker.kejilion.pro
正常
registry.dockermirror.com
正常
docker.mrxn.net
正常
docker.chenby.cn
正常
ccr.ccs.tencentyun.com
正常
hub.littlediary.cn
正常
hub.firefly.store
正常
docker.nat.tf
正常
hub.yuzuha.cc
正常
hub.crdz.gq
正常
noohub.ru
正常
docker.nastool.de
正常
hub.docker-ttc.xyz
正常
freeno.xyz
正常
docker.hpcloud.cloud
不正常,重定向被ADG拦截
dislabaiot.xyz
正常
docker.wget.at
正常
ginger20240704.asia
正常
lynn520.xyz
正常
doublezonline.cloud
正常
dockerproxy.com
正常

📝 如何使用Docker Hub加速镜像

为了加速镜像拉取,你可以使用以下命令设置 Registry Mirror,从而正常使用Docker Hub加速镜像。

Linux修改位置

各Linux发行版应该都大差不差。

Windows修改位置

打开Docker Desktop应用,并右击系统托盘上的Docker图标,选择【Settings】进入设置页面。
在设置页面的左侧导航栏中选择【Docker Engine】。
在Docker Engine的配置页面中,找到【registry-mirrors】字段,如果没有,直接添加,并在该字段中添加国内免费镜像源的地址

飞牛OS(FnOS)修改位置

(不知道还能不能赶上飞牛OS这波流量)
打开Docker - 镜像仓库
飞牛OS Docker
点击右上角仓库设置
FNOS 飞牛OS Docker 设置
点击添加,并输入仓库名称(输什么都可以),URL填写镜像地址,点击应用
飞牛OS添加Docker仓库
选择刚刚创建的镜像,点击启用,状态显示为使用中即添加完成。
飞牛OS启用Docker仓库

🤗 总结归纳

香港(HK)小鸡,不保证长期可用性,大陆访问仅套一层优选IP,同时使用Caddy作为http服务提供,请勿滥用及攻击,谢谢。

📎 参考文章

💡
有关Docker安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
  •  

国内外DNS服务器推荐列表

2024年9月5日 08:00
😀
之前介绍了不少关于MosDNS、AdGuard Home和OpenClash的内容,里面绕不开的一个部分就是:用来解析国外域名,获取无污染解析结果的DNS服务器应该选择哪家,或者说有哪些无污染的公共DNS服务器可以选择。今天这篇文章,就对我使用过的DNS服务器进行一个整理,并进行无污染DNS服务器的推荐。

📝 个人对DNS服务器选择的看法

DNS服务器的主要作用是将域名解析转换为IP地址,同时支持负载均衡、高可用性、反向解析、缓存加速等功能。DNS是互联网的基础设施之一,几乎所有的网络通信都依赖于DNS服务。所以选择一个稳定、高速且无污染的DNS的重要性不言而喻。在使用DNS分流的情况下,对国内域名与国外域名分别配置DNS可以有效提升解析速度与准确性,例如我在使用的MosDNS和AdGuard Home。

📝 国内DNS服务器

国内的公共DNS服务选择不多,我认为国内DNS只有三个选择,阿里云公共DNS(阿里巴巴)、DNSPod(腾讯)以及各省市运营商下发的DNS。阿里云公共DNS和DNSPod均支持ECS(edns-client-subnet)协议,在一定程度上可以缓解整体解析速度不如运营商DNS的情况。其他例如114、360、百度等等,均有前科,不太推荐选择。
同时在国内DNS的选择及使用上,我个人更推荐使用DOH、DOT方式,避免DNS泄露给运营商,从而产生DNS劫持。在部分省份,运营商DNS劫持会将目标网站的解析结果返回为反诈页面,例如被运营商DNS劫持到www.js96110.com.cn
名称
标准DNS地址
DOH地址
DOT地址
是否支持H3
ECS
DNSPod
119.29.29.29 / 182.254.116.116
https://doh.pub/dns-query
dot.pub
支持
AliDNS
223.5.5.5 / 223.6.6.6
https://dns.alidns.com/dns-query
dns.alidns.com
支持

📝 国外DNS服务器

我个人一般会用Google DNSNextDNS、以及AdGuard DNS作为主要无污染DNS使用。NextDNS的免费额度足够家庭使用,当免费额度用完就切换到AdGuard DNS。在Google DNS存在国内访问问题的时候,会选择Quad9或者OpenDNS。Cloudflare DNS在我这里的稳定性和速度并不好,所以很少选择。大多数的国外公共DNS均可以返回无污染的DNS解析结果,这些公共DNS服务基本都支持DNSSEC。
在衡量与选择国外公共DNS服务时,延迟与丢包一般是我首先考虑的因素,其次就是DOH(DNS over HTTPS)和DOT(DNS over TLS)的支持,如果能够支持H3(http3)或者tls pipeline的话,那么一般就会是首选的DNS服务。其他次级考虑的因素还包括是否支持ECS,如果可以支持ECS,我会选择代理出口位置附近的IP。通过MosDNS的ECS功能,可以自定义ECS地址,使解析的CDN结果更靠近所配置的IP地址,从而提高解析结果的访问速度,例如我喜欢配置国外的ECS地址为代理的出口地址,这样通过代理访问时,可以获得最佳速度及可用性。
同时在使用DOT或DOH使,可使用dial_addr替代域名,可免去每次建立连接时需要Bootstrap DNS先解析DNS服务器域名。dial_addr一般为标准DNS的IPv4和IPv6地址。
由于一些公共DNS使用DNSCRYPT,需要使用DNS服务器公钥,存在局限性,所以暂时未列入表单内,也不作为DNS选择与衡量的指标。
同时大部分公共解析服务均为IPv4和IPv6双栈,即使用IPv4的DNS公共解析服务也可以解析IPv6地址,所以列表内不再进行IPv4和IPv6的区分。
在设备支持的情况下,非常建议选用支持DoH与DoT的DNS服务器。

推荐使用的DNS服务器

DNS服务名称
标准DNS地址
DoH地址
DoT地址
是否支持H3
ECS
Google DNS
8.8.8.8 / 8.8.4.4
https://dns.google/dns-query
dns.google
支持
Cloudflare
1.1.1.1 / 1.0.0.1
https://cloudflare-dns.com/dns-query
1dot1dot1dot1.cloudflare-dns.com
支持
Quad9
9.9.9.9 / 149.112.112.112
https://dns.quad9.net/dns-query
dns.quad9.net
支持
AdGuard Public DNS
94.140.14.14 / 94.140.15.15
https://dns.adguard.com/dns-query
dns.adguard.com
支持
NextDNS
45.90.28.0 / 45.90.30.0
https://dns.nextdns.io
45.90.28.0 / 45.90.30.0
支持
OpenDNS
208.67.222.222 / 208.67.220.220
https://doh.opendns.com/dns-query
208.67.222.222 / 208.67.220.220
支持
Yandex DNS
77.88.8.8 / 77.88.8.1
https://doh.yandex.net/dns-query
dns.yandex.net
不支持
CleanBrowsing
185.228.168.9 / 185.228.169.9
https://doh.cleanbrowsing.org/dns-query
security-filter-dns.cleanbrowsing.org
不支持
jp.tiar.app
172.104.93.80
https://jp.tiarap.org/dns-query
jp.tiar.app
不支持
Comodo Secure DNS
8.26.56.26
https://doh.comodo.com/dns-query
dns.comodo.com
不支持
DNS.WATCH
84.200.69.80
https://dns.watch/dns-query
不支持
Blahdns(新加坡)
46.250.226.242 2407:3640:2205:1668::1
https://doh-sg.blahdns.com/dns-query
dot-sg.blahdns.com
不支持
CleanBrowsing
185.228.168.9 185.228.169.9
https://doh.cleanbrowsing.org/doh/security-filter/
security-filter-dns.cleanbrowsing.org
不支持
Block malware
76.76.2.1
https://freedns.controld.com/p1
tls://p1.freedns.controld.com
不支持
DeCloudUs 
78.47.212.211:9443
https://dns.decloudus.com/dns-query
tls://dns.decloudus.com
不支持
Mullvad(新加坡)
-
https://dns.mullvad.net/dns-query
tls://dns.mullvad.net
不支持

仅作测试使用的DNS服务器

以下DNS服务器是仅作测试使用的DNS服务器,不建议作为日常主力使用DNS解析服务,推荐仅在测试时进行使用,或作为落地区域的DNS使用。这些DNS服务大多不提供DOH或DOT选项,且在直连情况下存在延迟较高、丢包较多等不稳定因素。
DNS服务名称
标准DNS地址
DoH地址
DoT地址
是否支持H3
ECS
HKBN DNS
203.80.96.10 / 203.80.96.9
不支持
不支持
不支持
NTT Communications DNS
61.213.169.170 / 61.213.169.171
不支持
不支持
不支持
NEC BIGLOBE DNS
202.225.96.66 / 202.225.96.68
不支持
不支持
不支持
Yahoo Japan DNS
182.22.70.1 / 182.22.70.2
不支持
不支持
不支持
DNS.SB
45.11.45.11
https://doh.dns.sb/dns-query
dot.sb
不支持
腾讯国际
162.14.21.178/ 162.14.21.56
不支持,可通过腾讯云套娃DOH
不支持,可通过腾讯云套娃DOT
不支持
Microsoft DNS / Level 3 Communications
4.2.2.2 / 4.2.2.1
不支持
不支持
不支持
HiNet/中華電信
168.95.1.1 / 168.95.192.1
不支持
不支持
不支持
TWNIC Quad101 Public DNS
101.101.101.101 / 101.102.103.104
不支持
不支持
不支持

DNS延迟测试脚本

这个Python脚本需要ping3依赖,复制以上代码并保存为*.py文件,通过命令行运行。可替换IP地址为自己想要进行测速的DNS的IP地址,每个DNS的IP地址Ping次数默认为4 。脚本的注释算是清晰,可根据自己需要在脚本中修改。

非公共DNS服务(增强型DNS服务

这里的非公共DNS是指提供具有用户唯一标识的DNS服务,允许用户自定义DNS过滤与隐私保护,提供访问控制,提供查询日志,提供部分路由优化等。相较于免费的公共DNS服务,这种DNS服务在部分情况下访问速度可能会更好一些。基础的DOH、DOT、DNSSEC、ECS基本都支持。
  • XNS.One(NovaXNS)提供可定制的DNS服务使用,属于付费的DNS服务,邀请制,目前需要邀请码才可以注册,可以在他们的Telegram频道蹲一下,也可以使用我的邀请:https://dash.xns.one/invite/41303c9a-9ae7-40a1-9f3b-e1e4f46d99e0(该XNS邀请已被使用)付费不支持支付宝与微信,只能信用卡付款。已支持支付宝付款,Pro版本年付费$11.99,基础版本$5.99。DNS接入区域包括香港2个,日本1个,韩国一个,vxCDN以及CloudNexus各1,目前已经完全能够满足我的需要。相应速度与返回解析结果速度、精准度都不错。同时支持分区域的大陆优化,在处于CDN网络情况下尽可能的使用速度最快的解析结果。
  • NextDNS我目前主要使用的DNS服务,免费版每个月提供30万次查询,基本够日常使用。可定制拦截列表。
  • AdGuard DNS,与NextDNS类似,免费版每个月提供30万次查询,允许配置5个接入点,2个服务器,支持配置100条自定义规则。

📝 其他关于DNS的参考信息

enable_pipeline: TCP/DoT使用RFC 7766新的query pipelining连接复用模式。
  • 启用后可大幅提高连接利用率,减少建立连接/握手的次数,进而降低响应延时。
  • 并非所有DNS服务器都支持。必须确定DNS服务器支持后再启用该选项。
  • Tips: 已知Google和Cloudflare的TCP/DoT是支持该模式的。知名的公共DNS服务商大多数都支持该模式。如果你使用MosDNS,可以使用 mosdns probe pipeline {tcp|tls}://server_ip[:port] 测试命令测试服务器是否支持。比如 mosdns probe pipeline tls://8.8.8.8

什么是ECS(EDNS Client Subnet)?

ECS(EDNS Client Subnet)是扩展DNS查询的一种机制,旨在提升内容分发网络(CDN)和地理位置相关的服务的效率。通常DNS服务器只看到客户端的IP地址,但通过ECS,DNS请求会包含客户端IP的一部分(子网信息)。这样,内容分发网络可以根据客户端的地理位置,返回更接近用户的服务器,减少延迟,提升性能。ECS主要用于优化网络和加速服务的访问,但也可能带来一定的隐私泄露风险。

什么是DOH(DNS over HTTPS)?

DoH(DNS over HTTPS)是一种技术,用来加密你的DNS查询。通常情况下(UDP及TCP协议情况下),DNS查询是明文的,容易被ISP运营商看到和监控。而DoH会通过HTTPS协议加密这些查询,确保你的请求内容是安全的,不会被ISP和运营商偷看。就像你在发送加密的信息一样,DoH保护了你上网时的隐私,并在一定程度上可以避免DNS劫持。

什么是ECH(Encrypted Client Hello)?

ECH(Encrypted Client Hello)是一种技术,用来加密你访问网站时的SNI(服务器名称指示)信息。通常情况下,当你想访问某个网站时,这个请求是明文的,运营商或其他第三方可以轻易看到你在访问什么网站,并可能进行拦截或阻断(例如SNI阻断)。这也是为什么有时你在国内访问GitHub和Linux.DO会遇到Time Out问题的原因之一。有了ECH,这些SNI信息就被加密了,外面的人就看不到你要访问哪个网站,从而提高了你的隐私和安全性。简单来说,ECH就像是在发送加密的信息,让你的浏览行为更加私密。

什么是DNSSEC(Domain Name System Security Extensions)?

DNSSEC(Domain Name System Security Extensions)是DNS系统的安全扩展协议,通过数字签名技术来确保DNS记录的真实性和完整性。它通过建立从根域名到下级域名的信任链,使用公私钥对对DNS记录进行签名和验证,能有效防止DNS欺骗和缓存污染。DNSSEC引入了几个关键记录类型:DNSKEY用于存储域名公钥,RRSIG包含数字签名信息,DS记录用于下级域委派签名,以及NSEC/NSEC3用于提供域名不存在的证明。虽然DNSSEC的配置较为复杂,可能增加DNS服务器负载并导致响应包变大,但它在防止DNS劫持和欺骗方面发挥着重要作用,目前已得到Google DNS (8.8.8.8)和Cloudflare (1.1.1.1)等主流公共DNS服务器的支持。

其他关于DNS选择的文章?

NovaXNS邀请码

 
💡
有关DNS上的问题,欢迎您在底部评论区留言,一起交流~
  •  

Moonlight Android v11.0 更新

2023年3月12日 08:00
🎮
更新日期:2023年3月5日
本次更新主要为修复对Sunshine服务端的支持各种支持问题。如果服务端使用Geforce Experience情况下,稳定无问题,非必要不进行更新。
 

📝 更新内容

 
通过本次更新,未来Moonlight应该会将更多的注意力放在Sunshine作为服务端情况下,毕竟Geforce Experience Shield已经很多没有更新了,未来也可能会取消支持。
  • 增加对Sunshine hosts的横向滚动支持
  • 增强了从Sunshine hosts流媒体时的HDR色调映射
  • 通过增加输入轮询速率,降低了输入延迟
  • 在软件键盘中添加了非ASCII字符输入支持
  • 修复了在同一台电脑上检测Sunshine作为服务端和GFE(Geforce Experience)同时运行时出现的问题
  • 修复了在某些Chrome OS设备上相对鼠标模式不起作用的问题
  • 修复了在Wake-on-LAN成功后仍出现错误消息的问题
  • 修复了处理地址包含下划线的PC时出现的一个错误
  • 修复了在流媒体时可能导致Chromecast进入24 Hz模式的错误
  • 修复了在某些设备上触摸屏触控板模式切换不显示的问题
APK提供两种,root和未root的APK不同,详细可进下面Github Release页面查看。
Github

📝 2025年11月26日更新

由于我使用Onn 4K Pro盒子,该盒子使用的芯片为晶晨S905X4,即便该芯片宣称支持HEVC(H.265)及AV1,但在Moonligjht串流中实际表现并不可用,包括例如画面定格、黑屏、声音卡顿等情况,且后续Moonlight开发者并无针对修复计划,并提示避免使用该芯片的产品(原文连接:https://github.com/ClassicOldSong/moonlight-android/issues/448)。
如果已经购买该芯片的产品,可以强制使用H.264模式,尽管解码延迟及带宽消耗较高,但可正常使用。
  •  
❌