在 Azure 中的虚拟机上部署 DHCP 服务器

了解如何在 Azure 中的虚拟机上部署高可用性 DHCP 服务器。 该服务器用作本地 DHCP 中继代理的目标,以便为本地客户端提供动态 IP 地址分配。 DHCP 中继代理将单播 DHCP 请求从本地客户端转发到 Azure 中运行的 DHCP 服务器。 根据设计,从客户端到 DHCP 服务器的直接广播数据包在 Azure 虚拟网络中不起作用。

注意

Azure 仍不支持本地客户端到 DHCP 服务器(源端口 UDP/68、目标端口 UDP/67),因为截获和处理此流量的方式是不同的。 当客户端直接尝试在 Azure 中访问 DHCP 服务器时,这将在进行 T1 级 DHCP 续订时导致超时消息。 通过 DHCP 中继代理在 T2 级尝试进行 DHCP 续订时,DHCP 续订将成功。 有关 T1 和 T2 DHCP RENEW 计时器的更多详细信息,请参阅 RFC 2131

先决条件

创建虚拟网络和 Azure Bastion 主机

以下过程创建包含资源子网、Azure Bastion 子网和 Bastion 主机的虚拟网络:

  1. 在门户中,搜索并选择“虚拟网络”。

  2. 在“虚拟网络”页面上,选择“+ 创建”。

  3. 创建虚拟网络基本信息选项卡上输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“新建”。
    输入“test-rg”作为名称。
    选择“确定”。
    实例详细信息
    名称 输入“vnet-1”。
    区域 选择“(亚太)中国东部 2”。

    用于在 Azure 门户中创建虚拟网络的“基本信息”选项卡的屏幕截图。

  4. 选择“下一步”,转到“安全性”选项卡。

  5. 在“Azure Bastion”部分,选择“启用 Bastion”

    Bastion 使用浏览器通过安全外壳 (SSH) 或远程桌面协议 (RDP),通过使用其专用 IP 地址连接虚拟网络中的虚拟机。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关详细信息,请参阅什么是 Azure Bastion?

    注意

    每小时定价从部署 Bastion 的时刻开始计算,无论出站数据的使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

  6. 在“Azure Bastion”中,输入或选择以下信息:

    设置
    Azure Bastion 主机名 输入“堡垒”。
    Azure Bastion 公共 IP 地址 选择“创建公共 IP 地址”。
    在名称中输入 public-ip-bastion
    选择“确定”。

    用于在 Azure 门户中创建虚拟网络时启用 Azure Bastion 主机的选项的屏幕截图。

  7. 选择下一步,转到IP 地址选项卡。

  8. 在“子网”的地址空间框中,选择“默认”子网。

  9. 编辑子网中,输入或选择以下信息:

    设置
    子网详细信息
    子网模板 保留默认值“默认”。
    名称 输入“subnet-1”。
    开始地址 保留默认值“10.0.0.0”。
    子网大小 保留默认值“/24 (256 个地址)”。

    子网配置详细信息的屏幕截图。

  10. 选择“保存”。

  11. 在窗口底部选择“查看 + 创建”。 验证通过后,选择“创建”。

创建虚拟机

