想用Windows版mosdns做一个广告过滤器,不知该如何下手 #711
Unanswered
SuXiChao1101
asked this question in
Q&A
Replies: 2 comments 1 reply
-
首先你需要把你说的那个hosts.txt转换一下,因为mosdns的hosts不是这样格式的。我给你示范用linux的sed命令来转换成domain-set: curl https://adaway.org/hosts.txt -o hosts.txt
sed 's/.* localhost//g' hosts.txt | sed 's/127.0.0.1 /full:/g' | sed 's/^#.*//g' | awk 'NF' > ad-hosts.txt 把ad-hosts.txt和下面这个config.yaml还有mosdns v5版本可执行文件放在同一个目录下就可以了。 v5版本的配置文件示例如下: # 日志设置
log:
level: info # 日志级别。可选 "debug" "info" "warn" "error"。默认 "info"。
# 插件设置
plugins:
- tag: "blocklist" # 定义一个tag,用来装载广告主机列表
type: "domain_set" # 因为是域名,不是ip,所以type是domain_set
args:
files: # 从文本文件载入
- "ad-hosts.txt"
- tag: "resolve"
type: "forward"
args:
concurrent: 1 # 并发1: 从下面的upstreams随机选取一个来请求
# 可以根据需要设置,比如设成2就会同时请求2个upstream
upstreams: # []upstream, 上游服务器。至少要配置一个。
- tag: alidns_udp # 这是阿里的UDP协议DNS服务器
addr: "223.5.5.5"
- tag: ali_doh # 这是阿里的DoH协议DNS服务器
addr: "https://dns.alidns.com/dns-query"
dial_addr: "223.5.5.5" # 对于addr是域名的,就要指定域名的IP地址
- tag: "main_sequence"
type: "sequence"
args: # []rule
- matches:
- qname $blocklist # 匹配广告域名
exec: reject 3 # DNS回应代码3: NXDOMAIN
- exec: $resolve # 其他的交给解析插件去解析
- tag: "udp"
type: "udp_server"
args:
entry: main_sequence # 可执行插件的 tag。
listen: 127.0.0.1:53 # 监听地址。 |
Beta Was this translation helpful? Give feedback.
1 reply
-
windows的定期更新广告主机文件很难办,linux的话用cron或者systemd.timer都很容易做到。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
之前用了ADGuardHome的Windows版,然后将自己的电脑设置为127.0.0.1就可以实现指定DoH解析和广告过滤了,甚至用同一内网的其他设备指定DNS为这台电脑的内网IP也可以实现指定DoH解析和过滤广告,但是最近ADGuardHome不知为何启动失败了,于是就想用mosdns来代替。
但是看了下mosdns的wiki,我有点发懵,可能是我的技术力实在是太糟糕了,不知道该如何去编写一份适合自己的config.yaml配置文件。同时我也看了其他的discussions,但是大多是为了让mosdns实现DNS分流准备的,可能我没有太多的分流需求,所以无法参考。所以想来请教一下大家。
大概的需求就是使用阿里DNS解析,然后配合https://adaway.org/hosts.txt的过滤广告规则,同时让这个规则48小时更新一次就可以了,不知道能不能在mosdns上实现...
小白实在太菜了,所以特地来请教下各位大佬,谢谢大家
Beta Was this translation helpful? Give feedback.
All reactions