你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Azure 门户通过路由表路由网络流量
默认情况下,Azure 会在虚拟网络中的所有子网之间路由流量。 可以创建自己的路由来覆盖 Azure 的默认路由。 自定义路由非常有用,例如,它可以让你通过网络虚拟设备 (NVA) 在子网之间路由流量。
在本教程中,你将了解如何执行以下操作:
- 创建虚拟网络和子网
- 创建用于流量路由的 NVA
- 将虚拟机 (VM) 部署到不同子网
- 创建路由表
- 创建路由
- 将路由表关联到子网
- 通过 NVA 将从一个子网的流量路由到另一个子网
本教程使用 Azure 门户。 也可以使用 Azure CLI 或 PowerShell 完成此操作。
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
概述
此图显示了在本教程中创建的资源以及预期的网络路由。
先决条件
- Azure 订阅
登录 Azure
登录 Azure 门户。
创建虚拟网络
在本部分,需创建一个虚拟网络、三个子网和一个堡垒主机。 你将使用堡垒主机安全地连接到虚拟机。
在 Azure 门户菜单中,选择“+ 创建资源”>“网络”>“虚拟网络”,或者在门户搜索框中搜索“虚拟网络”。
选择“创建”。
在“创建虚拟网络”的“基本信息”选项卡中,输入或选择以下信息:
设置 Value 订阅 选择订阅。 资源组 选择“新建”,输入 myResourceGroup 。 选择“确定”。 名称 输入 myVirtualNetwork。 区域 选择“美国东部”。 选择“IP 地址”选项卡,或选择页面底部的“下一步: IP 地址”按钮。
在“IPv4 地址空间”中,选择现有地址空间,并将其更改为 10.0.0.0/16。
选择“+ 添加子网”,然后输入“公共”作为“子网名称”,输入 10.0.0.0/24 作为“子网地址范围”。
选择 添加 。
选择“+ 添加子网”,然后输入“专用”作为“子网名称”,输入 10.0.1.0/24 作为“子网地址范围”。
选择 添加 。
选择“+ 添加子网”,然后输入“外围网络”作为“子网名称”,输入 10.0.2.0/24 作为“子网地址范围”。
选择 添加 。
选择“安全性”选项卡,或者选择“下一步: 安全性”按钮(位于页面底部)。
在“BastionHost”下,选择“启用” 。 输入此信息:
设置 值 Bastion 名称 输入“myBastionHost”。 AzureBastionSubnet 地址空间 输入“10.0.3.0/24”。 公共 IP 地址 选择“新建”。 对于“名称”,请输入“myBastionIP”。 选择“确定”。 选择“查看 + 创建”选项卡,或选择“查看 + 创建”按钮。
选择“创建”。
创建 NVA 虚拟机
网络虚拟设备 (NVA) 是帮助提供网络功能(例如路由和防火墙优化)的虚拟机。 在本部分,需使用 Windows Server 2019 Datacenter 虚拟机创建 NVA。 如果需要,可以选择不同的操作系统。
在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”,或者在门户搜索框中搜索“虚拟机”。
选择“创建”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“myResourceGroup”。 实例详细信息 虚拟机名称 输入“myVMNVA”。 区域 选择“(US)美国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Windows Server 2019 Datacenter - Gen2”。 Azure Spot 实例 请选择“否”。 大小 选择 VM 大小或采用默认设置。 管理员帐户 用户名 输入用户名。 Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”选项卡中,选择或输入:
设置 值 网络接口 虚拟网络 选择“myVirtualNetwork”。 子网 选择“外围网络” 公共 IP 选择“无” NIC 网络安全组 选择“基本” 公共入站端口网络 选择“无”。 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮。
检查设置,然后选择“创建”。
创建公共和专用虚拟机
需在 myVirtualNetwork 虚拟网络中创建两个虚拟机,然后在这些虚拟机上允许 Internet 控制消息协议 (ICMP),以便使用 tracert 工具来跟踪流量。
注意
对于生产环境,我们不建议允许通过 Windows 防火墙的 ICMP。
创建公共虚拟机
在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息 :
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“myResourceGroup”。 实例详细信息 虚拟机名称 输入“myVMPublic”。 区域 选择“(US)美国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Windows Server 2019 Datacenter - Gen2”。 Azure Spot 实例 请选择“否”。 大小 选择 VM 大小或采用默认设置。 管理员帐户 用户名 输入用户名。 Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”选项卡中,选择或输入:
设置 值 网络接口 虚拟网络 选择“myVirtualNetwork”。 子网 选择“公共”。 公共 IP 选择“无”。 NIC 网络安全组 选择“基本”。 公共入站端口网络 选择“无”。 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。
检查设置,然后选择“创建”。
创建专用虚拟机
在 Azure 门户菜单中,选择“创建资源”>“计算”>“虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息 :
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“myResourceGroup”。 实例详细信息 虚拟机名称 输入“myVMPrivate”。 区域 选择“(US)美国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Windows Server 2019 Datacenter - Gen2”。 Azure Spot 实例 请选择“否”。 大小 选择 VM 大小或采用默认设置。 管理员帐户 用户名 输入用户名。 Password 输入密码。 密码必须至少 12 个字符长,且符合定义的复杂性要求。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“网络”选项卡,或选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”选项卡中,选择或输入:
设置 值 网络接口 虚拟网络 选择“myVirtualNetwork”。 子网 选择“专用”。 公共 IP 选择“无”。 NIC 网络安全组 选择“基本”。 公共入站端口网络 选择“无”。 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。
检查设置,然后选择“创建”。
在 Windows 防火墙中允许 ICMP
选择“转到资源”或在门户搜索框中“搜索“myVMPrivate”。
在“myVMPrivate”的“概述”页上,选择“连接”,然后选择“堡垒”。
输入以前为 myVMPrivate 虚拟机创建的用户名和密码。
选择“连接”按钮。
连接后,打开 Windows PowerShell。
输入以下命令:
New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
在 PowerShell 中,打开与 myVMPublic 虚拟机的远程桌面连接:
mstsc /v:myvmpublic
连接到 myVMPublic VM 后,打开 Windows PowerShell 并输入步骤 6 中的同一命令。
关闭与 myVMPublic VM 的远程桌面连接。
启用 IP 转发
若要通过 NVA 路由流量,请在 Azure 和 myVMNVA 虚拟机的操作系统中启用 IP 转发。 启用 IP 转发后,myVMNVA VM 收到的任何发往不同 IP 地址的流量都不会被丢弃,而是会被转发到正确的目标。
在 Azure 中启用 IP 转发
在本部分,需为 Azure 中的 myVMNVA 虚拟机的网络接口启用 IP 转发。
在门户搜索框中搜索“myVMNVA”。
在 myVMNVA 概述页中,从“设置”部分选择“网络”。
在 myVMNVA 的“网络”页中,选择“网络接口:”旁边的网络接口。 该接口的名称以 myvmnva 开头。
在网络接口概述页上的“设置”部分,选择“IP 配置”。
在“IP 配置”页中,将“IP 转发”设置为“已启用”,然后选择“保存” 。
在操作系统中启用 IP 转发
在本部分,需为 myVMNVA 虚拟机的操作系统启用 IP 转发,以转发网络流量。 你将使用与 myVMPrivate VM 之间的同一堡垒连接(已在前面的步骤中启动),来打开与 myVMNVA VM 的远程桌面连接。
在 myVMPrivate VM 上的 PowerShell 中,打开与 myVMNVA VM 的远程桌面连接:
mstsc /v:myvmnva
连接到 myVMNVA VM 后,打开 Windows PowerShell 并输入以下命令以启用 IP 转发:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1
重启 myVMNVA VM。
Restart-Computer
创建路由表
在本部分,需创建一个路由表。
在 Azure 门户菜单中,选择“+ 创建资源”>“网络”>“路由表”,或在门户搜索框中搜索“路由表”。
选择“创建”。
在“创建路由表”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“myResourceGroup”。 实例详细信息 区域 选择“美国东部”。 名称 输入 myRouteTablePublic。 传播网关路由 请选择“是”。 选择“查看 + 创建”选项卡,或选择页面底部的“查看 + 创建”按钮 。
创建路由
在本部分,需在前面步骤中创建的路由表中创建路由。
选择“转到资源”或在门户搜索框中搜索“myRouteTablePublic”。
在“myRouteTablePublic”页中的“设置”部分,选择“路由”。
在“路由”页中,选择“+ 添加”按钮。
在“添加路由”中,输入或选择以下信息:
设置 值 路由名称 输入 ToPrivateSubnet。 地址前缀目标 选择“IP 地址”。 目标 IP 地址/CIDR 范围 输入“10.0.1.0/24”(前面创建的“专用”子网的地址范围)。 下一跃点类型 选择“虚拟设备”。 下一跃点地址 输入“10.0.2.4”(前面在“DMZ”子网中创建的 myVMNVA VM 的地址)。 选择 添加 。
将路由表关联到子网
在本部分,需将在前面步骤中创建的路由表关联到子网。
在门户搜索框中搜索“myVirtualNetwork”。
在“myVirtualNetwork”页中的“设置”部分,选择“子网”。
在虚拟网络的子网列表中,选择“公共”。
在“路由表”中,选择在前面步骤中创建的“myRouteTablePublic”。
选择“保存”,将路由表关联到“公共”子网 。
测试网络流量的路由
请使用 tracert 工具测试从 myVMPublic VM 到 myVMPrivate VM 的网络流量路由,然后测试相反方向的路由。
测试从 myVMPublic VM 到 myVMPrivate VM 的网络流量
在 myVMPrivate VM 上的 PowerShell 中,打开与 myVMPublic VM 的远程桌面连接:
mstsc /v:myvmpublic
连接到 myVMPublic VM 后,打开 Windows PowerShell 并输入以下 tracert 命令来跟踪从 myVMPublic VM 到 myVMPrivate VM 的网络流量路由:
tracert myvmprivate
响应类似于以下示例:
Tracing route to myvmprivate.q04q2hv50taerlrtdyjz5nza1f.bx.internal.cloudapp.net [10.0.1.4] over a maximum of 30 hops: 1 1 ms * 2 ms myvmnva.internal.cloudapp.net [10.0.2.4] 2 2 ms 1 ms 1 ms myvmprivate.internal.cloudapp.net [10.0.1.4] Trace complete.
可以看到,对于从 myVMPublic VM 到 myVMPrivate VM 的 tracert ICMP 流量,上述响应中有两个跃点。 第一个跃点是 myVMNVA VM,第二个跃点是目标 myVMPrivate VM。
Azure 通过 NVA 发送来自“公共”子网的流量,而不是直接发送到“专用”子网,因为之前已将 ToPrivateSubnet 路由添加到 myRouteTablePublic 路由表并将其关联到“公共”子网。
关闭与 myVMPublic VM 的远程桌面连接。
测试从 myVMPrivate VM 到 myVMPublic VM 的网络流量
在 myVMPrivate VM 上的 PowerShell 中,输入以下 tracert 命令来跟踪从 myVmPrivate VM 到 myVmPublic VM 的网络流量路由。
tracert myvmpublic
响应类似于以下示例:
Tracing route to myvmpublic.q04q2hv50taerlrtdyjz5nza1f.bx.internal.cloudapp.net [10.0.0.4] over a maximum of 30 hops: 1 1 ms 1 ms 1 ms myvmpublic.internal.cloudapp.net [10.0.0.4] Trace complete.
可以看到上述响应中有一个跃点,即目标 myVMPublic 虚拟机。
Azure 将流量直接从“专用”子网发送到“公共”子网。 默认情况下,Azure 直接在子网之间路由流量。
关闭堡垒会话。
清理资源
不再需要资源组时,请删除 myResourceGroup 及其包含的所有资源:
在 Azure 门户顶部的“搜索”框中输入“myResourceGroup”。 当在搜索结果中看到“myResourceGroup”时,将其选中。
选择“删除资源组”。
对于“键入资源组名称:”,输入“myResourceGroup”,然后选择“删除”。
后续步骤
在本教程中,你将了解:
- 创建了一个路由表并将其关联到了某个子网。
- 创建了一个简单的 NVA,用于将流量从公共子网路由到专用子网。
可以从 Azure 市场部署不同的预配置 NVA,其中提供了许多有用的网络功能。
若要了解如何通过虚拟网络服务终结点限制对 PaaS 资源的网络访问,请继续学习下一教程。