家庭用户有必要自建递归 dns 吗

2024-08-22 09:53:35 +08:00
 chenbin36255
RT https://blog.03k.org/post/paopaodns.html
看了这位大佬的 blog 使用 paopaodns 自建 dns+paopaogateway FAKE IP 网关
使用静态路由映射的方式实现国内外的域名分流
从原理上看是很精巧的分流方式

另外 DNS 解析的速度不太好判断
如何判断 dns 的解析速度和准确性呢
6768 次点击
所在节点    DNS
45 条回复
winson030
2024-08-22 15:49:11 +08:00
@maybeonly 想问一下 openwrt 能不能实现这个?
samIIsun
2024-08-22 16:05:26 +08:00
@winson030 (不请自答) 可以
tsanie
2024-08-22 16:13:26 +08:00
在墙内解析获得一个黑名单域名的真实 ip 没有必要且耗时,所以 fakeip 才能流行起来。
sleepm
2024-08-22 16:16:24 +08:00
没必要
fakeip 是因为
访问一个网站,域名解析为 ip
如果 dns 返回的 ip 是被污染的,体验不好(打不开)
如果没有被污染,但是 ecs 是相对于用户的,不是相对于落地,体验也不好(速度慢)
fakeip 把域名对应关系交给内核,但是直连的体验就不行了
dns 分别解析,就可以不需要 fakeip ( mihomo dns mode 支持 normal ,也就是单纯 dns 转发)
运营商的 dns ,因为不止你一个用户在用,同地区几百上千个人在用,大部分解析都直接命中缓存,速度最快,结果最优
yyysuo
2024-08-22 16:42:31 +08:00
@povsister 最近也尝试了用国内 dns 去解析列表外的域名,发现还不如好的代理呢,小众的域名,国内 dns 查起来也很慢的。
zhu327808
2024-08-22 16:48:50 +08:00
完全没必要,只算国内网站的话,运营商 dns 返回的 ip 往往是最合适的,需要做的是在 dnsmaq 上做 gfwlist 的 dns 分流,分流到提供 fake ip 解析的服务器上,比如直接用 v2ray/xray 内置的 dns 返回 fakeip ,分享我的一个透明代理方案吧,对路由器的要求非常低

https://zhu327.github.io/2023/12/23/%E9%80%8F%E6%98%8E%E4%BB%A3%E7%90%86%E5%AE%9E%E8%B7%B5%E6%8A%80%E6%9C%AF%E5%B0%8F%E7%BB%93%E4%B8%8E%E6%96%B9%E6%A1%88%E6%BC%94%E8%BF%9B/
yyysuo
2024-08-22 17:10:18 +08:00
@zhu327808 本质上都是按 fakeip 分流了,不管是本机用 ipt 、nft ,还是静态路由到旁路,其实没有太大的区别,都是先按域名分成 fakeip 和 realip ,体验的区别主要是分流的精细度,你的方案对于列表外的域名是怎么分的?可以看看我的
方案

https://v2ex.com/t/1057357

再分享一个 nft 的规则,我简化了一下,没有写奈飞 ip 电报 ip 的国外公共 dns ip ,可以自己按需添加。

