某宽带,有 53 端口劫持,所以我打算在路由器上用 iptables 将 53 端口的流量劫持到其它端口以避免被 ISP 劫持。
但国内好用的公共 DNS 都没提供非标准端口,只好在自己的服务器上建个 DNS,设为非标准端口(如 10086 )来转发查询。
但这样又有问题,因为服务器离家太远,解析出来的地址并不是家里宽带的最优 IP,在使用 CDN 等服务时明显降速。
有没有办法让自建的服务器获取家里宽带本应获得的解析结果呢?
1
miaomiao888 2019-10-03 23:41:30 +08:00
dnschooser
|
2
ruidoBlanco 2019-10-04 09:31:47 +08:00
tcp 查询:unbound,pdnsd
DNS over TLS:dnscrypt |
3
lookas2001 2019-10-04 09:58:03 +08:00 via Android
你本地的 dns 往往是最快的,并且 cdn 调度最准的。所以一般使用本地 dns 就好了。
dns 不会劫持有 https 的网站的,因为 isp 无法伪造证书。(进而一般不会污染国内的结果) 如果你不喜欢有些不存在的域名被跳转到运营商的广告页,你可以在本地部署一个 dnsmasq 服务器,观察一下广告页 ip 特征,将那些 ip 拉到黑名单即可。 如果你不希望被查询国外网站被污染,你可以在本地部署一个 chinadns 以及 gfwlist,这就是路由器翻墙的那一套。 如果你不希望访问 http 网站的时候被插入广告,改 dns 是没用的,你需要在网关上自己写写脚本,删除运营商插入的那些 js |
4
lookas2001 2019-10-04 10:06:43 +08:00 via Android
抱歉,可能我把这个事情想的太简单了,用 dns-forwarder,udp 转成 tcp 交给各大 dns 查询吧。
|
5
heqiaokyou 2019-10-04 11:23:53 +08:00 via Android
其实这个我是想先问下你这么搞的需求,因为一般情况下就算运营商无差别劫持 53 口也不会影响你上国内的网站。如果是高速上网需求那全部交给国外的服务器处理就好。
我原本是靠 overture 来解决 dns 分流和污染以及劫持的问题,后来发现其实没必要这样做,能交给国外服务器做的直接交给它就行。 |
6
derekwei 2019-10-04 11:29:42 +08:00
@miaomiao888 这个项目似乎已经停止了?
|
7
lihongming OP @heqiaokyou 说下这么做的原因——宽带商是个小 ISP,我猜劫持是为了缓存,但它的 DNS 不好使,大站没问题,小站(国内 IP )很多解析不出来(多刷几次有时能成功解析)
|
8
heqiaokyou 2019-10-04 14:17:46 +08:00
@lihongming 明白了,那样我建议在内网里搭个 DOH 用红鱼 DNS 吧。
|
9
deorth 2019-10-04 19:02:15 +08:00
我现在就是在内网弄个 dnsmasq,转发到 opendns 的 443,没污染也能正确 CDN
|
10
wd 2019-10-04 22:55:46 +08:00 via iPhone
不太明白 劫持为啥一定需要非标准端口?我劫持支持转发到 114 没什么问题啊?你的问题是啥?
|
11
jousca 2019-10-04 23:27:13 +08:00
DNS ANGENT,开启 HTTP DNS,使用 119.29.29.29 的 HTTP DNS 功能解决污染问题。
|
12
brMu 2019-10-05 08:02:30 +08:00 via Android
我目前的方案:dnsmasq+smartdns(tcp 方式),smartdns 的优点是支持几个 dns 并发查询,和 prefetch 功能。
|
13
adamw 2019-10-08 19:13:54 +08:00
目前 adguard+chinadns+dnsmasq,感觉还好…
|