示例:使用 NFX150 新一代 uCPE 进行小型分支机构部署
此示例说明如何在 NFX150 设备的 LAN 端口上配置 802.1X 身份验证,以及如何载入基于 Ubuntu 的 VNF。用于身份验证的 RADIUS 服务器基于 FreeRADIUS。
FreeRADIUS 服务器的配置超出了本文档的范围。
要求
一台 NFX150 设备。
注意:此示例使用 NFX150-S1 设备进行测试。此示例还支持使用 NFX150-C-S1、NFX150-C-S1-AE、NFX150-C-S1-AA、NFX150-C-S1E-AE、NFX150-C-S1E-AA、NFX150-S1 或 NFX150-S1E 设备。
Junos OS 20.1R1 或更高版本。
Ubuntu 20.04 操作系统。
FreeRADIUS 版本 3。
此示例中用于生成 iso
和 qcow2
文件的工作站基于 Ubuntu 20.04 操作系统。如果您使用的是 Ubuntu 以外的工作站(例如 Windows),则生成 iso
和 qcow2
文件的步骤可能略有不同。
概述
在此示例中,我们设立了一个分支机构 NFX150 uCPE,为现场员工提供有线互联网和内联网访问。宽带互联网接入是通过以太网链路实现的。基于 Ubuntu 20.04 的 VNF 已载入在 NFX150 设备上。FreeRADIUS RADIUS 服务器为 NFX150 设备的 LAN 端口提供 802.1X 身份验证。
拓扑
图 1 显示了一个使用 NFX150 连接到互联网的远程分支机构。802.1X 身份验证在 NFX150 设备的 LAN 端口上配置,以提供互联网和内联网访问。
VNF 的服务链以及 NFX150 上的接口配置详细信息如图 2 所示:
在拓扑图中 ,图 2:
宽带互联网连接已连接到接口 ge-1/0/1。接口直接连接到物理接口 heth-0-0。
NFX150 设备的 1 Gbps 主机以太网链路(heth-0-1 到 heth-0-4)连接到默认 VLAN 1。
默认 VLAN 1 进一步传播到接口 sxe-0/0/0,并在接口 ge-1/0/0 上配置为单元 1。子接口用于 DHCP 服务器为连接到 NFX150 设备前端端口的设备提供网络地址配置。端口 heth-0-1 到 heth-0-4 的第 2 层接口分别为 ge-0/0/1 到 ge-0/0/4。
接口 ge-1/0/2 和 eth2 连接到自定义网桥 半径-br。VNF 的接口 eth2 被 Ubuntu 操作系统识别为 ens5。
在此示例中,NFX150 上配置了两个安全区域(不 信任和 信任)。通过将接口分离到安全区域中,可以分离流量并减轻公司内部网面临的风险。安全区也是明确和简化执行安全政策的工具。 不信任 区域托管有权访问互联网的接口。企业内部网中的内部接口位于 信任 区域中。具体而言,接口 ge-1/0/1 位于 不信任 区域中,而其余 LAN 接口位于 信任 区域中。 图 3 和下表显示了接口、安全区域和安全策略配置:
从区域 |
到区域 |
允许流量的安全策略行为 |
---|---|---|
信任 |
信任 |
不 |
不信任 |
不信任 |
不 |
信任 |
不信任 |
是的 |
不信任 |
信任 |
仅信任启动。 允许在信任区域中启动的流量和返回流量。 |
表 2 汇总了接口的 VLAN 信息和 IP 地址信息。
接口 |
虚拟帧 ID |
IP 地址 |
网络掩码 |
---|---|---|---|
ge-1/0/1 |
— |
Dhcp |
— |
ge-1/0/0.1 |
默认
注意:
默认 VLAN 的 VLAN ID 值为 1。 |
192.168.2.1 |
255.255.255.0 |
ge-1/0/2 |
半径-BR |
10.10.10.2 |
255.255.255.0 |
配置
要使用 NFX150 新一代通用 CPE 设备使用虚拟化 802.1X 身份验证部署分支机构,请执行以下操作:
- Stage Ubuntu 20.04 基于 VNF
- 微调 NFX 操作模式
- 配置 VNF 并设置自定义 OVS 网桥
- 将物理端口映射到第 2 层和第 3 层接口
- 配置基于区域的防火墙和 NAT
- 为 LAN 用户配置 DHCP 服务器
- 配置 802.1X 身份验证
Stage Ubuntu 20.04 基于 VNF
分步过程
以下步骤介绍如何暂存基于 Ubuntu 20.04 的 VNF:
从工作站上的 Ubuntu 官方网站下载基于云的 Ubuntu-20.04-server-cloudimg-amd64.vmdk 镜像文件。
user@workstation$wget -nc https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.vmdk
将 ubuntu-20.04-server-cloudimg-amd64.vmdk 映像文件转换为 qcow2 文件格式。
user@workstation$qemu-img convert -f vmdk -O qcow2 ubuntu-20.04-server-cloudimg-amd64.vmdk ubuntu-20.04-server-cloudimg-amd64.qcow2
为您的 VNF 创建文件的副本 qcow2 。VNF 的名称是 RADIUS-ubuntu,qcow2 文件的名称是 radius-ubuntu.qcow2。
user@workstation$cp ubuntu-20.04-server-cloudimg-amd64.qcow2 radius-ubuntu.qcow2
在工作站上打开您喜欢的文本编辑器,然后为 VNF 创建云初始化配置文件。配置 cloud-init 包含基本信息,例如行 #cloud-config、默认用户的密码 (ubuntu)、不允许用户密码过期的配置节以及允许对 VNF 进行密码认证的配置。默认情况下,基于云的 Ubuntu 映像仅允许基于 SSH 密钥的身份验证。VNF 的主机名也在文件中定义。VNF 被命名为 radius-ubuntu。在此示例中,VNF 的云初始化配置文件名为 radius-ubuntu.txt。
#cloud-config password: $ABC123 chpasswd: { expire: False } ssh_pwauth: True hostname: radius-ubuntu
从 radius-ubuntu.txt config-init 文件创建一个 iso 文件作为 radius-ubuntu.iso。 radius-ubuntu.iso 文件存储在同一目录中。
user@workstation$cloud-localds ./radius-ubuntu.iso radius-ubuntu.txt
将 radius-ubuntu.qcow2 和 radius-ubuntu.iso 文件复制到
/var/public
NFX150 设备上的目录中。如果要使用以下方法将文件复制到 NFX150 uCPE,请确保使用正确的凭据。例如,此处使用 root 用户的凭据将文件复制到 NFX150 设备。user@workstation$scp radius-ubuntu.iso root@nfx-150-s1:/var/public/ user@workstation$scp radius-ubuntu.qcow2 root@nfx-150-s1:/var/public/
微调 NFX 操作模式
分步过程
以下步骤介绍如何微调 NFX 操作模式:
在计算模式下设置 NFX。计算模式为第三方 VNF 提供最大资源。将 NFX 设置为计算模式后,NFX150 设备将重新启动。
user@host>request vmhost mode compute
允许在设备上使用大页面。巨大的页面是不会从内存中交换的内存页面。在此示例中,创建了四个将用于 VNF 的大页面。
[edit] user@host>set system memory hugepages page-size 1024 count 4 user@host>commit and-quit
重新启动 NFX150 设备以使大页面生效。
user@host>request vmhost reboot
配置 VNF 并设置自定义 OVS 网桥
分步过程
以下步骤介绍如何配置 VNF 和设置自定义 OVS 网桥。自定义 OVS 网桥充当 VNF 和 FPC 连接的 NFV 背板。此外,您还可以创建自定义 OVS 网桥来隔离不同 VNF 之间的连接。
创建 VNF 并设置名称 radius-ubuntu。您需要为 VNF 设置映像 (
/var/public/radius-ubuntu.qcow2
) 的路径。[edit] user@host#set virtual-network-functions radius-ubuntu image /var/public/radius-ubuntu.qcow2 user@host#set virtual-network-functions radius-ubuntu image image-type qcow2
将 VNF 配置为具有两个 CPU,为 CPU 启用硬件虚拟化,并为 VNF 专用 4 GB 内存。必须配置 CPU 并为 VNF 分配内存。对于 Ubuntu 20.04 云映像,建议至少配置 1 个 CPU 和至少 1 GB 内存。
[edit] user@host#set virtual-network-functions radius-ubuntu virtual-cpu count 2 user@host#set virtual-network-functions radius-ubuntu virtual-cpu features hardware-virtualization user@host#set virtual-network-functions radius-ubuntu memory size 4194304 user@host#set virtual-network-functions radius-ubuntu memory features hugepages
将 eth2 接口映射到自定义网桥 radius-br。
[edit] user@host#set virtual-network-functions radius-ubuntu interfaces eth2 mapping vlan mode access user@host#set virtual-network-functions radius-ubuntu interfaces eth2 mapping vlan members radius-br
将云初始化映像 radius-ubuntu.iso 文件挂载为 CD-ROM 驱动器。
[edit] user@host#set virtual-network-functions radius-ubuntu storage vdb type cdrom source file /var/public/radius-ubuntu.iso
创建自定义 OVS 网桥 radius-br 并为其配置接口 ge-1/0/2。
[edit] user@host#set vmhost vlans radius-br vlan-id none user@host#set vmhost virtualization-options interfaces ge-1/0/2 mapping vlan radius-br
将物理端口映射到第 2 层和第 3 层接口
分步过程
以下步骤介绍如何将物理端口映射到第 2 层和第 3 层接口。物理接口表示 NFX150 机箱和扩展模块上的物理端口。NFX150 设备前面板上的物理端口可以映射到第 2 层或第 3 层接口或 VNF。
将物理端口 heth-0-0 映射到第 3 层 (FPC1) 接口。
[edit] user@host#set vmhost virtualization-options interfaces ge-1/0/1 mapping interface heth-0-0
将物理端口 heth-0-1 到 heth-0-4 映射到第 3 层 (FPC1) 接口。
[edit] user@host#set vmhost virtualization-options interfaces ge-0/0/1 mapping interface heth-0-1 user@host#set vmhost virtualization-options interfaces ge-0/0/2 mapping interface heth-0-2 user@host#set vmhost virtualization-options interfaces ge-0/0/3 mapping interface heth-0-3 user@host#set vmhost virtualization-options interfaces ge-0/0/4 mapping interface heth-0-4
将接口 ge-0/0/1 到 ge-0/0/4 和接口 sxe-0/0/0 添加为默认 VLAN 的成员。
[edit] user@host#set interfaces ge-0/0/1 unit 0 family ethernet-switching vlan members default user@host#set interfaces ge-0/0/2 unit 0 family ethernet-switching vlan members default user@host#set interfaces ge-0/0/3 unit 0 family ethernet-switching vlan members default user@host#set interfaces ge-0/0/4 unit 0 family ethernet-switching vlan members default user@host#set interfaces sxe-0/0/0 unit 0 family ethernet-switching vlan members default
配置基于区域的防火墙和 NAT
分步过程
以下步骤介绍如何配置基于区域的防火墙过滤器和 NAT:
创建安全区域, 信任并将第 3 层接口(ge-1/0/0.0 和 ge-1/0/2)分配给该区域。ge-1/0/0.0 第 3 层接口充当 LAN 连接设备和 RADIUS-br 接口的 DHCP 服务器。ge-1/0/0.0 接口是默认接口,是 NFX150 设备默认配置的一部分。
[edit] user@host#set security zones security-zone trust host-inbound-traffic system-services all user@host#set security zones security-zone trust host-inbound-traffic protocols all user@host#set security zones security-zone trust interfaces ge-1/0/0.1 user@host#set security zones security-zone trust interfaces ge-1/0/2.0
创建安全区域、 取消信任并分配第 3 层接口 ge-1/0/1.0。您可以根据设置配置系统服务和协议。
[edit] user@host#set security zones security-zone untrust host-inbound-traffic system-services all user@host#set security zones security-zone untrust host-inbound-traffic protocols all user@host#set security zones security-zone untrust interfaces ge-1/0/1.0
注意:在生产环境中,应限制只允许在网络中使用的协议和服务。
创建安全策略以允许安全区域 信任内的流量。
[edit] user@host#set security policies from-zone trust to-zone trust policy default-permit match source-address any user@host#set security policies from-zone trust to-zone trust policy default-permit match destination-address any user@host#set security policies from-zone trust to-zone trust policy default-permit match application any user@host#set security policies from-zone trust to-zone trust policy default-permit then permit
创建安全策略以允许从安全区域信任到安全区域 不信任的流量。
[edit] user@host#set security policies from-zone trust to-zone untrust policy trust-to-untrust match source-address any user@host#set security policies from-zone trust to-zone untrust policy trust-to-untrust match destination-address any user@host#set security policies from-zone trust to-zone untrust policy trust-to-untrust match application any user@host#set security policies from-zone trust to-zone untrust policy trust-to-untrust then permit
创建源 NAT 规则,以从区域信任到区域不信任的 NAT 流量。
[edit] user@host#set security nat source rule-set trust-to-untrust from zone trust user@host#set security nat source rule-set trust-to-untrust to zone untrust user@host#set security nat source rule-set trust-to-untrust rule source-nat-rule match source-address 0.0.0.0/0 user@host#set security nat source rule-set trust-to-untrust rule source-nat-rule then source-nat interface
为 LAN 用户配置 DHCP 服务器
分步过程
以下步骤介绍如何配置 DHCP 服务器:
在默认 VLAN 中为 ge-1/0/0 创建子接口,因为 DHCP 服务器需要接口。
[edit] user@host#set interfaces ge-1/0/0 vlan-tagging user@host#set interfaces ge-1/0/0 unit 0 vlan-id 1 user@host#set interfaces ge-1/0/0 unit 0 family inet address 192.168.2.1/24
创建 DHCP 地址池并将接口设置为 ge-1/0/0.1。此示例使用以下 DHCP 地址池参数:
DHCP 地址池的名称为 jdhcp 组。
用户分配的 IP 地址范围从 192.168.2.2 到 192.168.2.254。
网关 IP 地址为 192.168.2.1。
DNS 服务器地址设置为 8.8.8.8。
[edit] user@host#set access address-assignment pool jdhcp-group family inet network 192.168.2.0/24 user@host#set access address-assignment pool jdhcp-group family inet range junosRange low 192.168.2.2 user@host#set access address-assignment pool jdhcp-group family inet range junosRange high 192.168.2.254 user@host#set access address-assignment pool jdhcp-group family inet dhcp-attributes router 192.168.2.1 user@host#set access address-assignment pool jdhcp-group family inet dhcp-attributes name-server 8.8.8.8 user@host#set access address-assignment pool jdhcp-group family inet dhcp-attributes propagate-settings ge-1/0/0.0
配置 802.1X 身份验证
分步过程
以下步骤介绍如何配置 802.1X 身份验证。
Ubuntu VNF 上的网络接口和 RADIUS 服务器的配置超出了本文档的范围。
配置在 VNF 上运行的 RADIUS 服务器。此示例使用以下 RADIUS 服务器参数:
RADIUS 服务器的 IP 地址是 10.10.10.2。这是 radius-ubuntu VNF 的 eth2 和 ens5 的 IP 地址。
NFX 用于与 RADIUS 服务器通信的秘密密码是
$ABC123
。
[edit] user@host#set access radius-server 10.10.10.2 port 1812 user@host#set access radius-server 10.10.10.2 secret $ABC123
将 RADIUS 服务器添加到配置文件,并允许使用该配置文件进行 RADIUS 身份验证。此示例中使用的配置文件名称为 vnf-radius。
[edit] user@host#set access profile vnf-radius radius authentication-server 10.10.10.2 user@host#set access profile vnf-radius authentication-order radius
将配置文件 vnf-radius 配置为 802.1X 身份验证器。802.1X 身份验证器使用 RADIUS 服务器验证用户输入的凭据并采取相应措施。
[edit] user@host#set protocols dot1x authenticator authentication-profile-name vnf-radius
将请求方(用户)配置为在接口 ge-0/0/1.0 上进行身份验证,并每 90 分钟(5400 秒)请求重新进行身份验证。您可以允许对多个请求方进行身份验证,如本示例所示。
[edit] user@host#set protocols dot1x authenticator authentication-profile-name vnf-radius user@host#set protocols dot1x authenticator interface ge-0/0/1.0 supplicant multiple user@host#set protocols dot1x authenticator interface ge-0/0/1.0 reauthentication 5400
为请求方身份验证和 RADIUS 服务器设置超时计时器,例如 60 秒。
[edit] user@host#set protocols dot1x authenticator interface ge-0/0/1.0 supplicant-timeout 60 user@host#set protocols dot1x authenticator interface ge-0/0/1.0 server-timeout 60
配置端口的行为。如果无法访问 RADIUS 服务器,可以将端口的身份验证行为配置为专门使用可用缓存。在这种情况下,已经通过身份验证的请求方可以继续使用该端口,不允许其他请求方使用。
[edit] user@host#set protocols dot1x authenticator interface ge-0/0/1.0 server-fail use-cache
提交配置。
[edit] user@host#commit and-quit
重复步骤 4 到 6,在接口 ge-0/0/2.0 到 ge-0/0/4.0 上配置身份验证。
验证
要确认配置工作正常,请执行以下任务:
验证 VNF 是否已启动并正在运行
目的
验证 VNF 是否已成功旋转。
行动
在操作模式下,输入 show virtual-network-functions radius-ubuntu detail
命令。
user@host> show virtual-network-functions radius-ubuntu detail Virtual Network Function Information ------------------------------------ Id: 2 Name: radius-ubuntu UUID: 2686abc4-0f66-4574-a5de-18a3bbd09a94 State: Running Liveliness: alive IP Address: 192.0.2.100 VCPUs: 2 Maximum Memory: 4194304 KiB Used Memory: 52172 KiB Used 1G Hugepages: 4 Used 2M Hugepages: 0 Error: None
意义
输出显示 RADIUS-ubuntu VNF 的详细信息,例如状态、活动性、错误以及内存使用情况。
验证 VNF 的资源利用率
目的
验证 VNF 系统当前正在使用的资源,例如 CPU 时间、内存使用情况以及接口的 MAC 地址信息。
行动
在操作模式下,输入 show system visibility vnf radius-ubuntu
命令。
user@host> show system visibility vnf radius-ubuntu VNF Memory Usage -------------------------------------------------------------------------------------------------------------------- Name Maximum Memory (KiB) Used Memory (KiB) Used 1G Hugepages Used 2M Hugepages -------------------------------------- --------------------- ------------------ ------------------ ----------------- radius-ubuntu 4194304 52172 4 0 VNF CPU Statistics (Time in ms) ----------------------------------------------------------------------------------- Name CPU Time System Time User Time -------------------------------------- ------------------ ------------ ------------ radius-ubuntu 164985 59820 4480 VNF MAC Addresses ----------------------------------------------------------- VNF MAC ----------------------------------------- ----------------- radius-ubuntu_ethdef0 58:00:BB:AC:BC:5B radius-ubuntu_ethdef1 58:00:BB:AC:BC:5C radius-ubuntu_eth2 58:00:BB:AC:BC:5D VNF Internal IP Addresses --------------------------------------------------------- VNF IP ----------------------------------------- --------------- radius-ubuntu 192.0.2.100 VNF Interfaces -------------------------------------------------------------------------------------------------------- VNF Interface Type Source Model MAC IPv4-address -------------------- --------- --------- ------------ ---------- ----------------- --------------------- radius-ubuntu vnet4 network default virtio 58:00:bb:ac:bc:5b -- radius-ubuntu vnet5 bridge eth0br virtio 58:00:bb:ac:bc:5c -- radius-ubuntu radius-ubuntu_eth2 vhostuser -- virtio 58:00:bb:ac:bc:5d -- VNF Disk Information ---------------------------------------------------------------------------------------------------------
意义
输出显示 RADIUS-ubuntu VNF 的系统详细信息,例如内存使用情况、CPU 时间、MAC 地址和 IP 地址。
验证自定义网桥上的接口
目的
验证自定义网桥上接口的状态。
行动
在操作模式下,输入 show vmhost network nfv-back-plane
命令。
user@host> show vmhost network nfv-back-plane Network Name : radius-br Interface : radius-br Type : internal, Link type : Full-Duplex, MAC : ce:74:aa:85:0f:4d MTU : [], Link State :down, Admin State : down Native Vlan ID : None, Vlan mode : Access, Vlan Members : None IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 0 Rx-drops : 0 Rx-errors : 0 Tx-packets : 43 Tx-drops : 43 Tx-errors : 0 Interface : l3_h_ge_1_0_2 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : [], Link State :up, Admin State : up Native Vlan ID : None, Vlan mode : Access, Vlan Members : None IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 32 Rx-drops : 0 Rx-errors : 0 Tx-packets : 59 Tx-drops : 0 Tx-errors : 0 Interface : radius-ubuntu_eth2 Type : dpdkvhostuser, Link type : Full-Duplex, MAC : 00:00:00:00:00:00 MTU : 1500, Link State :up, Admin State : up Native Vlan ID : None, Vlan mode : Access, Vlan Members : None IPV4 : None, Netmask : None IPV6 : None, IPV6 netmask : None Rx-packets : 59 Rx-drops : 0 Rx-errors : 0 Tx-packets : 31 Tx-drops : 0 Tx-errors : 0
意义
在输出中,您可以看到接口 l3_h_ge_1_0_2 和 RADIUS-ubuntu_eth2 分别链接到 ge-1 /0/2 和 eth2。输出还显示接口的链路状态详细信息(管理和链路状态),以及通过相应接口接收和传输的数据包数。