table inet singbox {
set local_ipv4 {
type ipv4_addr
flags interval
elements = {
28.0.0.0/8
}
}

set local_ipv6 {
type ipv6_addr
flags interval
elements = {
fc00::/18
}
}

set router_ipv4 {
type ipv4_addr
flags interval
elements = {
28.0.0.0/8
}
}

set router_ipv6 {
type ipv6_addr
flags interval
elements = {
fc00::/18
}
}

chain singbox-tproxy {
meta l4proto udp meta mark set 1 tproxy to :7895 accept
}

chain singbox-mark {
meta mark set 1
}

chain mangle-prerouting {
type filter hook prerouting priority mangle; policy accept;
ip daddr @local_ipv4 meta l4proto udp ct direction original goto singbox-tproxy
ip6 daddr @local_ipv6 meta l4proto udp ct direction original goto singbox-tproxy
}

chain mangle-output {
type route hook output priority mangle; policy accept;
ip daddr @router_ipv4 meta l4proto udp ct direction original goto singbox-mark
ip6 daddr @router_ipv6 meta l4proto udp ct direction original goto singbox-mark
}

chain nat-prerouting {
type nat hook prerouting priority dstnat; policy accept;
ip daddr @local_ipv4 meta l4proto tcp redirect to :7899
ip6 daddr @local_ipv6 meta l4proto tcp redirect to :7899
}

chain nat-output {
type nat hook output priority filter; policy accept;
ip daddr @router_ipv4 meta l4proto tcp redirect to :7899
ip6 daddr @router_ipv6 meta l4proto tcp redirect to :7899
}
}
zhu327808
2024-08-22 17:20:07 +08:00
@yyysuo 列表外直接走默认运营商 dns ,ipv4 也好,ipv6 也好都没关系的
povsister
2024-08-22 17:39:50 +08:00
@yyysuo 国内 dns 先解析一次的作用,是在不写过多 domain rule 的情况下,尽可能优选节点,同时避免 dns 污染。
国内 dns 可以保证如果目标网站国内有节点,可以直接访问,同时碰到 dns 污染( 99%的 dns 污染返回的是海外 ip )时,会自动调用海外 dns
frankilla
2024-08-22 18:02:57 +08:00
我的看法就是瞎折腾。
winson030
2024-08-22 19:11:45 +08:00
@samIIsun 卧槽那真是太好了!可以给我几个搜索的关键词或者网页或者教程吗?我现在想实现在 op 主路由里完成国内外分流,像 router os 那样。
zzzmode
2024-08-22 19:16:09 +08:00
构建自己的域名黑名单列表,黑名单列表的域名也没有必要再解析,直接代理服务器自己处理
povsister
2024-08-22 19:23:10 +08:00
@winson030
routeros 里,也没法实现基于域名的国内外分流啊(摊手
maybe 大佬的方案本质是 DNS route + conn-track ,分离策略和流量隧道,二者之间依赖路由表决策,而路由表由策略层控制(即 DNS route )
ellermister
2024-08-23 04:14:45 +08:00
@zhu327808 我没有考虑到 fakeip 是因为他返回的假 ip 让我调试测试,开发时很懵逼。无法知道命中的哪台服务器。


我现在有一个问题,我的 dns 解析的基本没问题,但是 ssrp 不会的代理我的 ipv6 。

有没有简单的办法可以让我的部分 ipv6(黑名单/海外 ip)走代理。或者某些域名,直接不解析 ipv6(op 只有全部开启或者关闭的按钮)
yyysuo
2024-08-23 08:10:56 +08:00
@povsister 我没说清楚,列表外的域名,就不用写 rule 了,直接国外就行,这样不会有过多的 rule ,我比较的是带 ecs 通过代理走 8888 的速度,和列表外的域名(小众)直接走国内 dns 的情况,两者速度,8888 反而有优势(几十 ms ),国内 dns 反而有时候会上千 ms 。
yyysuo
2024-08-23 08:13:49 +08:00
列表外的这么搞,如果是中国 IP ,直接就使用,如果是国外 IP ,直接发 fakeip 再去远程解析就行了。
samIIsun
2024-08-23 10:47:18 +08:00
@winson030 FYI: https://blog.csdn.net/Cx2008Lxl/article/details/126670228
总体用到组件 mwan3 ,dnsmasq-full ,ipset
zhu327808
2024-08-23 11:51:35 +08:00
@ellermister 可以看我之前的方案链接里,代理域名可以用 smartdns 把 ipv6 SOA 掉,只返回 ipv4
batilo
2024-08-28 21:15:36 +08:00
没必要吧。
chenbin36255
2024-08-29 11:12:39 +08:00
@batilo paopaodns+paopaogatway 已经搭好了 在 ikuai 里面用 docker+虚拟机 算下来 30 分钟就搞定了 已经稳定运行一周 非常丝滑 不再需要 openwrt 旁路由

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066895

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX