1
rulagiti 122 天前
mosdns yyds
|
2
povsister 122 天前 via iPhone
fakeip 谈不上精巧,现在一堆软件都提供打包解决方案。这个方案核心不在于要不要自建 dns ,核心在于你如何做 dns 分流,国内用运营商 dns 总是最好的,海外直接走梯子过 cf/google 落地区域的 dns 就行了。
|
3
lxh1983 122 天前
这相当于为了喝口牛奶养了头奶牛
|
4
chenbin36255 OP @povsister 个人感觉还是不错的思路 至少这个分流可以做到完全不影响国内的访问 所有非 CN 域名解析通过静态路由全部由 fake ip 网关处理
|
5
araaaa 122 天前
自己写的监听 127.0.0.1:53 ,通过 adblock 列表转到不同的 dns server 上
|
6
chenbin36255 OP @povsister 运营商的 dns 还是担忧劫持的风险 公共 dns 又纷纷限速 自建的话还是比较需要的
|
7
chenbin36255 OP @araaaa 国内的流量也是经过科学网关出吗
|
8
lin41411 122 天前
@chenbin36255 #6
劫持可能只占你日常访问的 0.01%甚至远远低于 0.01%,单独把 0.01%的域名单独指定可信的 dns 来解析就好。不要大费周章去解决那些低概率事件。 |
9
araaaa 122 天前
@chenbin36255 #7 不过,国外 dns server 过
|
10
maybeonly 122 天前
分流说白了都是名单问题。
dns 真的很难有可靠的名单,简单一点的话有相对可靠的墙内 ip 列表(前不久还刚刚修理了一下我家用的版本) 我的做法是:自建递归(我用了 bind ,用什么都行),然后 53 端口根据 ip 列表走 ip 分流。 考虑到性能问题,前面还有一层 dnsmasq ,把简单的墙内白名单指向运营商,把简单的墙内黑名单指向可信 dns 原理的话,dns 解析都是递归的,从根域名开始。 省略根、.com 的解析过程: 比如解析 www.baidu.com ,拿到 ns1.baidu.com 之后,你的递归会给 ns1.baidu.com ,也就是 110.242.68.134 发送请求,这个请求是通过直连发出去的,那么他看到的当然就是你的墙内 ip 。 又如解析 www.google.com ,每一步都是通过梯子出去,墙内完全不知道你在解析什么……最后 google 看见的你的请求来源也是梯子出口的 ip 。 我的玩法比他精巧不? fakeip 还是算了,太假,个人表示不喜欢。 |
11
NoOneNoBody 122 天前
如果真的非常需要每次请求都精确且实时,就建吧
我就 client 改个 TTL 直接 cache 一天,就第一次慢而已,二次开始就快了,如果出现错误就重启清 cache 再来 要走梯子的那些也跟这个无关 |
12
shenjinpeng 122 天前
对分流需求不高, 一般回去就刷刷视频玩玩游戏, 只是用 adguard home 代替了 hosts 文件 让局域网所有设备直接解析跳转方便开发 ,并且拦截了部分广告 dns
|
13
chenbin36255 OP @maybeonly 我可能没有说清楚 我说的精巧不是 dns 的分流
是通过 dns 把非大陆 IP 解析成 FAKE IP 然后直接转发到科学网关 实现了国内流量直接走主路由 外网流量走科学网关 不需要让科学网关处理国内的流量 降低延迟和性能 而且不会有节点挂掉全家断网的风险 这个思路是比较巧妙的 |
14
povsister 122 天前 via iPhone
@maybeonly
正解,用一份黑名单,无条件走海外 dns ,剩下的走国内,不用去赌那 0.0001%的漏网之鱼。 不过,黑名单以外的网站我是用国内解析一遍,如果是国内 ip 就采用,如果是海外 ip ,就用地理位置较近的海外机器再解析一遍,以海外结果为准。 dns 泄露?只要你不是 50w 真有人查这东西吗 |
16
maybeonly 122 天前
@chenbin36255
emmmm 直连用 fakeip 就更奇怪了 所以说有可靠 ip 列表的前提下用路由表直接分流啊 路由表本来就可以让一部分流量直接过去的 科学网关坏掉为什么会全家断网?因为大部分梯子都是为了单机而不是路由器上用的 所以他们实际上做了调度器+隧道的组合,而良好的路由器上运行的梯子应该把调度器和隧道分开, 甚至把不过梯部分和梯子调度器进一步分开。 关于这方面的问题,我的解决方案是 /t/1034955 |
17
yyysuo 122 天前
fake 网关现在已经很流行了,opn 、op 、爱快、ros 都可以实现,op 最简单。
|
18
yyysuo 122 天前
粘个 mosdns 的 fakeip 分流法配置
log: level: error file: "/tmp/mosdns.log" api: http: "0.0.0.0:9091" include: [] plugins: - tag: hosts type: hosts args: files: - "/etc/mosdns/rule/hosts.txt" - tag: geosite_cn type: domain_set args: files: - "/etc/mosdns/unpack/geosite_cn.txt" - tag: geoip_cn type: ip_set args: files: - "/etc/mosdns/unpack/geoip_cn.txt" - tag: geosite_no_cn type: domain_set args: files: - "/etc/mosdns/unpack/geosite_geolocation-!cn.txt" - tag: whitelist type: domain_set args: files: - "/etc/mosdns/rule/whitelist.txt" - tag: blocklist type: domain_set args: files: - "/etc/mosdns/rule/blocklist.txt" - tag: greylist type: domain_set args: files: - "/etc/mosdns/rule/greylist.txt" - tag: forward_cf type: forward args: concurrent: 1 upstreams: - addr: "tls://8.8.8.8:853" idle_timeout: 3600000 - tag: forward_local type: forward args: concurrent: 1 upstreams: - addr: "tls://223.5.5.5:853" idle_timeout: 3600000 - tag: forward_remote type: forward args: concurrent: 1 upstreams: - addr: "tcp://127.0.0.1:7874" #sing-box fakeip server - tag: main_sequence type: sequence args: - matches: "!qtype 1 16 28 33" exec: reject 0 - exec: $hosts - matches: has_resp exec: ttl 600000 - matches: has_resp exec: accept - matches: qname $blocklist exec: reject 0 - matches: qname $whitelist exec: $forward_local - matches: has_resp exec: accept - matches: qname $greylist exec: $forward_remote - matches: has_resp exec: accept - matches: qname $geosite_cn exec: $forward_local - matches: has_resp exec: accept - matches: "qtype 16 33" exec: $forward_cf - matches: has_resp exec: accept - matches: qname $geosite_no_cn exec: $forward_remote - matches: has_resp exec: accept - exec: ecs 你所在城市的 IPV4 地址 - exec: $forward_cf - matches: "!resp_ip 0.0.0.0/0 2000::/3" exec: accept - matches: "!resp_ip $geoip_cn" exec: $forward_remote - tag: udp_server type: udp_server args: entry: main_sequence listen: ":5454" - tag: tcp_server type: tcp_server args: entry: main_sequence listen: ":5454" |
19
chenbin36255 OP @maybeonly #16 直连是 real ip 的 把非 cn 的做 fake ip
你的方案是个高度定制化且复杂的网络架构 而且纯 cli 的配置对于大部分用户来说可能过于复杂了 |
20
samIIsun 122 天前
在用方案:mwan3,dnsmasq,ipset
|
23
tsanie 122 天前
在墙内解析获得一个黑名单域名的真实 ip 没有必要且耗时,所以 fakeip 才能流行起来。
|
24
sleepm 122 天前
没必要
fakeip 是因为 访问一个网站,域名解析为 ip 如果 dns 返回的 ip 是被污染的,体验不好(打不开) 如果没有被污染,但是 ecs 是相对于用户的,不是相对于落地,体验也不好(速度慢) fakeip 把域名对应关系交给内核,但是直连的体验就不行了 dns 分别解析,就可以不需要 fakeip ( mihomo dns mode 支持 normal ,也就是单纯 dns 转发) 运营商的 dns ,因为不止你一个用户在用,同地区几百上千个人在用,大部分解析都直接命中缓存,速度最快,结果最优 |
26
zhu327808 122 天前
完全没必要,只算国内网站的话,运营商 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/ |
27
yyysuo 122 天前
@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 } } |
29
povsister 122 天前 via iPhone
@yyysuo 国内 dns 先解析一次的作用,是在不写过多 domain rule 的情况下,尽可能优选节点,同时避免 dns 污染。
国内 dns 可以保证如果目标网站国内有节点,可以直接访问,同时碰到 dns 污染( 99%的 dns 污染返回的是海外 ip )时,会自动调用海外 dns |
30
frankilla 122 天前
我的看法就是瞎折腾。
|
31
winson030 122 天前 via iPhone
@samIIsun 卧槽那真是太好了!可以给我几个搜索的关键词或者网页或者教程吗?我现在想实现在 op 主路由里完成国内外分流,像 router os 那样。
|
32
zzzmode 122 天前
构建自己的域名黑名单列表,黑名单列表的域名也没有必要再解析,直接代理服务器自己处理
|
33
povsister 122 天前
@winson030
routeros 里,也没法实现基于域名的国内外分流啊(摊手 maybe 大佬的方案本质是 DNS route + conn-track ,分离策略和流量隧道,二者之间依赖路由表决策,而路由表由策略层控制(即 DNS route ) |
34
ellermister 121 天前 via Android
@zhu327808 我没有考虑到 fakeip 是因为他返回的假 ip 让我调试测试,开发时很懵逼。无法知道命中的哪台服务器。
我现在有一个问题,我的 dns 解析的基本没问题,但是 ssrp 不会的代理我的 ipv6 。 有没有简单的办法可以让我的部分 ipv6(黑名单/海外 ip)走代理。或者某些域名,直接不解析 ipv6(op 只有全部开启或者关闭的按钮) |
35
yyysuo 121 天前
@povsister 我没说清楚,列表外的域名,就不用写 rule 了,直接国外就行,这样不会有过多的 rule ,我比较的是带 ecs 通过代理走 8888 的速度,和列表外的域名(小众)直接走国内 dns 的情况,两者速度,8888 反而有优势(几十 ms ),国内 dns 反而有时候会上千 ms 。
|
36
yyysuo 121 天前
列表外的这么搞,如果是中国 IP ,直接就使用,如果是国外 IP ,直接发 fakeip 再去远程解析就行了。
|
37
samIIsun 121 天前
@winson030 FYI: https://blog.csdn.net/Cx2008Lxl/article/details/126670228
总体用到组件 mwan3 ,dnsmasq-full ,ipset |
38
zhu327808 121 天前
@ellermister 可以看我之前的方案链接里,代理域名可以用 smartdns 把 ipv6 SOA 掉,只返回 ipv4
|
39
batilo 116 天前
没必要吧。
|
40
chenbin36255 OP @batilo paopaodns+paopaogatway 已经搭好了 在 ikuai 里面用 docker+虚拟机 算下来 30 分钟就搞定了 已经稳定运行一周 非常丝滑 不再需要 openwrt 旁路由
|
42
Kale 108 天前
可以 MOSDNS 作为 ADH 的上游。
|
45
txydhr 67 天前 via iPhone
自建解析速度很慢,很影响体验
|