最近在做企业内自建 DNS 的升级,我们要自己搭建一套 DNS 服务,借这个题和大家一起讨论讨论目前企业内的 DNS 大家都是怎么玩的。
目前看主流的其实有多种方案,比如 bind ,powerdns ,coredns ,当然也有用 dnsmasq 的。不过目前随着我们的发展,dnsmasq 基本已经不适用于我们了,性能太低。最终我们选择了 bind 进行的构建。
然后现在我们有大概 20 多个分公司吧,然后每个公司都需要做差异化的管理,配置不太一样,当然目前管理方式比较 lowb ,就是手动人工管理。管理成本比较高吧。然后现在想做一个简单的管理工具,想实现集中化的管理,不一定非得要做成平台,但是肯定是以那种工具化的方式纳管,我想用 mysql ,把所有的解析记录保存起来。之前了解过 bind-dlz ,但是我们需要差异化管理,又不能每个分公司都搞一套 mysql ,感觉这样维护压力更大了。
所以我想的是自己搞一套中心管控节点,然后设计一个表,能保存所有的解析记录,然后每次查询动态生成配置推送到对应分公司的主节点,实现变更,当然我不知道有没有这么干的哈。。。所以问问大佬们,你们一般都怎么维护。感觉互联网上这一类的资料比较少,要不就是直接用 WindowsDNS 的。
1
kkocdko 257 天前
没弄过这么大规模的,很好奇楼主的用途。我之前在实验室里弄的主要是为了劫持一些内网域名,省得每个人都改 hosts ,其他的就直接转发了。
|
2
imlonghao 257 天前 via iPhone
dnscontrol.orf
|
3
imlonghao 257 天前 via iPhone
s/orf/org/
|
4
testcaoy7 257 天前 1
首先搞清楚企业内自建 DNS 的目的:
1 、内部网络非常大,甚至需要内部自己使用自己的顶级域名,那么需要的就是 Authoritative DNS Server 解决方案:Bind ,另外捷克互联网中心开发的 Knot DNS 口碑也挺不错的( https://www.knot-dns.cz ) 2 、需要的是缓存( Caching )解析结果,降低公司外网压力 解决方案:Unbound |
5
ho121 257 天前 via Android
要不试试 powerdns ?纯 api+数据库操作,没有配置文件
|
6
gksec 257 天前 1
谢邀,工作相关,有接触到国内大型的甲方。
互联网企业可以追新,喜欢弄一些些花里胡哨的新技术,也见过用 Bind 的 传统/体制内 大甲方基本都是直接用域环境 + WindowsDNS 如果你们那有域环境建议直接 WindowsDNS , 如果单纯只用 DNS 楼上说的可以 |
8
Tsunayoshi OP @kkocdko 用途的话就是内网解析使用,我们有很多内部系统,所以会单独的维护一套办公网的 DNS 。
|
9
Tsunayoshi OP @testcaoy7 大佬,是的,目前我们最大的办公事务所内部员工不到领完人,这也是我们之前从 dnsmasq 换到 bind 的原因。
|
10
Tsunayoshi OP @ho121 powerdns 我们也简单调研过。用的话,我们就得引入两套,把 powerdns 以及对应的 powerdns-recursor 都给引入进来。所以目前我们是用的 binddns + unbound 作为自建递归 dns 的方式。但是没有太深入的使用,不知道是否支持不同职场进行差异化的管理。因为会有一些仅供办公网内部的权威域和一些特殊的劫持的策略。每个职场都不太一样
|
11
testcaoy7 257 天前
@Tsunayoshi 说真的,建议采购现成的解决方案,省心省事
|
12
Tsunayoshi OP @testcaoy7 话是那么说,不过贵呀,哈哈。其实我们之前最早的时候没想自己搞,因为自己搞不管是说配置管理还是说自建 DNS 都是挺麻烦的。我们之前联系过 bluecat 问过。他们家搞 dhcp 和 dns 挺好的。但是价格太贵了。大几百万
|
13
testcaoy7 257 天前
|
14
Kaiyuan 257 天前 via Android 1
额,政府单位的操作是,发份文件下去叫他们自己改电脑 hosts 。没错,全省的都这样,有些有设备维护的单位就在路由器上设,乡镇下边会是改自己电脑。
|
15
mohumohu 257 天前
windows 的最简单好用,AD 域方案非常成熟。
|
16
mytsing520 257 天前
用 bind 写
一台 DNS 主控,主打管理 两到四台 DNS 是 slave ,主打服务,用一个 VIP 面向公司内部网络提供解析,开启递归 这是我的建议 |
17
hefish 257 天前
帮公司省下的钱,进个人账户吗?如果能进,哪怕十个点,那也是极好的。
|
18
lcy630409 257 天前
AdGuardHome
他不香么,图形化设置,每个分公司来一个 做解析和缓存, 上级 dns 指向当地或者总公司的地址 |
19
lcy630409 257 天前
而且 AdGuardHome 的解析配置文件可以自己写规则
|
20
fxxkgw 257 天前 via Android
我搞了个 dns 系统,管理公司内网十来万个域名和几十万主机正反解
用的 bind web 负责配置 物理机做 bgp+Anycast ,部署 bind 服务和终端 另有专门 bind 负责校验配置是否正确,正确才下发 还有流量监控、转发配置、流量存储、禁封等等模块 |
21
xusp 257 天前
国内有一些做 saas 化的云,可以考虑一下。
|
23
retanoj 257 天前
差异化解析这个可以了解下 DNS RPZ
支持按多种触发条件进行不同的解析策略 |
24
Tsunayoshi OP @testcaoy7 幺蛾子我们已经遇到了很多,比如说之前没有自建递归 DNS 的时候,我们基本就是个转发器,转发到 114dns ,dnspod ,aliyun 的 dns 。114dns 三天两头给你返回点垃圾地址。dnspod 虽然相对比较稳,但是我们也遇到了缓存污染的问题了。所以坑其实踩了不少
|
25
Tsunayoshi OP @retanoj 谢谢大佬,目前我们已经在用 rpz 了,做劫持处理。但是劫持处理每个职场的行为也不太一样,这块可能还有部分 rpz 的功能我没有调研到,我再看看
|
26
Tsunayoshi OP @hefish 哈哈,这当然是不会的。如果真这样那岂不是太美好了。公司的策略就是能省尽可能省
|
27
Tsunayoshi OP @lcy630409 adguradhome 没有用过,我看了一下它本身是一个 dns 服务,目前其实我们的 bind 服务已经投入生产环境使用了,所以不太可能直接再更换 dns 服务的选型了
|
28
defunct9 257 天前
dnsmasq 解千愁
|
29
Tsunayoshi OP @defunct9 我们之前用的就是 dnsmasq 。。但是性能不足,我们就给换了。
|
30
Mrealy 257 天前
我公司用的是 dnsmasq+dnsforward 组合的,每个分公司也是同样方案定时去同步总部的内网记录。
|
31
lxyv 257 天前
我工作过的 4 家公司从几十人的小公司到上万人的全球公司,无一例外全部用的是基于 windows server 的 ad 和 dns
|
32
Tumblr 257 天前
做 DNS 我觉得起码要考虑两方面的问题,一个是整体的架构设计,一是技术实现,其中技术实现是没有太大难度的。
你们每个分公司是用统一的 IP ( anycast ),还是都有自己的 IP ?是考虑权威服务器之间的同步,还是在权威服务器上管理,各分公司用递归服务器?等乖 另外,还可以考虑另一条路: 这么多分公司的统一管理是否有域呢?可以把 DNS 服务器和 AD 域集成到一起,我觉得这应该是实现起来最简单的方案。 |
33
weite 257 天前
商用阿里云了解一下
|
35
Tsunayoshi OP @Tumblr 目前暂未引入 anycast ,基本上 20 多个分公司每个公司都有不同的网段,不同的 IP 。基本就是每一个分公司一套把。只不过总公司的话是最大的规模,人数也在不到 2w 人也是最多的。关于加域的问题,分公司是有域控管理的,然后总公司是没有的。所以总公司这边用的 bind ,为了统一,分公司也并未采用 windows DNS 的方式。
|
36
Tsunayoshi OP @yumusb 好的,我看一下,大佬
|
37
defunct9 257 天前
dnsmasq 性能不足,还是头一次听说。
|
38
retanoj 257 天前
|
39
maniaccn 257 天前
公司内部三个分公司,一样有不同区域解析的需求,我们是使用 docker+coredns ,最开始用的 dnsmasq 单线程真的扛不住。
说一下管理方案,写了一个脚本,读取数据库表,然后根据表生成对应公司的 dns 服务器配置文件,然后用 gitlab 的 ci 来实现自动化部署,修改数据库后,直接触发 CI ,然后进行自动部署。自动登录到 DNS 服务器,替换掉当前旧的配置文件,直接写入新的配置文件,然后 reload 配置文件。 目前配置规模,每个分公司+总部两台 DNS 服务器,每个 DNS 服务器使用 NUC 部署的,目前稳定运行三年。无任何故障。 |
40
Tsunayoshi OP @defunct9 是的,因为内部解析和转发到外部的域名解析大概二八开吧,我们这边峰值的一个 qps 达到过 2k 差点 3000 吧,除了用户的使用场景,还有办公网机房的使用场景。转发量大的时候,用户其实体感是非常明显的。
|
41
Tsunayoshi OP @maniaccn 非常感谢大佬的建议,其实我一开始打算这么做,因为目前用 bind ,主备都已经分开了,然后我当时考虑的就是设计一张表,然后存所有职场的配置,通过一个字段区分开。下发的时候就动态查库然后生成一份 zone 文件。不过我当时没考虑用 gitlab-ci ,我是考虑直接通过文件分发,或者通过 rndc 远程调用的方式去刷新配置,现在想想中间加一层,其实可扩展性更高。比如加一层检测的手段之类的。当然这都是设想,没敢搞的原因就是网络上基本找不到这么干的。所以心里有些没底,哈哈。总之,感谢大佬的建议。
|
42
qishua 257 天前
我们之前是用 django 写的管理后台,然后运维人员通过 web 界面写入解析,然后生成配置,点击发布按钮,对应的 dns 配置文件更新
|
43
XiLingHost 257 天前
我们现在是用的 powerdns 作为权威+dnsdist 作为递归和策略转发,挺方便的,性能也不错
|
44
wangbin11 257 天前
量不是很大,但是你的公司太大了,建议找个外包单独开发个,你收点红包多少,自己搞你会被高心态的
|
45
xuanbg 257 天前
内部解析,bind 也没多少管理成本啊。除非你天天改 dns 玩
|
46
fuzzsh 257 天前 via Android
F5 GSLB
|
48
Tsunayoshi OP @xuanbg 现在变更还是挺频繁的,除了各种机房更换呀,以及相关的办公网业务上线呀,变更还是不少的。
|
49
Tsunayoshi OP @XiLingHost 感谢大佬的建议
|
50
wheat0r 257 天前
如果是每个分支机构做一套 dnsmasq ,性能应该不成问题。
各分支机构的 dns 的记录也没必要同步,分公司只写自己的记录,查不到的去总公司找,总公司做转发就好了。 至于管理平台,最好还是找人写一个小系统,复杂性应该也不高。 |
51
baobao1270 257 天前 via Android
我觉得可以用 octodns
|
52
Torpedo 257 天前
首先我也不太懂。
我想问下 git+ci 这种不行吗? |
53
life90 257 天前 via Android
如果用 bind 的话,企业还有 AD 域,可能要做整合。不然域解析会有很多麻烦事。
|
54
zhlxsh 257 天前 via iPhone
主节点是 bind ,配置通过数据库保存。子公司 dns 装 unbound 提供服务,公网直接查询公共 dns ,内网域名通过本地的 knot 去主节点 bind 查询。
搞一个管理页面,修改数据库配置。每个子公司 dns 算一个单独的?相同的域名可以有不同的记录 |
55
HalloCQ 257 天前
AdGuardHome 应该还是最好用的
|
56
Tsunayoshi OP @life90 ad 域控这块我们目前把一众的 srv 记录接管过来了。。成本比较高的维护方式
|
57
VIVIANSNOW 256 天前
不说技术。只说管理。这种事情你不采购做?赚钱不说。还省心 出了问题。都会说你或部门技术性 弄的什么破玩意。弄好了也不涨你薪水。
|
58
min 256 天前
放着 windows server 不用找其他的方案,图啥
|
59
Tsunayoshi OP @min 一些历史包袱吧,不过就算是用了 windows 也是还得需要有自动化管理的平台或者是工具呀。管理一份一台肯定好说
|
60
Tsunayoshi OP @VIVIANSNOW 其实最开始考虑的就是采购,谈的 blucat ,但是费用太贵了。每年的维保,维护以及技术支持费用。这种事情肯定就是看 roi 嘛,花钱采购,买维保是成本,人力维护也是成本。就看怎么划算了。
|
61
sofarsonear 255 天前
自己建设运维成本、稳定性保障能力都得考虑好。
|
62
Mianmiss 247 天前
@Tsunayoshi 大佬,这个问题有进展了吗。同样有类似需求
|
63
RockHan 246 天前
这个必须搞一个中心节点,数据库里存储 N 份配置,然后分公司装个 agent ,远程读取中心节点数据库并转化成配置文件。
定制化开发的单我接。 |
64
GLaDOS 243 天前
Windows 是企业 DNS 的最省事又稳定的方案,而且和 AD 集成,利用 AD 复制 DNS 到其他的服务器,统一身份认证也有了。其他方案都弱爆了,花钱开发,有 BUG 还要维护……
|
65
Tsunayoshi OP @Mianmiss 我们自己维护了。然后自研平台做差异化管理了
|
66
8675bc86 124 天前
DNS 这么简单的东西,dnsmasq 搞不定? adguard 搞不定?逗
|
67
Tsunayoshi OP @8675bc86 dns 本身的确很简单,但是你得考虑规模呀。你还得考虑频繁自动化变更等等规范性管理,标准。你抛开这些谈服务本身简不简单这不耍流氓么。。服务本身肯定简单呀。
|
68
8675bc86 122 天前
@Tsunayoshi 就企业内部这点需求,又不是没弄过,算个啥。
|