在本部分中,将在两个不同的可用性区域(区域 1 和区域 2)中创建两个 VM(vm-1vm-2),以便为 DHCP 服务提供高可用性。

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  2. 选择“+ 创建”,然后选择“Azure 虚拟机”。

  3. 在“创建虚拟机”中,在“基本信息”选项卡中键入或选择值:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    虚拟机名称 输入“vm-1”。
    区域 选择“中国北部 3”。
    可用性选项 选择“可用性区域”。
    可用性区域 选择“区域 1”
    安全类型 选择“标准”。
    图像 选择Windows Server 2022 Datacenter - x64 Gen2
    VM 架构 保留默认值“x64”。
    大小 选择一个大小。
    管理员帐户
    身份验证类型 选择密码
    用户名 输入“azureuser”。
    Password 输入密码。
    确认密码 重新输入密码。
    入站端口规则
    公共入站端口 选择“无”。
  4. 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。

  5. 在“网络”选项卡中,输入或选择以下信息:

    设置
    网络接口
    虚拟网络 选择“vnet-1”。
    子网 选择“subnet-1 (10.0.0.0/24)”。
    公共 IP 选择“无”。
    NIC 网络安全组 选择基本
    公共入站端口 保留默认值“无”。
  6. 选择“查看 + 创建”。

  7. 检查设置,然后选择“创建”。

  8. 按照前面的步骤创建具有以下值的第二个 VM,以及与 vm-1 相同的所有其他设置:

    设置 VM 2
    名称 vm-2
    可用性区域 区域 2

配置 DHCP 服务器网络适配器

你将使用 Azure Bastion 登录到虚拟机,并为每个虚拟机配置网络适配器设置和 DHCP 服务器角色。

  1. 在 Azure 门户中,搜索并选择“虚拟机”。

  2. 选择 vm-1

  3. 在“vm-1”页中选择“连接”,然后选择“通过 Bastion 连接”

  4. 输入在创建虚拟机时指定的用户名和密码。

  5. 以管理员身份打开 PowerShell

  6. 运行以下命令安装 DHCP 服务器角色:

    Install-WindowsFeature -Name DHCP -IncludeManagementTools
    

安装 Microsoft 环回适配器

使用以下步骤通过硬件向导安装 Microsoft 环回适配器:

  1. 在虚拟机上打开“设备管理器”

  2. 在“设备管理器”中选择计算机名“vm-1”

  3. 在菜单栏中选择“操作,然后选择“添加传统硬件”

  4. 在“添加硬件向导”中,选择“下一步”

  5. 选择“安装我手动从列表选择的硬件(高级)”,然后选择“下一步”

  6. 在“常见硬件类型”列表中选择“网络适配器”,然后选择“下一步”

  7. 在“制造商”列表框中,选择“Microsoft”

  8. 在“网络适配器”列表框中选择“Microsoft 环回适配器”,然后选择“下一步”

  9. 选择“下一步”开始安装硬件驱动程序

  10. 选择“完成”

  11. 在“设备管理器”中,展开“网络适配器”。 验证是否列出了“Microsoft 环回适配器”

  12. 关闭“设备管理器”

为 Microsoft 环回适配器设置静态 IP 地址

使用以下步骤为 Microsoft 环回适配器设置静态 IP 地址:

  1. 在虚拟机上打开“网络和 Internet 设置”

  2. 选择“更改适配器选项”

  3. 右键单击“Microsoft 环回适配器”并选择“属性”

  4. 选择“Internet 协议版本 4 (TCP/IPv4)”,然后选择“属性”

  5. 选择“使用下面的 IP 地址”

  6. 输入以下信息:

    设置
    IP 地址 输入 10.0.0.100
    子网掩码 输入 255.255.255.0
  7. 选择“确定”

  8. 选择关闭

在 Azure 中将环回 IP 地址添加为辅助 IP 配置

在虚拟机上配置环回适配器 IP 地址后,必须在 Azure VM 的网络接口上添加与辅助 IP 配置相同的 IP 地址。 此关键步骤可确保 Azure 可以将单播 DHCP 请求路由到 DHCP 服务器。

  1. 在 Azure 门户中,搜索并选择“虚拟机”。

  2. 选择 vm-1

  3. vm-1 页中,选择“ 网络” ,然后选择 “网络设置”。

  4. 选择 网络接口旁边的网络接口名称。 网络接口名称类似于 vm-1123

  5. 在网络接口页上的“设置”中,选择“IP 配置” 。

  6. 选择+ 添加

  7. “添加 IP 配置”中输入或选择以下信息:

    设置
    Name 输入 ipconfig2
    分配 选择“静态”。
    IP 地址 输入 10.0.0.100
  8. 选择“确定”

  9. 验证 IP 配置中是否列出了 ipconfig1ipconfig2

在环回接口和网络适配器之间启用路由

使用以下步骤在环回接口和网络适配器之间启用路由:

  1. 以管理员身份打开“CMD”

  2. 运行以下命令列出网络接口:

    netsh int ipv4 show int
    
    C:\Users\azureuser>netsh int ipv4 show int
    
    Idx     Met         MTU          State                Name
    ---  ----------  ----------  ------------  ---------------------------
      1          75  4294967295  connected     Loopback Pseudo-Interface 1
      6           5        1500  connected     Ethernet
     11          25        1500  connected     Ethernet 3
    

    在此示例中,连接到 Azure 虚拟网络的网络接口为“Ethernet”。 在上一部分中安装的环回接口为“Ethernet 3”

    请记下主网络适配器和环回适配器的 Idx 编号。 在此示例中,主网络适配器为 6,环回适配器为 11。 在后面的步骤中需要用到这些值。

    注意

    请不要将环回伪接口 1Microsoft 环回适配器相混淆。 此方案不使用环回伪接口 1

  3. 运行以下命令,在主网络适配器上启用 weakhostreceiveweakhostsend

    netsh int ipv4 set int 6 weakhostreceive=enabled weakhostsend=enabled
    
  4. 运行以下命令,在环回适配器上启用 weakhostreceiveweakhostsend

    netsh int ipv4 set int 11 weakhostreceive=enabled weakhostsend=enabled
    
  5. 关闭与 vm-1的 Bastion 连接。

  6. 重复上述步骤以配置 vm-2。 在环回适配器的静态 IP 地址配置和 Azure 门户中的辅助 IP 配置中,将 10.0.0.100 的 IP 地址替换为 10.0.0.200

验证 DHCP 服务器绑定

完成配置后,请验证 DHCP 服务器是否已正确绑定到环回适配器 IP 地址。

  1. 通过 Azure Bastion 连接到 vm-1

  2. 以管理员身份打开 PowerShell

  3. 运行以下命令,验证 DHCP 服务器正在侦听环回 IP 地址:

    netstat -an | Select-String "67"
    

    应会看到显示绑定到 10.0.0.100 的 UDP 端口 67 的输出:

    UDP    10.0.0.100:67          *:*
    
  4. 或者,打开 DHCP 管理控制台并验证环回适配器是否已列出并绑定到 DHCP 控制台中的 IP 地址 10.0.0.100

  5. 关闭与 vm-1的 Bastion 连接。

配置 DHCP 中继代理

配置本地 DHCP 中继代理,以将 DHCP 请求转发到 Azure 中 DHCP 服务器的环回 IP 地址。 若要实现高可用性,请使用两个服务器地址配置中继代理:

  • 10.0.0.100 (vm-1)
  • 10.0.0.200 (vm-2)

DHCP 中继代理原生支持在其配置中指定多个 DHCP 服务器,提供故障转移和冗余,而无需额外的负载均衡组件。

有关特定配置步骤,请参阅 DHCP 中继代理制造商的文档。

下一步

在本文中,你已了解如何在 Azure 中的虚拟机上部署高可用性 DHCP 服务器。 使用环回适配器配置了网络适配器,并在 Azure 中将环回 IP 地址添加为辅助 IP 配置,以确保正确的路由。 此外,还在虚拟机上安装 DHCP 角色。

需要进一步配置 DHCP 服务器才能从 Azure 虚拟机为本地客户端提供 DHCP 服务。 必须将本地网络上的 DHCP 中继代理配置为将 DHCP 请求转发到 Azure 中 DHCP 服务器的环回 IP 地址(10.0.0.100 和 10.0.0.200)。 有关配置步骤,请参阅 DHCP 中继代理制造商的文档。