教程:使用 Azure 门户通过路由表路由网络流量
默认情况下,Azure 会在虚拟网络中的所有子网之间路由流量。 可以创建自己的路由来覆盖 Azure 的默认路由。 自定义路由非常有用,例如,它可以让你通过网络虚拟设备 (NVA) 在子网之间路由流量。
本教程介绍如何执行下列操作:
- 创建虚拟网络和子网
- 创建用于流量路由的 NVA
- 将虚拟机 (VM) 部署到不同子网
- 创建路由表
- 创建路由
- 将路由表关联到子网
- 通过 NVA 将从一个子网的流量路由到另一个子网
先决条件
- 具有活动订阅的 Azure 帐户。 你可以免费创建一个帐户。
登录 Azure
登录 Azure 门户。
创建虚拟网络和 Azure Bastion 主机
以下过程创建包含资源子网、Azure Bastion 子网和 Bastion 主机的虚拟网络:
在门户中,搜索并选择“虚拟网络”。
在“虚拟网络”页面上,选择“+ 创建”。
在创建虚拟网络的基本信息选项卡上输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“新建”。
输入“test-rg”作为名称。
选择“确定”。实例详细信息 名称 输入“vnet-1”。 区域 选择“(亚太)中国东部 2”。 选择“下一步”,转到“安全性”选项卡。
在“Azure Bastion”部分,选择“启用 Bastion”。
Bastion 使用浏览器通过安全外壳 (SSH) 或远程桌面协议 (RDP),通过使用其专用 IP 地址连接虚拟网络中的虚拟机。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关详细信息,请参阅什么是 Azure Bastion?。
在“Azure Bastion”中,输入或选择以下信息:
设置 值 Azure Bastion 主机名 输入“堡垒”。 Azure Bastion 公共 IP 地址 选择“创建公共 IP 地址”。
在名称中输入 public-ip-bastion。
选择“确定”。选择下一步,转到IP 地址选项卡。
在“子网”的地址空间框中,选择“默认”子网。
在编辑子网中,输入或选择以下信息:
设置 值 子网详细信息 子网模板 保留默认值“默认”。 名称 输入“subnet-1”。 开始地址 保留默认值“10.0.0.0”。 子网大小 保留默认值“/24 (256 个地址)”。 选择“保存”。
在窗口底部选择“查看 + 创建”。 验证通过后,选择“创建”。
创建子网
本教程需要“外围网络”和“专用”子网。 “外围网络”子网是部署 NVA 的位置,而“专用”子网是部署要将流量路由到的虚拟机的位置。 subnet-1 是在前面的步骤中创建的子网。 对公共虚拟机使用 subnet-1。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
在“虚拟网络”中,选择“vnet-1”。
在 vnet-1 中,从“设置”部分选择“子网”。
在虚拟网络的子网列表中,选择“子网”。
在“添加子网”中,输入或选择以下信息:
设置 “值” 子网用途 保留默认值“默认”。 名称 输入 subnet-private。 IPv4 IPv4 地址范围 保留默认值“10.0.0.0/16”。 开始地址 输入 10.0.2.0。 大小 保留默认值“/24 (256 个地址)”。 选择 添加 。
选择“+ 子网”。
在“添加子网”中,输入或选择以下信息:
设置 “值” 子网用途 保留默认值“默认”。 名称 输入“subnet-dmz”。 IPv4 IPv4 地址范围 保留默认值“10.0.0.0/16”。 开始地址 输入 10.0.3.0。 大小 保留默认值“/24 (256 个地址)”。 选择 添加 。
创建 NVA 虚拟机
网络虚拟设备 (NVA) 是帮助提供网络功能(例如路由和防火墙优化)的虚拟机。 在本部分,使用 Ubuntu 24.04 虚拟机创建 NVA。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“test-rg”。 实例详细信息 虚拟机名称 输入 vm-nva。 区域 选择“中国北部 2” 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Ubuntu Server 24.04 LTS - x64 Gen2”。 VM 架构 保留默认值“x64”。 大小 选择一个大小。 管理员帐户 身份验证类型 选择密码。 用户名 输入用户名。 Password 输入密码。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
设置 值 网络接口 虚拟网络 选择“vnet-1”。 子网 选择“subnet-dmz (10.0.3.0/24)”。 公共 IP 选择无。 NIC 网络安全组 选择“高级”。 配置网络安全组 选择“新建”。
在“名称”中,输入 nsg-nva。
选择“确定”。将其余选项保留为默认值,然后选择“查看 + 创建”。
选择创建。
创建公共和专用虚拟机
在 vnet-1 虚拟网络中创建两个虚拟机。 一个虚拟机位于 subnet-1 子网中,另一个虚拟机位于 subnet-private 子网中。 对两个虚拟机使用相同的虚拟机映像。
创建公共虚拟机
公共虚拟机用于模拟公共 Internet 中的计算机。 公共和专用虚拟机用于测试通过 NVA 虚拟机的网络流量路由。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“test-rg”。 实例详细信息 虚拟机名称 输入“vm-public”。 区域 选择“中国北部 2” 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Ubuntu Server 22.04 LTS - x64 Gen2”。 VM 架构 保留默认值“x64”。 大小 选择一个大小。 管理员帐户 身份验证类型 选择密码。 用户名 输入用户名。 Password 输入密码。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
设置 值 网络接口 虚拟网络 选择“vnet-1”。 子网 选择“subnet-1 (10.0.0.0/24)”。 公共 IP 选择无。 NIC 网络安全组 选择“无”。 将其余选项保留为默认值,然后选择“查看 + 创建”。
选择创建。
创建专用虚拟机
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“test-rg”。 实例详细信息 虚拟机名称 输入vm-private。 区域 选择“中国北部 2” 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准”。 映像 选择“Ubuntu Server 24.04 LTS - x64 Gen2”。 VM 架构 保留默认值“x64”。 大小 选择一个大小。 管理员帐户 身份验证类型 选择密码。 用户名 输入用户名。 Password 输入密码。 确认密码 重新输入密码。 入站端口规则 公共入站端口 选择“无”。 选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
设置 值 网络接口 虚拟网络 选择“vnet-1”。 子网 选择“subnet-private (10.0.2.0/24)”。 公共 IP 选择无。 NIC 网络安全组 选择“无”。 将其余选项保留为默认值,然后选择“查看 + 创建”。
选择创建。
启用 IP 转发
若要通过 NVA 路由流量,请在 Azure 中和 vm-nva 的操作系统中启用 IP 转发。 启用 IP 转发后,vm-nva 收到的任何发往不同 IP 地址的流量都不会被丢弃,而是会被转发到正确的目标。
在 Azure 中启用 IP 转发
在本部分,请为 vm-nva 虚拟机的网络接口启用 IP 转发。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
在“虚拟机”中,选择“vm-nva”。
在 vm-nva 中,展开“网络”,然后选择“网络设置”。
选择“网络接口:”旁边的接口名称。 该名称以 vm-nva 开头,为接口分配了一个随机编号。 此示例中的接口名称为 vm-nva313。
在网络接口概述页上的“设置”部分,选择“IP 配置”。
在“IP 配置”中,选中“启用 IP 转发”旁边的框。
选择“应用”。
在操作系统中启用 IP 转发
在本部分,请为 vm-nva 虚拟机的操作系统启用 IP 转发,以转发网络流量。 使用 Azure Bastion 服务连接到 vm-nva 虚拟机。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
在“虚拟机”中,选择“vm-nva”。
在“概述”部分中选择“连接”,然后选择“通过 Bastion 连接”。
输入创建虚拟机时输入的用户名和密码。
选择“连接” 。
在虚拟机的提示符处输入以下信息以启用 IP 转发:
sudo vim /etc/sysctl.conf
在 Vim 编辑器中,删除
net.ipv4.ip_forward=1
行中的#
:按 Insert 键。
# Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
按 Esc 键。
输入
:wq
,然后按 Enter。关闭 Bastion 会话。
重启虚拟机。
创建路由表
在本部分,请创建一个路由表来定义通过 NVA 虚拟机的流量的路由。 该路由表与部署了 vm-public 虚拟机的 subnet-1 子网关联。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“+ 新建”。
在“创建路由表”中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择“test-rg”。 实例详细信息 区域 选择“中国东部”。 名称 输入“route-table-public”。 传播网关路由 保留默认值“是”。 选择“查看 + 创建”。
选择“创建”。
创建路由
在本部分,请在前面步骤中创建的路由表中创建路由。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“route-table-public”。
展开“设置”,然后选择“路由”。
在“路由”中选择“+ 添加”。
在“添加路由”中,输入或选择以下信息:
设置 值 路由名称 输入“to-private-subnet”。 目标类型 选择“IP 地址”。 目标 IP 地址/CIDR 范围 输入 10.0.2.0/24。 下一跃点类型 选择“虚拟设备”。 下一跃点地址 输入“10.0.3.4”。
这是你在前面的步骤中创建的 vm-nva 的 IP 地址。选择 添加 。
在“设置”中选择“子网”。
选择“+ 关联”。
在“关联子网”中,输入或选择以下信息:
设置 值 虚拟网络 选择 vnet-1 (test-rg)。 子网 选择 subnet-1。 选择“确定”。
测试网络流量的路由
测试从 vm-public 到 vm-private 的网络流量的路由。 测试从 vm-private 到 vm-public 的网络流量的路由。
测试从 vm-public 到 vm-private 的网络流量
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
在“虚拟机”中,选择“vm-public”。
在“概述”部分中选择“连接”,然后选择“通过 Bastion 连接”。
输入创建虚拟机时输入的用户名和密码。
选择“连接” 。
在提示符中,输入以下命令来跟踪从 vm-public 到 vm-private 的网络流量的路由:
tracepath vm-private
其响应类似于如下示例:
azureuser@vm-public:~$ tracepath vm-private 1?: [LOCALHOST] pmtu 1500 1: vm-nva.internal.chinacloudapp.cn 1.766ms 1: vm-nva.internal.chinacloudapp.cn 1.259ms 2: vm-private.internal.chinacloudapp.cn 2.202ms reached Resume: pmtu 1500 hops 2 back 1
可以看到,对于从 vm-public 到 vm-private 的
tracepath
ICMP 流量,上述响应中有两个跃点。 第一个跃点为 vm-nva。 第二个跃点是目标 vm-private。Azure 通过 NVA 发送来自 subnet-1 的流量,而不是直接发送到 subnet-private,原因是你之前已将 to-private-subnet 路由添加到 route-table-public,并将其关联到了 subnet-1。
关闭 Bastion 会话。
测试从 vm-private 到 vm-public 的网络流量
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
在“虚拟机”中,选择“vm-private”。
在“概述”部分中选择“连接”,然后选择“通过 Bastion 连接”。
输入创建虚拟机时输入的用户名和密码。
选择“连接” 。
在提示符中,输入以下命令来跟踪从 vm-private 到 vm-public 的网络流量的路由:
tracepath vm-public
其响应类似于如下示例:
azureuser@vm-private:~$ tracepath vm-public 1?: [LOCALHOST] pmtu 1500 1: vm-public.internal.chinacloudapp.cn 2.584ms reached 1: vm-public.internal.chinacloudapp.cn 2.147ms reached Resume: pmtu 1500 hops 1 back 2
可以看到上述响应中有一个跃点,即目标 vm-public。
Azure 将流量直接从 subnet-private 发送到了 subnet-1。 默认情况下,Azure 直接在子网之间路由流量。
关闭 Bastion 会话。
清理资源
使用创建的资源之后,可以删除资源组及其所有资源:
在 Azure 门户中,搜索并选择“资源组”。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。
后续步骤
在本教程中,你将了解:
创建了一个路由表并将其关联到了某个子网。
创建简单 NVA,用于将流量从公共子网路由到专用子网。
若要了解如何通过虚拟网络服务终结点限制对 PaaS 资源的网络访问,请继续学习下一教程。