DHCP选项集与DNS主机名

为降低 ECS 实例间通信对固定 IP 的依赖,您可以使用 DHCP 选项集为 ECS 统一配置 DNS 服务器 IP 和搜索域,简化网络管理工作。使用主机名访问 ECS 时,系统将补全搜索域,向指定的 DNS 服务器查询完整域名与 IP 的映射关系。

工作原理

DHCP选项集(DHCP Options Set)为关联 VPC 内的 ECS 实例统一配置DNS域名服务器IP域名等参数后,实例间可以使用主机名/完整域名互访,无需依赖固定IP。

image

序号

说明

DHCP 选项集关联至 VPC,VPC 中的 ECS 与 DHCP 服务器交互,获取 DHCP 选项集中的网络配置信息(包括域名、DNS 服务器 IP 等网络相关配置信息,并写入 ECS 的系统配置。

ECS 实例向 DNS 服务器发送查询请求,以获取 DNS 主机名与 IP 地址的映射关系。DNS 服务器将 DNS 主机名解析到对应的 IP 地址。

根据解析结果,访问对应的ECS实例。

配置域名:使用主机名通信

完整的私网域名包括主机名(host name)和域名(domain name)两部分,例如host01.host.prvz中,主机名为host01,域名为host.prvz

在 DNS 服务器中配置 ECS 域名解析记录后,ECS 可通过完整的私网域名被访问。如需简化为仅使用主机名通信,您可以使用vim /etc/resolv.conf修改 ECS 的 DNS 配置文件,添加search host.prvz,将host.prvz设置成 DNS 搜索域(search domain)。

但手动配置每个 ECS,可能存在配置效率低下、配置不统一等问题。在关联的 DHCP 选项集中配置域名后,VPC 内的 ECS 实例可以通过 DHCP 获取 DHCP 选项集中配置的域名,写入/etc/resolv.conf,统一设置 DNS 搜索域。使用主机名访问 ECS 时,系统将补全搜索域,向指定的 DNS 服务器查询完整域名与 IP 的映射关系。

配置DNS服务器IP:查询域名解析记录

DNS 服务器维护域名解析记录。当 ECS 执行ping host01.host.prvz时,会向指定的 DNS 服务器发送查询请求,DNS 服务器将返回对应的 IP 地址。

使用官方镜像创建 ECS 时,阿里云会通过 DHCP 自动为 ECS 配置默认 DNS 服务器,其 IP 为 100.100.2.136 和 100.100.2.138。

对比项

启用 DNS 主机名

内网 DNS 解析(Private DNS)

自建 DNS 服务

DHCP选项集类型

默认DHCP选项集

自定义DHCP选项集

自定义DHCP选项集

域名配置

ECS 私网域名 [regionID].ecs.internal

默认 DNS 服务器

自定义域名

默认 DNS 服务器

自定义域名

自建 DNS 服务器

计费

无需支付域名费用

结合添加的域名数量、解析请求量收取费用

无需支付域名费用

是否支持跨 VPC、混合云私网域名通信

不支持

支持

支持

DNS 查询性能取决于使用的DNS服务器。阿里云默认DNS服务器的查询性能,可参考内网DNS解析服务的使用限制

创建/删除 DHCP 选项集

为降低对固定 IP 的依赖、使用主机名/完整域名互访,您可以使用 DHCP 选项集为关联 VPC 内的 ECS 统一配置 DNS 服务器 IP 和搜索域。ECS 执行ping <hostname>时,系统将补全搜索域(例如hostname.example.com),向指定的 DNS 服务器查询域名与 IP 的映射关系。

一个DHCP选项集可以关联多个同地域VPC,但一个VPC只能关联一个同地域DHCP选项集。

控制台

创建 DHCP 选项集

每个地域首次为 VPC 启用 DNS 主机名时,自动创建默认 DHCP 选项集并关联至 VPC。默认 DHCP 选项集不支持修改,您可以前往专有网络控制台 - DHCP 选项集创建 DHCP 选项集,配置与 DNS 解析服务对应的域名DNS域名服务器IP

如果 VPC 已关联其他 DHCP 选项集,VPC 启用 DNS 主机名后,将不会关联默认 DHCP 选项集,您需要自行修改关联关系。

关联专有网络

VPC 与 DHCP 选项集的关联关系,可在目标 VPC 详情页的DHCP 选项集参数项、目标 DHCP 选项集的操作列或详情页,进行建立、更改或解除。

  • 关联关系变更后,新建 ECS 会自动使用最新配置,存量 ECS 需要通过sudo dhclient -r eth0 && sudo dhclient eth0重启实例中 DHCP 进程,才能使用最新配置;解除关联关系后,阿里云会通过 DHCP 为 ECS 指定默认 DNS 服务器。确保不影响业务的前提下,您也可以通过重启实例或重启网络服务,确保存量 ECS 使用最新配置。

    常见操作系统重启网络服务的命令

    操作系统

    Version

    重启网络服务命令

    CentOS

    6

    service network restart

    7

    systemctl restart network

    8

    systemctl restart NetworkManager

    Debian

    8

    systemctl restart networking

    9

    systemctl restart networking

    10

    systemctl restart networking

    Ubuntu

    14

    service networking restart

    16

    systemctl restart networking

    18

    systemctl restart systemd-networkd

    20

    systemctl restart systemd-networkd

    Alibaba Cloud Linux 2

    2

    systemctl  restart  network

    Alibaba Cloud Linux 3

    3

    systemctl restart  NetworkManager

  • 如果 DHCP 选项集关联的 VPC 开启了共享VPC功能,则 DHCP 选项集也会对共享 VPC 内的 ECS 生效。

修改 DHCP 选项集

默认 DHCP 选项集不支持修改,自定义 DHCP 选项集指定的域名和 DNS 服务器 IP 可修改。

修改 DHCP 选项集后,关联 VPC 内的新建 ECS 会自动使用最新配置,存量 ECS 需要通过重启实例中 DHCP 进程,才能使用最新配置。确保不影响业务的前提下,您也可以通过重启实例或重启网络服务,确保存量 ECS 使用最新配置。

删除 DHCP 选项集

需先确保已解除与 VPC 的关联,在目标 DHCP 选项集的操作列或详情页,单击删除

API

每个地域首次为 VPC 启用 DNS 主机名时,自动创建默认 DHCP 选项集并关联至 VPC。
修改 DHCP 选项集配置或变更关联关系后,新建 ECS 会自动使用最新配置,存量 ECS 需重启实例、重启实例中 DHCP 进程或重启网络服务,才能使用最新配置。

Terraform

Resource:alicloud_vpc_dhcp_options_setalicloud_vpc_dhcp_options_set_attachment
# 指定VPC的地域
provider "alicloud" {
  region = "cn-hangzhou"
}

# 创建DHCP选项集
resource "alicloud_vpc_dhcp_options_set" "test_dhcp_options_set" {
  dhcp_options_set_name = "test_dhcp_options_set_name"
  domain_name           = "example.com"                 # 指定域名
  domain_name_servers   = "100.100.2.136,100.100.2.138" # 指定DNS服务器IP
}

# 关联DHCP选项集与VPC
resource "alicloud_vpc_dhcp_options_set_attachment" "test_attachment_vpc" {
  vpc_id              = "vpc-8vbg******"                                       # 指定关联的VPC的实例ID
  dhcp_options_set_id = alicloud_vpc_dhcp_options_set.test_dhcp_options_set.id # 指定关联的DHCP选项集的实例ID
}

启用 DNS 主机名

为实现同一VPC内通过私网域名进行通信,您可以为 VPC 启用 DNS 主机名,并在 ECS 中配置私网域名解析,由阿里云的内网 DNS 解析自动维护域名解析记录,降低域名解析记录的维护时间与成本。VPC 会关联默认 DHCP 选项集,为 ECS 指定统一的ECS 云产品内置权威域名 [regionID].ecs.internal

1、每个地域首次启用 DNS 主机名时,自动创建默认 DHCP 选项集并关联至 VPC。该地域其他 VPC 启用 DNS 主机名时,系统自动将该默认 DHCP 选项集与对应 VPC 关联。
2、如果 VPC 已关联其他 DHCP 选项集,VPC 启用 DNS 主机名后,将不会关联默认 DHCP 选项集,您需要自行修改关联关系。
3、暂不支持跨 VPC、混合云场景下,使用私网域名通信。

控制台

启用 DNS 主机名

  1. 前往专有网络控制台,在目标 VPC 基本信息页面,单击启用 DNS 主机名。

  2. 前往ECS实例管理控制台,为 ECS 配置私网域名解析,对应 ECS 可通过主机名被同一 VPC 内的 ECS 访问。

    创建实例时,展开高级选项(选填)配置私网域名解析,勾选IP 格式主机名到实例主私网 IPv4 的 DNS 解析实例 ID 格式主机名到实例主私网 IPv4的 DNS 解析

    实例 ID 无法修改;实例 IP 变化后,域名解析记录将自动更新为新 IP 格式的主机名到新 IP 的映射。
    实例分配 IPv6 地址后,可勾选实例 ID 格式主机名到实例主私网 IPv6的 DNS 解析

    针对已创建的 ECS,在其操作列选择图标实例属性 > 编辑实例属性,勾选对应的私网域名和IP地址的映射关系。

禁用 DNS 主机名

在目标 VPC 基本信息页面,单击禁用 DNS 主机名,阿里云统一分配的域名将失效,无法将 ECS 私网域名解析为对应的 IP。

系统会自动解除与默认 DHCP 选项集的关联,但不会删除 DHCP 选项集。如需删除,确保已解除与所有 VPC 的关联。

API

与控制台逻辑不同的是,调用CreateVpc创建 VPC 时,可调整EnableDnsHostname参数,启用/禁用 DNS 主机名。
  • 调整 ModifyVpcAttributeEnableDnsHostname 参数,启用/禁用 DNS 主机名。

  • 调用RunInstances创建实例时,指定PrivateDnsNameOptions相关参数,配置实例的私网域名解析。

  • 调整ModifyInstanceAttributePrivateDnsNameOptions相关参数,配置目标 ECS 的私网域名解析。

Terraform

ECS 私网域名解析暂不支持使用 Terraform 配置,本示例仅为 VPC 启用 DNS 主机名。
Resources:alicloud_vpcalicloud_vswitch
Data Sources:alicloud_zones
# 指定创建VPC的地域 
provider "alicloud" {
  region = "cn-hangzhou"
}

# 创建VPC 
resource "alicloud_vpc" "test_vpc" {
  vpc_name            = "test_vpc_name"
  cidr_block          = "10.0.0.0/16"
  dns_hostname_status = "ENABLED" # 启用DNS主机名
}

使用自定义域名通信

启用 DNS 主机名生成的 ECS 私网域名无法修改,如需使用自定义域名,您可以使用阿里云的内网 DNS 解析或自建 DNS 服务。

使用内网 DNS 解析

为统一添加 ECS 的域名解析记录,您可以使用内网 DNS 解析。该服务将结合添加的域名数量、解析请求量收取费用

控制台

  1. 前往内网 DNS 解析控制台,单击添加域名(Zone),配置自定义的内置权威域名(Zone),并设置域名生效范围为目标 VPC。

    单击目标域名 ID,您可以在ECS主机名页签,单击添加 ECS 主机名,系统将自动添加所选地域中 ECS 主机名与 IP 的域名解析记录,但主机名修改后,无法同步更新。您可以开启自动同步配置,系统将自动添加所选地域内的域名解析记录,且1分钟同步1次。如需使用自定义域名前缀,您可以选择解析记录页签,添加自定义主机记录

  2. 前往专有网络控制台 - DHCP 选项集创建 DHCP 选项集,配置域名为对应的内置权威域名。

  3. 在目标 DHCP 选项集的操作列选择关联专有网络,已配置域名解析记录的 ECS 可通过主机名/主机记录被关联 VPC 内的 ECS 访问。

API

依次调用如下 API,使用阿里云的内网 DNS 解析服务:

  1. AddZone - 添加内置权威域名

  2. AddZoneRecord - 添加解析记录UpdateSyncEcsHostTask - 主机名同步

  3. CreateDhcpOptionsSet - 创建 DHCP 选项集

  4. AttachDhcpOptionsSetToVpc - 将 DHCP 选项集关联到 VPC

Terraform

当前不支持自动添加 ECS 主机名解析记录,您需要逐条添加自定义域名解析记录。
Resource:alicloud_pvtz_zonealicloud_pvtz_zone_attachmentalicloud_pvtz_zone_recordalicloud_vpc_dhcp_options_setalicloud_vpc_dhcp_options_set_attachment
# 指定目标VPC所在地域
provider "alicloud" {
  region = "cn-hangzhou"
}

# 配置内置权威域名
resource "alicloud_pvtz_zone" "test_pvtz_zone" {
  zone_name = "example.com"
}

# 设置域名生效范围
resource "alicloud_pvtz_zone_attachment" "test_pvtz_zone_attachment" {
  zone_id = alicloud_pvtz_zone.test_pvtz_zone.id
  vpc_ids = ["vpc-8vba******"] # 指定域名生效的VPC实例ID
}

# 添加域名解析记录
resource "alicloud_pvtz_zone_record" "test_pvtz_zone_record" {
  zone_id = alicloud_pvtz_zone.test_pvtz_zone.id
  rr      = "abc"         # 指定主机记录
  type    = "A"           # 指定域名解析记录类型
  value   = "192.168.0.4" # 指定域名解析记录值
}

# 创建DHCP选项集
resource "alicloud_vpc_dhcp_options_set" "test_dhcp_options_set" {
  dhcp_options_set_name = "test_dhcp_options_set_name"
  domain_name           = "example.com"                 # 指定域名
  domain_name_servers   = "100.100.2.136,100.100.2.138" # 指定阿里云默认DNS服务器IP 
}

# 关联DHCP选项集与VPC
resource "alicloud_vpc_dhcp_options_set_attachment" "test_attachment_vpc" {
  vpc_id              = "vpc-8vba******"                                       # 指定关联的VPC的实例ID
  dhcp_options_set_id = alicloud_vpc_dhcp_options_set.test_dhcp_options_set.id # 指定关联的DHCP选项集的实例ID
}

使用自建 DNS 服务

如果业务需要灵活的DNS调度策略,例如根据地理位置、网络质量、服务器负载等因素动态返回最优IP,您可以自建DNS服务器,但需自行维护域名解析记录,并确保服务可靠性。您可以参考以下示例部署自建DNS服务,并使用DHCP选项集为ECS实例指定自建DNS服务器IP和自定义域名。

使用 BIND 部署自建 DNS 服务示例

  1. 执行 yum install -y bind bind-utils安装 BIND。

  2. 执行 vim /etc/named.conf修改主配置文件的配置项。

    listen-on port 53 { any; };  # 监听所有网络接口的53端口
    allow-query     { any; };    # 允许任何IP进行DNS查询
  3. 执行vim /etc/named.rfc1912.zones配置区域文件。

    // 自定义域名
    zone "example.com" IN {
          type master;
          file "example.com.zone";
    };
    
    zone "0.168.192.in-addr.arpa" IN {
          type master;
          file "0.168.192.zone";
    };
  4. 执行cp -p /var/named/named.localhost /var/named/example.com.zonevim /var/named/example.com.zone配置正向解析文件。

    $TTL 1D
    @       IN      SOA     example.com.  admin.example.com. (
                                                               1       ; serial
                                                               1D      ; refresh
                                                               1H      ; retry
                                                               1W      ; expire
                                                               3H )    ; minimum
    
                  NS      dns.example.com.
    Web01         A       192.168.0.2; 
    Web02         A       192.168.0.3;
  5. 执行cp -p /var/named/named.empty /var/named/0.168.192.zonevim /var/named/0.168.192.zone配置反向解析文件。

    $TTL 3H
    @       IN      SOA     0.168.192.in-addr.arpa. admin.zjq.com. (
                                                               1       ; serial
                                                               1D      ; refresh
                                                               1H      ; retry
                                                               1W      ; expire
                                                               3H )    ; minimum
    
                  NS      dns.example.com.
    2            PTR     Web01.example.com.
    3            PTR     Web02.example.com.
  6. 执行systemctl restart named重启 BIND 服务。

如果您在使用自建 DNS 服务的同时希望使用阿里云 DNS 服务,需要为自建 DNS 服务器配置转发规则,将自定义域名以外的查询请求转发至阿里云默认DNS服务器。

为自建 DNS 服务器配置转发规则

执行vim /etc/named.conf命令,修改配置文件。

// 默认转发:其他请求转发到默认 DNS 服务器
options {
    forwarders { 100.100.2.136; 100.100.2.138; };  # 阿里云VPC默认DNS
    forward only;
};
// 配置自建 DNS 权威解析,"example.com"需替换为自定义域名
zone "example.com" {
    type master;
    file "example.com.zone";  # 域名解析配置文件
};
在自定义 DHCP 选项集中指定 DNS 服务器 IP 时,需注意:
1、控制台会自动填入阿里云的默认 DNS 服务器 IP(100.100.2.136 和 100.100.2.138),如果您删除该 IP,可能会导致您无法访问阿里云基础云上服务,请谨慎操作。调用 API 时,确保填入上述 IP。
2、确保将自建 DNS 服务器 IP 填写在首位,否则将优先向阿里云默认 DNS 服务器发起查询请求。由于默认 DNS 服务器无法解析自定义域名,将直接返回NXDOMAIN,系统将认为无需继续查询后续服务器,从而无法将私网域名解析为 IP 。
3、您需要在关联 VPC 的安全组网络ACL(如有)中添加允许访问自建 DNS 服务器 IP 的规则,否则可能导致域名无法解析。
4、自定义服务器 IP 不支持使用 IPv6 地址。

控制台

  1. 前往专有网络控制台 - DHCP 选项集创建 DHCP 选项集,配置域名为自建 DNS 服务中使用的域名,单击自定义服务器IP,将自建 DNS 服务器 IP 填写在首位。

  2. 在目标 DHCP 选项集的操作列选择关联专有网络,已配置域名解析记录的 ECS 可通过主机名被关联 VPC 内的 ECS 访问。

API

依次调用如下 API,创建自定义 DHCP 选项集指定域名与自建 DNS 服务器 IP,与 VPC 关联。

  1. CreateDhcpOptionsSet - 创建 DHCP 选项集

  2. AttachDhcpOptionsSetToVpc - 将 DHCP 选项集关联到 VPC

Terraform

Resource:alicloud_vpc_dhcp_options_setalicloud_vpc_dhcp_options_set_attachment
# 指定VPC的地域
provider "alicloud" {
  region = "cn-hangzhou"
}

# 创建DHCP选项集
resource "alicloud_vpc_dhcp_options_set" "test_dhcp_options_set" {
  dhcp_options_set_name = "test_dhcp_options_set_name"
  domain_name           = "example.com"                              # 指定域名
  domain_name_servers   = "192.168.0.10,100.100.2.136,100.100.2.138" # 指定DNS服务器IP,首位填写自建DNS服务器IP
}

# 关联DHCP选项集与VPC
resource "alicloud_vpc_dhcp_options_set_attachment" "test_attachment_vpc" {
  vpc_id              = "vpc-8vbg******"                                       # 指定关联的VPC的实例ID
  dhcp_options_set_id = alicloud_vpc_dhcp_options_set.test_dhcp_options_set.id # 指定关联的DHCP选项集的实例ID
}

更多信息

计费说明

DHCP 选项集功能不收费。

支持的地域

公有云支持的地域

区域

支持DHCP选项集的地域

亚太-中国

华东1(杭州)华东2(上海)华北1(青岛)华北2(北京)华北3(张家口)华北5(呼和浩特)华北6(乌兰察布)华南1(深圳)华南3(广州)西南1(成都)中国香港

亚太-其他

日本(东京)韩国(首尔)新加坡马来西亚(吉隆坡)印度尼西亚(雅加达)菲律宾(马尼拉)泰国(曼谷)

欧洲与美洲

德国(法兰克福)英国(伦敦)美国(硅谷)美国(弗吉尼亚)墨西哥

中东

阿联酋(迪拜)沙特(利雅得)

重要

沙特(利雅得)地域由合作伙伴运营。

金融云支持的地域

区域

支持DHCP选项集的地域

亚太

华南1 金融云华东2 金融云华北2 金融云(邀测)

配额

配额名称

描述

默认限制

提升配额

单个账号支持创建的DHCP选项集的数量

默认 DHCP 选项集不占用该配额。

10

无法提升

单个DHCP选项集支持关联的VPC的数量

10

单个VPC支持关联的DHCP选项集的数量

1

单个DHCP选项集支持配置的域名的数量

1

单个DHCP选项集支持配置的DNS服务器IP地址的数量

4