+86 189 8218 1436Mon. - Fri. 10:00-22:00

在Virtual Private Cloud中自建基于BIND的DNS服务器

在Virtual Private Cloud中自建基于BIND的DNS服务器

经济实惠的服务器代维费用及报价,让中小企业都能用上专业的服务器代维服务!

服务器代维外包服务 让您省心又放心 小程序HTTPS配置 一键ssl全站配置 正版EV OV_SSL证书 顶级证书长期享用 DDOS/CC攻击防御 有针对性的攻击防御
木马病毒清除 彻底的清除专家 网站中毒处理 快速网站故障处理专家 服务器故障处理 一站式解决服务器问题 数据找回/恢复 重要数据秒级找回
数据库优化 提升网站访问速度神器 数据迁移 网站搬家快方法 漏洞扫描/渗透测试 网站安全检测 网站故障排查/修复 一键排查故障/修复
宝塔Linux面板安装服务 环境配置专家 WordPress代维托管 一次性收费包您满意 网站程序安装指导 多年安装经验
肉鸡处理,中毒处理
肉鸡处理,中毒处理  
 

在Virtual Private Cloud中自建基于BIND的DNS服务器

Amazon Virtual Private Cloud (Amazon VPC) 是 AWS 提供的虚拟私有网络服务,允许您在 AWS 云中预配置出一个采用逻辑隔离的部分,让您在自己定义的虚拟网络中启动 AWS 资源。您可以完全掌控您的虚拟联网环境,包括选择自有的 IP 地址范围、创建子网,以及配置路由表和网关。

除了提供IP资源及网络连接,Amazon VPC还提供DNS及DHCP等基础设施服务。当您将实例启动到默认 VPC 中时,我们为实例提供与其公有 IPv4 和私有 IPv4 地址对应的公有和私有 DNS 主机名。当您在非默认 VPC 中启动实例时,我们会为实例提供私有 DNS 主机名,并根据您为 VPC 和实例指定的设置来决定是否提供公有 DNS 主机名。

对于 us-east-1 区域,公有 (外部) DNS 主机名采用 ec2-<public-ipv4-address>.compute-1.amazonaws.com 形式,对于其他区域,则采用 ec2-<public-ipv4-address>.region.amazonaws.com 形式。例如,公有IP为54.222.212.110的EC2实例,其公有DNS名为ec2-54-222-212-110.cn-north-1.compute.amazonaws.com.cn。我们将公有 DNS 主机名解析为该实例在所在网络外的公有 IPv4 地址及其在所在网络内的私有 IPv4 地址。

私有 (内部) DNS 主机名解析为实例的私有 IPv4 地址,并对 us-east-1 区域采用 ip-<private-ipv4-address>.ec2.internal 形式,对其他区域采用 ip-<private-ipv4-address>.region.compute.internal 形式 (其中 private.ipv4.address 是反向查找 IP 地址)。例如,私有IP地址为10.206.2.239的EC2实例,其私有DNS名为ip-10-206-2-239.cn-north-1.compute.internal。您可以使用私有 DNS 主机名在同一网络中实现实例之间的通信,但我们无法解析实例所在网络之外的 DNS 主机名。要解析实例所在网络之外的主机名,可自建DNS服务器来为VPC及外部网络提供DNS服务。

常见的应用场景是在混合IT架构下,客户数据中心通过VPN或是Direct Connect专线连接到AWS上的VPC,在VPC中配置1台DNS服务器,在客户数据中心也配置1台DNS服务器,服务器的主从角色客户可自行定义。通过多台DNS服务器为不同位置的客户端提供DNS服务,即能保证服务的高可用,又能就近提供服务,减少DNS查询延迟。

20170523-1

接下来,我将基于上述架构图一步一步说明如何使用BIND搭建DNS服务器。本文不会涉及BIND的高级配置,如需了解BIND的高级配置,可参考BIND官方网站

安装配置DNS主服务器

首选需要准备一台EC2实例用于安装BIND软件,如何创建EC2实例可参考Amazon EC2入门指南。本次示例选用Amazon Linux操作系统的AMI来创建实例,实例类型选用了通用型实例类型: m4.large。BIND对服务器硬件资源要求不高,在不启用DNSSEC的情况下(不在本文讨论范围),普通配置的服务器即可承载DNS服务。m4.large配置有2颗vCPU和8G内存,运行DNS服务能够支持中等规模的DNS请求,当请求增加时,也可方便的调整实例类型到更大的配置。

20170523-2

