请教下有没有这样一种 DNS 解析工具,可能定义地址池的,根据地址池的不同,使用不同的公共 DNS 来解析?

2023-11-28 09:26:10 +08:00
 echoo00
背景:外企,有两条互联网线路,一条出口在国内,一条出口在日本;流量默认从日本走,DNS 默认是域控的地址,上游默认查询 8.8.8.8

遇到的问题:因为所有的 DNS 查询默读都是从日本出去的,返回的 IP 地址也绝大多数是国外的 IP ,这样访问国内一些政府网站,或者比较大的有 CDN 的网站时,默认就是日本绕回来访问,一些网站的样式无法正常显示;财务和 HR 同事日常使用这类系统/网站比较多,有较多的抱怨,临时方案是拉了条 ADSL 线他们用,要上国内网站就连这条 ADSL 放出来的 SSID ;

需求:有没有一个 wiin 系统下的软件,可以自定义一个域名池,这个池子里的域名固定去 223.5.5.5 解析,其他默认的该怎么走怎么走
网络上有负载均衡设备可以实现上述功能,但目前公司不太愿意投资,我只是想方便我自己使用,来找这么一个软件测试下,谢谢!
4990 次点击
所在节点    DNS
49 条回复
zbatman
2023-11-28 09:30:11 +08:00
mosdns ?
FrankAdler
2023-11-28 09:45:14 +08:00
dnsmasq 也可以做到,iptables 重定向 dns 也能做的
soukiya
2023-11-28 09:45:39 +08:00
DNS 分流? Mac 和 iOS 下好实现,类似于你的要求的?: https://github.com/VirgilClyne/GetSomeFries/wiki/%F0%9F%8C%90-DNS#%E7%AE%80%E4%BB%8B
Win 端 Clash 的 fake ip 也能够实现 DNS 分流:
https://blog.lv5.moe/p/use-dns-to-create-split-routing-for-different-domain-or-ip-ranges
artnowben
2023-11-28 09:50:54 +08:00
部署一个内网 DNS 服务器,在服务器上去实现这个特性
lifei6671
2023-11-28 09:58:07 +08:00
你说的是 SmartDNS 吧,支持自定义分组解析,自定义域名解析。
crac
2023-11-28 09:59:09 +08:00
SmartDNS 可以 我就这么用的, 各家的服务用各家自己的 DNS, 效果非常好
tool2d
2023-11-28 09:59:45 +08:00
弄个软路由可以做到,我在公司的出口安装了一个 IP 包过滤器,自己写了一个 DNS UDP 抢答模块,只要是国内的域名不查询网络,直接用缓存里数据就返回了。

如果你自己电脑用,干脆写一个 hosts 文件管理,定期更新,更简单。
sadfQED2
2023-11-28 10:00:18 +08:00
echoo00
2023-11-28 10:02:10 +08:00
多谢各位的建议,我去试一下各位提到的方案先
stcQ2G13k9yxep40
2023-11-28 10:47:17 +08:00
内网中搭建 Smartdns 或 Mosdns 分流服务,AD 域的 DNS 服务器中把首选转发器设置为分流 DNS 的地址,然后分流服务中设置好上游 DNS 服务器(国内 223.5.5.5/119.29.29.29 )和远程 DNS 服务器(国外 8.8.8.8/1.1.1.1 ),然后每天更新 GeoIP & GeoSite 数据库。
mouyase
2023-11-28 10:48:04 +08:00
adguard home 也能实现(
stcQ2G13k9yxep40
2023-11-28 10:49:19 +08:00
@qishouvip2022 我现在的做法是虚拟化平台上,新建两台虚拟机,同时部署了 Smartdns 和 Openwrt (开启 Mosdns ),AD 域的 DNS 服务器的转发器设置为 Smartdns 和 Openwrt 的 IP 。
A1188
2023-11-28 11:01:16 +08:00
yyzh
2023-11-28 11:04:41 +08:00
同外企,我们用的是 CITIC 的网络解决方案,DNS 和分流全都由他们处理好.
echoo00
2023-11-28 11:15:46 +08:00
目前是我自己用,只能在自己的笔记本上折腾,企业级的方案有不少,但很多东西都要总部来决定,总部又觉得我国是一个管控比较严的国家,也怕泄密,管理员权限都不给我们,没办法部署其他服务器,或者添加其他设备
Mrealy
2023-11-28 11:16:22 +08:00
@yyzh #14 我公司也用他们的线路也没有看到他们有啥 DNS 方案,我们自建 DNS 的用的 dnsmasq 加 dnsforward
Puteulanus
2023-11-28 11:17:04 +08:00
https://www.appinn.com/acrylic/
Windows 的我们之前用过这个,作为最前面的分流 DNS ,顺便可以支持通配 hosts
yyzh
2023-11-28 11:26:15 +08:00
@Mrealy 那可能是你们的套餐不支持或者客户经理没说?我们这的客户经理特别提醒过要把域 DNS 的上游调成他们的 DNS.
kursk
2023-11-28 11:36:32 +08:00
linux 下使用 dnsmasq + (nftables)iptables + ipset 可以完美解决

dnsmasq 的配置如下

server=/facebook.net/8.8.8.8#53
nftset=/facebook.net/4#inet#wgcross#crs_dst

server=/163.net/223.5.5.5#53
nftset=/163.net/4#inet#wgcross#cn

server 和 nftset 是 dnsmasq 的两个配置项,server 项的作用是收到 dns 请求后进行匹配(可按照域名级别进行匹配),比如上面例子中*.facebook.net 的域名都被转发给 8.8.8.8 解析,并且将解析的 ip 写入 nftables 中的 wgcross 表的 crs_dst set 进行存储,然后路由表当然也要设置,我的例子如下

chain PREROUTING { # handle 2
type nat hook prerouting priority filter; policy accept;
ip daddr { 23.95.146.49, 65.49.219.226, 193.22.152.174 } accept # handle 4
ip daddr { 0.0.0.0/8, 10.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16, 224.0.0.0-255.255.255.255 } accept # handle 6
ip daddr @cn accept # handle 8
ip daddr @crs_dst counter name "cnt_cross" meta mark set 0x00000009 accept # handle 10
}

最后两个路由条目,cn set 针对国内的路由,命中这个 set 中的路由就返回上级 chain(及走国内线路),而另一个 crs_dst set 会 mark 0x9 ,然后在 ip route 中挑出来走海外线路

这个技术路线,必须 DNS\route gateway 的功能集中在一台设备上。
uncat
2023-11-28 12:42:54 +08:00
Windows 原生支持 DNS 分流,叫做 NRPT Rules 参考: https://x.com/jinmiaoluo/status/1723948812224360585?s=20

Linux 也是原生支持 DNS 分流的,你可以在内网,随便一台 Linux ,通过 systemd 内置的 systemd-resolved 配置好分流规则后,作为一台内网 DNS proxy 。啥都不用安装。

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

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

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

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

© 2021 V2EX