云计算之路-试用Azure:搭建自己的内网DNS服务器

之前我们写过一篇博文谈到Azure内置的内网DNS服务器不能跨Cloud Service,而我们的虚拟机部署场景恰恰需要跨多个Cloud Service,所以目前只能选择用Azure虚拟机搭建自己的内网DNS服务器。这篇博文分享的是我们在Azure上搭建自己的内网DNS服务器的经过。

1、创建1台用于跑DNS服务的虚拟机,假设名叫dnsserver。

云计算之路-试用Azure:搭建自己的内网DNS服务器

2、登录这台虚拟机,安装DNS服务。

云计算之路-试用Azure:搭建自己的内网DNS服务器

3、安装时Windows警告虚拟机用的是动态IP,推荐使用静态IP。听从该警告,接下来我给虚拟机配置静态IP。

云计算之路-试用Azure:搭建自己的内网DNS服务器

4、进入Azure管理控制台->Networks,在虚拟网中添加一名为DNS的子网,子网的目的仅是为了给DNS服务器保留内网IP,这里我们保留了3个IP(见下图)

云计算之路-试用Azure:搭建自己的内网DNS服务器

在添加子网保存时,我们发现了这样的提示:

Changing the configuration of a network that is in use will briefly disrupt the connection between the virtual network and the local network. Are you sure you want to continue?

修改虚拟网设置竟然会引起网络短时间的中断!难道在生产环境中,如果要修改虚拟网设置,还要找个夜深人静、访问量最少的时间。即使这样,也是造成了正常服务的中断。这地方的设计还是有所欠缺。

5、回到需要安装DNS服务的虚拟机,给它指定静态IP(10.0.1.4),但是子网掩码与网关不知怎么填。算了,还是把这台虚拟机移到DNS这个子网(之前在FrontEnd子网),然后根据DHCP的信息进行填写。

6、但无法在子网间移动虚拟机,只能先“删除”这台虚拟机(在Azure中,删除虚拟机是指删除虚拟机的运行实例,从编程角度讲删除的是对象,而不是类文件)。

7、New Virtual Machine From Gallery -> My Disks,重新创建dnsserver虚拟机,创建时选择DNS这个虚拟网子网。

云计算之路-试用Azure:搭建自己的内网DNS服务器

8、dnsserver虚拟机创建好之后,根据DHCP分配的IP信息,设置静态IP(见下图)。

云计算之路-试用Azure:搭建自己的内网DNS服务器

(注:在保存静态IP设置时,远程桌面连接会闪断一下)

9、重新打开Server Manager,继续安装DNS服务。安装成功之后在其他虚拟机上用“telnet 10.0.14 53”命令测试一下,如果成功连接说明DNS服务工作正常。

10、在dnsserver虚拟机上打开DNS管理工具,新建一个名为cnblogs.local的区域,在创建时一定要选择允许动态更新(见下图)。

云计算之路-试用Azure:搭建自己的内网DNS服务器

11、创建好区域之后,DNS服务器本身的配置工作就完成了。

云计算之路-试用Azure:搭建自己的内网DNS服务器

12、打开Azure的Networks管理控制台,选择相应的虚拟网,进入Configure页面,添加之前配置的DNS服务器。

云计算之路-试用Azure:搭建自己的内网DNS服务器

13、保存时出现如下的提示:

Changing the configuration of a network that is in use will briefly disrupt the connection between the virtual network and the local network. Are you sure you want to continue?
If you change the DNS server while the virtual network is in use, you have to restart the virtual machines to reset the DNS settings.

不仅会造成网络中断,而且为了使DNS生效,需要重启所有虚拟机。

14、保存成功后,发现原来为虚拟机提供DNS解析服务的Azure内置DNS服务器拒绝服务了,这个地方的设计不够人性化。

15、分别重启不在同一个Cloud Service中的blogserver2与passport这两台虚拟机,重启发现DNS的确切换为了我们设置的DNS服务器。

云计算之路-试用Azure:搭建自己的内网DNS服务器

然后,测试dns解析,ping blogserver2,结果依然是:

Ping request could not find host blogserver2. Please check the name and try again.

再看一下blogserver2的IP信息,DNS后缀与DNS服务器的区域信息不匹配。

云计算之路-试用Azure:搭建自己的内网DNS服务器

而且DNS服务器中也没有对应的blogserver2主机记录。

云计算之路-试用Azure:搭建自己的内网DNS服务器

16、解决方法:打开blogserver2的TCP/IP高级设置,在“DNS”设置中,给“DNS suffix for this connection”添加后缀值cnblogs.local(与DNS区域名称保持一致),并且选中“Use this connection's DNS buffix in DNS registration”(让DHCP将主机名解析注册至DNS服务器中)。

云计算之路-试用Azure:搭建自己的内网DNS服务器

passport这台虚拟机也进行同样的设置,然后重启这两台虚拟机。

17、blogserver2与passport这两台虚拟机重启成功后,就会在DNS服务器的区域中看到这两台服务器的解析记录。

云计算之路-试用Azure:搭建自己的内网DNS服务器

18、在passport这台虚拟机中测试一下dns解析,运行命令:ping blogserver2,运行结果如下:

云计算之路-试用Azure:搭建自己的内网DNS服务器

搞定!

配置要点小结

1、DNS服务器要用静态IP,划分专门的子网以保留IP给DNS服务器。

2、DNS服务器要允许动态更新。

3、每台需要DNS服务的虚拟机都需要修改TCP/IP设置,给“DNS suffix for this connection”添加后缀值cnblogs.local(与DNS区域名称保持一致),并且选中“Use this connection's DNS buffix in DNS registration”(让DHCP将主机名解析注册至DNS服务器中)。

4、每台需要DNS服务的虚拟机都需要重启。

如何解决DNS服务器的单点故障

再用虚拟机搭建一台DNS服务器,让这两台DNS服务器自动复制,然后在Azure虚拟网中设置两台DNS服务器。

上一篇:有关 Azure IaaS VM 磁盘以及托管和非托管高级磁盘的常见问题解答


下一篇:C# 3.0 / C# 3.5 自动属性