创建EC2实例时需要指定安全组来开放服务端口,DNS服务通过UDP 53端口提供DNS查询相应,通过TCP 53端口提供区域传送。因此,安全组队VPC网段开放UDP 53端口,对客户数据中心的DNS服务器开放TCP 53端口,如下图所示:

20170523-3

DNS服务器作为基础设施服务的重要性无须多言,Amazon EC2持续监控EC2实例的状态以及底层硬件的状态,分别称为实例状态检查和系统状态检查。我们可创建状态检查报告,当任一状态检查失败时,执行重启操作,并将警报发送至指定邮箱。

20170523-4

创建好警报之后,通过SSH登陆至EC2实例,并yum命令安装bind软件:

yum install bind-utils bind

安装好之后,我们接下来将创建一个示例的DNS域:aws.local,我们首先需要编辑/etc/named.conf文件,修改以下内容:

20170523-5

listen-on 缺省配置为127.0.0.1,DNS服务只会绑定到系统的环回接口,其他客户端无法访问,需要添加EC2实例的私有IP地址,才能提供外部访问

allow-query缺省配置为localhost,即只允许DNS服务器所在的EC2实例对自己进行DNS查询,添加VPC的网段可允许来自VPC内部的主机进行DNS查询。注:也可将此参数设置为0.0.0.0/0,因为前面安全组设置里只允许了VPC内的IP访问UDP 53端口。

此外,还需要增加对aws.local这个域的定义,在/etc/named.conf中增加以下内容,allow-transfer指定了只允许从DNS服务器进行区域传送,限定允许区域传送的范围颗可提高DNS服务的安全性:

20170523-6

上述配置说明aws.local域的具体解析配置在文件/var/named/aws.local.db 里,其内容如下,在这个示例配置中,定义了两条A记录,分别是dns.aws.local对应10.206.0.212和www.aws.local对应10.206.0.213

20170523-7

配置Amazon VPC使用自建DNS服务器

Amazon VPC通过DHCP服务为VPC中的EC2及其他连网组件动态分配IP地址,动态主机配置协议 (DHCP) 提供了将配置信息传递到 TCP/IP 网络中主机的标准。DHCP 消息中的options字段包含配置参数。这些参数包括域名、域名服务器以及“netbios-node-type”。接下来我们将创建一个新的DHCP选项集,并在选项集中将域名服务器指向刚才创建的DNS服务器。

在AWS控制台中选择VPC服务,并在左边的菜单中选择“DHCP选项集”,点击“创建DHCP选项集”按钮,输入以下信息,域名服务器可指定多个DNS服务器,按照顺序第一个为VPC内的DNS服务器,第二个为客户数据中心的DNS服务器:

20170523-8

创建好DHCP选项集之后选择左边菜单中“您的VPC”选项,选中要修改的VPC,从“操作”下拉菜单中选择“编辑DHCP选项集”

20170523-9

选择刚才创建的DHCP选项集并保存:

20170523-10

在您将新的 DHCP 选项集与 VPC 关联之后,任何现有实例以及您在 VPC 内启动的所有新增实例都将使用这些选项。 无需重新开始或重新启动实例。根据实例更新 DHCP 租赁权的频率,它们会在几个小时内自动拾取更改。如果您愿意,您也可以使用实例上的操作系统,直接更新租赁权。

安装配置DNS从服务器

在客户数据中心安装配置DNS服务器的步骤与在Aamazon EC2中安装配置DNS服务器的步骤相同,除了/etc/named.conf的配置稍有差别:

20170523-11

从服务器的type类型为slave,file参数对应的域配置文件会自动根据从主DNS服务器接收到的更新来进行创建和更新,masters指定aws.local域的主域名服务器,最后一个参数allow-transfer禁用了区域传送。

配置好从DNS服务器之后,可将客户数据中心内的连网设备设置为从DNS服务器,第二DNS服务器设置为AWS上的主DNS服务器。

总结

Amazon VPC提供DHCP服务和DNS服务,为VPC中的EC2实例提供IP地址分配和域名解析服务,为每个EC2实例创建特定格式的DNS域名。如果用户希望使用自定义域名,或者希望使用一套域名统一管理云上和云下的资源,可自行搭建DNS服务器来提供DNS解析服务,Amazon VPC能够支持客户。

北京 上海 天津 重庆 河北 山东 辽宁 黑龙江 吉林 甘肃 青海 河南 江苏 湖北 湖南 江西 浙江 广东 云南 福建 海南 山西 四川 陕西 贵州 安徽 广西 内蒙古 西藏 新疆 宁夏 澳门 香港 台湾