一、Microsoft官方文档
(一)在 Microsoft DNS 服务器中手动创建 KMS SRV 记录
1. 在 DNS 服务器上,打开 DNS 管理器。要打开 DNS 管理器,请依次单击开始、管理工具、DNS。
2. 单击需要在其上创建 SRV 资源记录的 DNS 服务器。
3. 在控制台树中,展开正向查找区域,右键单击该域,然后单击其他新记录。
4. 向下滚动列表,单击服务位置 (SRV),然后单击创建记录。
5. 键入以下信息:
a. 服务:_VLMCS
b. 协议:_TCP
c. 端口号: 1688
d. 提供服务的主机:<FQDN_of_KMS_Host>
6. 完成后,单击确定,然后单击完成。
(二)在符合 BIND 9.x 规范的 DNS 服务器中手动创建 SRV 记录
创建记录时,请包括以下信息:
Name=_vlmcs._TCP
Type=SRV
Priority = 0
Weight = 0
Port = 1688
Hostname = <FQDN 或某台 KMS 主机的名称>
KMS 不使用 Priority 和 Weight 字段,它们会被 KMS 客户端忽略。但是,它们必须包含在区域文件中。
要将 BIND 9.x DNS 服务器配置为支持 KMS 自动发布,请将 BIND 服务器配置为允许来自 KMS 主机的资源记录更新。例如,将下面一行添加到 named.conf(或 named.conf.local)中的区域定义中:
allow-update { any; };
注意:允许更新声明也可以添加到 named.conf.options 中,以允许 DDNS 用于此服务器上托管的所有区域。
二、安装KMS服务器
安装KMS服务器参考: 使用vlmcsd搭建KMS服务器激活环境, 使用py-kms搭建KMS服务器激活环境
注意安装后需要把KMS服务器上的1688端口打开
vi /etc/sysconfig/iptables
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1688 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 1688 -j ACCEPT
重启iptables
service iptables restart
三、在DNS服务器中添加srv记录
首先需要安装bind作为DNS服务器,参考: CentOS6.6下内网DNS服务器配置
1.原理
bind中添加记录,在正向解析文件里最后添加一行,其中SRV所在域可以不写
_vlmcs._tcp.testlan.com. IN SRV 5 0 1688 www.testlan.com.
_vlmcs._tcp IN SRV 5 0 1688 www.testlan.com.
项目的含义:
_vlmcs 服务(Service)的名字
_tcp 所使用的协议(Protocol)类型,比如 “_tcp” 或者 “_udp”
testlan.com SRV所在域的名字(Name)可以不写
5 - 优先级(Priority),类似MX记录
0 - 权重(Weight)
1688 - 端口(Port)
www.testlan.com - 实际提供服务的主机名(Target ),这里写我们的KMS服务器域名。
2.配置服务器
编辑正向解析文件
cd /var/named/
vi testlan.com.zone
最后一行添加
_vlmcs._tcp IN SRV 5 0 1688 www.testlan.com.
重启bind
service named restart
3.客户端查询srv记录
a.linux客户端执行如下命令
nslookup -q=srv _vlmcs._tcp.testlan.com.
-q 查询类型,这里是srv
_vlmcs._tcp.testlan.com. 指要查询的srv域名
返回结果如下
Server: 192.168.88.132
Address: 192.168.88.132#53
_vlmcs._tcp.testlan.com service = 5 0 1688 www.testlan.com.
b.windows客户端执行如下命令
nslookup -q=srv _vlmcs._tcp.testlan.com. 192.168.88.132
nslookup -qt=srv _vlmcs._tcp.testlan.com. 192.168.88.132
nslookup -type=srv _vlmcs._tcp.testlan.com. 192.168.88.132
响应结果
132.88.168.192.in-addr.arpa
primary name server = ns.testlan.com
responsible mail addr = root.132.88.168.192.in-addr.arpa
serial = 0
refresh = 86400 (1 day)
retry = 3600 (1 hour)
expire = 604800 (7 days)
default TTL = 10800 (3 hours)
服务器: UnKnown
Address: 192.168.88.132
_vlmcs._tcp.testlan.com SRV service location:
priority = 5
weight = 0
port = 1688
svr hostname = www.testlan.com
testlan.com nameserver = ns.testlan.com
www.testlan.com internet address = 192.168.88.132
ns.testlan.com internet address = 192.168.88.132
四、配置DHCP服务器
1.服务器配置
通过前面的文章配置DHCP服务器,配置参考: CentOS6.6下DHCP服务器配置,并指定后缀域名,
后缀域名非常重要,后缀名在option domain-name里指定,部分文章称为内网域名。
将option domain-name后面改成testlan.com
2.客户端测试
客户端可以通过ipconfig能看到这个域名,如果没有配置成功,在虚拟机里看到的后缀域名为localdomain,普通路由器配置的域名后缀名为空,大部分企业级路由器默认配置的后缀域名为空 ,大多数智能路由器可能会配置为.lan
结果如下
这时候nslookup -q=srv _vlmcs._tcp.testlan.com.和nslookup -q=srv _vlmcs._tcp返回的是同一结果,因为在请求srv记录的时候会自动把后缀域名加上。
如果nslookup -q=srv _vlmcs._tcp没能返回结果说明DHCP没配置好。
五.自动激活
一般机器只要通过DHCP分配IP地址接入后会自动激活
如果没有自动激活,可以通过执行如下命令激活
slmgr.vbs /ckms
slmgr.vbs /ato
ckms 表示清除KMS服务器地址
ato 表示自动激活
说明:目前有童鞋在纠结这个命令怎么没有slmgr.vbs /ipk换密钥的命令,正常情况下无论你使用哪一个镜像安装,如果选择跳过密钥安装,或者选择以后输入密钥安装,安装之后操作系统内置的初始密钥就是KMS客户端密钥,无需换密钥再激活,如果你安装时换过密钥,需要换回KMS密钥才能激活。
后记:笔者在虚拟机上桥接断网测试成功,关于路由器局域网后缀名查了很久,开始以为是在DNS上配置,因为网上大部分是在dnsmasq上配置的,后面才发现是在DHCP服务器上配置的,dnsmasq整合了DHCP和DNS的功能,拆分功能的时候反而变得不好找了。
参考文章:
1.cubieboard中使用py-kms与dnsmasq搭建局域网内全自动KMS激活环境,http://www.mamicode.com/info-detail-1058191.html
2.设置openwrt-dnsmasq使局域网用户免配置全自动进行kms激活,http://www.right.com.cn/forum/thread-174651-1-1.html
3.DNS (bind) 設定 - SRV 紀錄 - Office 365 - Lync Server,https://www.dotblogs.com.tw/jerrymow/archive/2014/01/06/139132.aspx