附录:构建拓扑和测试环境
在本附录中,我们将分享有关如何重复为此 JVD 执行的测试用例的信息。 图 1 的配置允许您重复 Access Assurance 的所有测试用例,只要您拥有所需的最少设备:
- WAN 路由器
- 所有 VLAN 的默认网关
- 用于所有 VLAN 的 DHCP 服务器
- 至少有一个 WAN 连接,该连接指向 Juniper Mist 云和 Juniper Mist 身份验证云所在的互联网。
- 拥有通往总部的 VPN 或使用本地流量分流(如我们的案例)。
- 可以定义带有本机 VLAN 的中继端口,以便对连接的交换机和接入点进行内联管理。
- 可选: 中继端口可以使用带有活动 LACP 和 强制提升选项的 802.3ad 链路聚合。
- 独立交换机
- PoE 支持为连接的接入点供电
- 使用通向 WAN 路由器的单个上行链路
- 可选:虚拟机箱
- 至少两名测试成员
- PoE 支持为连接的接入点供电
- 对 WAN 路由器使用 LAG
- 瞻博网络接入点
- 使用交换机的 PoE 供电。
- 两个或更多交换机在不同的交换机上测试漫游
- 可选:Juniper Mist Edge 设备
- 对于此实验室,直接连接到本地 WAN 路由器,而不是位于总部的远程实验室
- 客户 PKI 的Mist身份验证配置
- 待测试的有线和无线客户端
- 请确保他们支持您要测试的身份验证方法的 801.1X EAP 请求方
- 这些客户端的证书管理不在 Access Assurance 的范围内。客户可以使用 MDM 或手动部署
在此配置中,我们使用了四个 VLAN,以实现最低要求的功能设计:
- 子网范围为 10.33.33.0/24 的VLAN1033是本机 VLAN,用于连接的交换机和接入点的带内管理。
- 子网范围为 10.99.99.0/24 的VLAN1099可用作连接的有线客户端的 VLAN。
- 子网范围为 10.88.88.0/24 的VLAN1088用作连接的 WLAN 客户端的 VLAN。
- 子网范围为 10.44.44.0/24 的VLAN1044用作 Juniper Mist Edge 设备的 VLAN。
所有这些 VLAN 都将 WAN 路由器用作默认网关,并分配 IP 地址 10.x.y.1,还会将 DHCP 租约分发给客户端。
VLAN1033交换机和接入点上被视为 VLAN1这是因为所有瞻博网络交换机上的默认 VLAN 都是 VLAN1,并且是所有收入端口上的接入/本机 VLAN。
中使用的实验室拓扑
构建此类实验室的建议工作流程如下:
- 部署 WAN 路由器并安装
- 部署交换机和虚拟机箱并安装
- 部署接入点并安装
- 可选:部署 Juniper Mist Edge 并安装
- Juniper Mist认证云证书安装
- 为客户端请求方配置证书和必要的 EAP 方法
WAN 路由器安装和配置(分支机构设计示例)
在本章中,我们将分享将 瞻博网络 SRX 系列防火墙用作 WAN 路由器时的配置示例,而 WAN® 路由器也由Juniper Mist云在简单的分支机构设计中进行管理。这种解决方案被称为“全栈”解决方案,因为它使您能够在一个管理平台内管理位于分支机构站点的所有网络设备。
如果您已经部署了瞻博网络园区交换矩阵,则可以立即跳过本章,因为在大多数情况下,它不适用于您。在大多数园区交换矩阵设计中,第 2 层 VLAN 在交换矩阵内部终止,WAN 路由器负责监督处理第 3 层路由转发信息。以下 JVD 扩展提供有关 WAN 路由器集成到园区交换矩阵的信息。
请确保 SRX 设备具有 AppID 许可证,否则无法通过 Juniper Mist 云进行管理。这与您是将其用作独立防火墙还是作为管理 VPN 的 SD-WAN 路由器无关。
以下步骤列表总结了本章中用于配置 WAN 路由器的过程,后面是对这些步骤的详细说明:
- 定义为互联网和 LAN 网段提供目标 IP 范围的自定义应用程序。
- 定义网络和 VLAN
- 构建 WAN 边缘模板,描述:
- WAN 接口及其配置
- LAN 接口及其配置:
- 每个网络的默认网关。
- 每个网络的 DHCP 服务器设置。
- 将网络绑定到接口以及可能的 LAG 配置。
- 定义流量转向路径
- 定义应用策略
- 可选:添加其他 Junos OS CLI 命令
- 将模板分配给站点
- 载入 WAN 边缘设备并将其分配给站点
- 检查新 WAN 路由器的配置和状态
转到 “组织>应用程序” ,并检查是否存在具有以下设置的现有应用程序:
- 名称=
any - 类型=
Custom Apps - IP 地址=
0.0.0.0/0
使用以下设置添加另一个应用程序:
- 名称=
Branch-VLANs - 类型=
Custom Apps - IP 地址=
10.0.0.0/8
您现在应该看到列出的两个应用程序,如下所示:
转到 Organization > Networks ,添加第一个用于管理交换机和接入点的 VLAN:
- 名称=
VLAN1033 - 子网 IP 地址=
10.33.33.0 - 前缀长度=
24 - VLAN ID=
Leave this field empty。(这是本机 VLAN,用于连接的 EX 系列交换机以及 AP 的带内管理)。 - 访问 Mist 云=
Enabled。(必须启用此功能,才能让连接的交换机和接入点由 Juniper Mist 云进行管理)。
然后,添加第二个 VLAN(在我们的拓扑中,我们将其用于有线客户端):
- 名称=
VLAN1099 - 子网 IP 地址=
10.99.99.0 - 前缀长度=
24 - VLAN ID=
1099
然后,添加第三个 VLAN(在我们的拓扑中,我们将其用于连接到接入点的无线客户端)
- 名称=
VLAN1088 - 子网 IP 地址=
10.88.88.0 - 前缀长度=
24 - VLAN ID=
1088
添加最后一个 VLAN(在我们的拓扑中,我们使用它来访问Juniper Mist边缘设备的带外管理端口)
- 名称=
VLAN1044 - 子网 IP 地址=
10.44.44.0 - 前缀长度=
24 - VLAN ID=将此字段留空。这是用于Juniper Mist边缘的本征 VLAN。
- 访问Juniper Mist云=
Enabled。必须启用此功能,才能让连接的交换机和接入点由Juniper Mist云进行管理。
查看这四个网络,并验证是否未为交换机和接入点管理网络以及 Juniper Mist Edge 连接设置 VLAN ID,因为这是下行链路中继上的本征 VLAN。
以下 JSON 模板可用于配置分支机构 WAN 路由器。或者,分支机构 WAN 路由器的手动配置步骤紧接在 JSON 模板之后列出。
{
"type": "standalone",
"port_config": {
"ge-0/0/0": {
"usage": "wan",
"name": "wan",
"ip_config": {
"type": "dhcp"
}
},
"ge-0/0/15": {
"usage": "wan",
"name": "wan2",
"ip_config": {
"type": "dhcp"
}
},
"cl-1/0/0": {
"usage": "wan",
"name": "lte",
"wan_type": "lte",
"ip_config": {
"type": "dhcp"
}
},
"ge-0/0/1-2": {
"networks": [
"VLAN1033",
"VLAN1099",
"VLAN1088"
],
"usage": "lan",
"aggregated": true,
"ae_disable_lacp": false,
"ae_lacp_force_up": true,
"ae_idx": 0,
"redundant": false,
"critical": false,
"disabled": false
},
"ge-0/0/4": {
"networks": [
"VLAN1033",
"VLAN1088",
"VLAN1099"
],
"usage": "lan",
"aggregated": false,
"redundant": false,
"critical": false,
"disabled": false
},
"ge-0/0/5": {
"networks": [
"VLAN1044"
],
"usage": "lan",
"aggregated": false,
"redundant": false,
"critical": false,
"disabled": false
}
},
"ip_configs": {
"VLAN1033": {
"type": "static",
"ip": "10.33.33.1",
"netmask": "/24"
},
"VLAN1099": {
"type": "static",
"ip": "10.99.99.1",
"netmask": "/24"
},
"VLAN1088": {
"type": "static",
"ip": "10.88.88.1",
"netmask": "/24"
},
"VLAN1044": {
"type": "static",
"ip": "10.44.44.1",
"netmask": "/24"
}
},
"dhcpd_config": {
"enabled": true,
"VLAN1033": {
"type": "local",
"ip_start": "10.33.33.10",
"ip_end": "10.33.33.250",
"gateway": "10.33.33.1",
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"options": {}
},
"VLAN1099": {
"type": "local",
"ip_start": "10.99.99.10",
"ip_end": "10.99.99.250",
"gateway": "10.99.99.1",
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"options": {}
},
"VLAN1088": {
"type": "local",
"ip_start": "10.88.88.10",
"ip_end": "10.88.88.250",
"gateway": "10.88.88.1",
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"options": {}
},
"VLAN1044": {
"type": "local",
"ip_start": "10.44.44.10",
"ip_end": "10.44.44.250",
"gateway": "10.44.44.1",
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"options": {},
"lease_time": 86400,
"fixed_bindings": {}
}
},
"path_preferences": {
"wan": {
"paths": [
{
"type": "wan",
"name": "wan"
}
]
},
"LAN": {
"strategy": "ordered",
"paths": [
{
"type": "local",
"networks": [
"VLAN1033"
]
},
{
"type": "local",
"networks": [
"VLAN1099"
]
},
{
"type": "local",
"networks": [
"VLAN1088"
]
},
{
"type": "local",
"networks": [
"VLAN1044"
]
}
]
}
},
"service_policies": [
{
"name": "inside_Branch_hairpin",
"tenants": [
"VLAN1033",
"VLAN1088",
"VLAN1099",
"VLAN1044"
],
"services": [
"Branch-VLANs"
],
"action": "allow",
"path_preference": "LAN",
"idp": {
"enabled": false
}
},
{
"name": "Internet",
"tenants": [
"VLAN1033",
"VLAN1099",
"VLAN1088",
"VLAN1044"
],
"services": [
"any"
],
"action": "allow",
"path_preference": "wan",
"idp": {
"enabled": false
}
}
],
"bgp_config": {},
"routing_policies": {},
"extra_routes": {},
"vrf_instances": {},
"tunnel_configs": {},
"oob_ip_config": {
"type": "dhcp",
"node1": {
"type": "dhcp"
}
},
"ntp_servers": [
"time.google.com"
],
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"tunnel_provider_options": {
"jse": {},
"zscaler": {}
},
"additional_config_cmds": [
"set security zones security-zone VLAN1033 host-inbound-traffic system-services ping",
"set security zones security-zone VLAN1044 host-inbound-traffic system-services ping",
"set security zones security-zone VLAN1099 host-inbound-traffic system-services ping",
"set security zones security-zone VLAN1088 host-inbound-traffic system-services ping"
],
"ospf_areas": {},
"ospf_config": {
"enabled": false,
"areas": {}
},
"name": "Branch-WAN-Router"
}
不使用 JSON 模板时,请改为执行以下步骤以配置分支机构 WAN 路由器:
转到 组织> WAN 边缘模板:
使用以下参数创建新模板:
- 名称=
Branch-WAN-Router - 类型=
Standalone - 从设备模型创建=
Checked - 模型=
<Select your Model>
创建模板后,从基于环境的基本配置设置开始,如下所示:
- NTP=
time.google.com - DNS 服务器=
8.8.8.8, 9.9.9.9
检查模板时,应会看到以下预配置的 WAN 接口。我们将使用“wan”ge-0/0/0 接口从宽带路由器获取 DHCP 租约。
我们将修改此模板的 LAN 接口。删除预配置的“lan”接口(此处未显示)。然后,创建第一个 IP 配置:
- 网络=
VLAN1033 - IP 地址=
10.33.33.1 - IP 前缀长度=
24
第二个 IP 配置为:
- 网络=
VLAN1099 - IP 地址=
10.99.99.1 - IP 前缀长度=
24
第三个 IP 配置是:
- 网络=
VLAN1088 - IP 地址=
10.88.88.1 - IP 前缀长度=
24
最后一个 IP 配置为:
- 网络=
VLAN1044 - IP 地址=
10.44.44.1 - IP 前缀长度=
24
生成的 IP 配置现在应如下图所示:
现在,添加第一个 DHCP 服务器配置:
- 网络=
VLAN1033 - DHCP=
Server - IP 启动=
10.33.33.10 - IP 结束 =
10.33.33.250 - 网关=
10.33.33.1 - DNS 服务器=
8.8.8.8, 9.9.9.9
然后,添加第二个 DHCP 服务器配置:
- 网络=
VLAN1099 - DHCP=
Server - IP 启动=
10.99.99.10 - IP 结束 =
10.99.99.250 - 网关=
10.99.99.1 - DNS 服务器=
8.8.8.8, 9.9.9.9
然后添加第三个 DHCP 服务器配置:
- 网络=
VLAN1088 - DHCP=
Server - IP 启动=
10.88.88.10 - IP 结束 =
10.88.88.250 - 网关=
10.88.88.1 - DNS 服务器=
8.8.8.8, 9.9.9.9
然后,添加最后一个 DHCP 服务器配置:
- 网络=
VLAN1044 - DHCP=
Server - IP 启动=
10.44.44.10 - IP 结束 =
10.44.44.250 - 网关=
10.44.44.1 - DNS 服务器=
8.8.8.8, 9.9.9.9
生成的 DHCP 服务器配置应如下图所示:
接下来,构建 LAN 接口配置。第一个 LAN 接口是 LAG,带有朝向虚拟机箱的强制提升选项:
- interface=
ge-0/0/1-2 - 端口聚合=
Enabled - 启用 Force-Up=
Enabled - AE 索引=
0 - 网络=
VLAN1033, VLAN1099, VLAN1088 - 未标记的 VLAN Network=
None(VLAN1033没有任何标记,我们不需要对此进行调整)
的 LAG
第二个 LAN 接口是单个连接交换机的普通中继端口:
- interface=
ge-0/0/4 - 端口聚合=
Unchecked - 网络=
VLAN1033, VLAN1099, VLAN1088 - 未标记的 VLAN Network=
None(VLAN1033没有任何标记,我们不需要对此进行调整)
第三个 LAN 接口是一个接入端口,其中包含一个配置为将 Juniper Mist Edge 集成到管理网络中的 VLAN:
- interface=
ge-0/0/5 - 端口聚合=
Unchecked - 网络=
VLAN1044 - 未标记的 VLAN Network=
None(由于VLAN1044未标记,因此无需对此进行调整)
生成的 LAN 接口配置现在应如下图所示:
下一步是向流量转向策略添加新的目标。这用于启用本地 VLAN 之间的通信,这在我们的示例中是必需的。使用以下设置添加新的流量转向策略:
- 名称=
LAN - 战略=
Ordered - 路径:
- 类型=
LAN: VLAN1033 - 类型=
LAN: VLAN1099 - 类型=
LAN: VLAN1088 - 类型=
LAN: VLAN1044
- 类型=
您现在应该会看到流量转向目标的以下内容:
应用策略实现 表 1 。零件应该已经存在,您只需要修改。
| 序列号 | 规则名称 | 网络 | 作 | 目标 | 转向 |
|---|---|---|---|---|---|
| 1 | Inside_Branch_hairpin | VLAN1033、VLAN1044、VLAN1088、VLAN1099 | 通过 | 分支 VLAN | 局域网 |
| 2 | 互联网 | VLAN1033、VLAN1044、VLAN1088、VLAN1099 | 通过 | 任何 | 广域网 |
实施上表后,您现在应该可以看到应用程序策略的以下配置:
在当前版本中,当将 ICMP ping 发送到 WAN 路由器作为其本地网关时,LAN 端的客户端无法获得答案。但是,接收 ping 对于任何本地调试都至关重要。因此,强烈建议您添加一些额外的 Junos OS CLI 命令,以便为任何有线或无线客户端启用 ping,使其指向 WAN 路由器,作为它们所连接的 VLAN 的本地网关。请参阅以下示例:
set security zones security-zone VLAN1033 host-inbound-traffic system-services ping set security zones security-zone VLAN1044 host-inbound-traffic system-services ping set security zones security-zone VLAN1099 host-inbound-traffic system-services ping set security zones security-zone VLAN1088 host-inbound-traffic system-services ping
在门户中,它应如下图所示:
单击 “保存 ”立即保存模板。
您必须为此模板分配一个站点,否则它不会在任何设备上使用。
在这里,我们将 Spoke1 站点添加到模板中,这是我们的交换机所在的位置。
要将SRX 系列防火墙分配给站点,设备必须存在于Juniper Mist清单中。您可以声明或采用 SRX 系列 防火墙,以便将其上线至 Juniper Mist 云中。设备上线后,组织清单会显示该设备。
要将 SRX 系列防火墙分配给站点,请执行以下作:
- 在门户中,转到 “组织>管理员>清单”。
- 刷新浏览器并在 WAN Edge 下查看您的 SRX 系列防火墙是否在清单中。
- 使用“ 分配给站点” 选项将每个 SRX 系列防火墙分配给单个站点:
- 在 “分配 WAN 边缘” 页上,从可用站点列表中选择要分配的站点。
- 不要选择 “使用 Mist 管理配置 ”选项。否则,您可能会在 SRX 系列防火墙上看到不需要的更改。如果需要,可以在将设备分配给站点后稍后启用该选项。
- 如果您拥有有效的应用程序安全许可证,请选择“ 将站点设置用于 APP 跟踪许可证 ”选项,然后单击 “分配给站点”。
下图显示了将设备分配给站点后库存的变化:
- 设备上线后,在 WAN Edge 选项卡上,选择 <您的站点> ,然后单击该设备:
- 检查设备和 AppSecure 状态。
- 现在,激活设备的 “启用配置管理 ”作为最后一步,以便Juniper Mist可以配置设备。
- (选答)在云接管设备管理后 Juniper Mist使用远程 Shell 验证设备配置和状态。在我们的示例中,您会看到以下输出:
root@spoke1> show interfaces terse Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.173.145/24 . ge-0/0/1 up up ge-0/0/1.0 up up aenet --> ae0.0 ge-0/0/1.1088 up up aenet --> ae0.1088 ge-0/0/1.1099 up up aenet --> ae0.1099 ge-0/0/1.32767 up up aenet --> ae0.32767 ge-0/0/2 up up ge-0/0/2.0 up up aenet --> ae0.0 ge-0/0/2.1088 up up aenet --> ae0.1088 ge-0/0/2.1099 up up aenet --> ae0.1099 ge-0/0/2.32767 up up aenet --> ae0.32767 . ae0 up up ae0.0 up up inet 10.33.33.1/24 ae0.1088 up up inet 10.88.88.1/24 ae0.1099 up up inet 10.99.99.1/24 ae0.32767 up up . root@spoke1> show lacp interfaces Aggregated interface: ae0 LACP state: Role Exp Def Dist Col Syn Aggr Timeout Activity ge-0/0/1 FUP Actor No No Yes Yes Yes Yes Fast Active ge-0/0/1 FUP Partner No Yes No No Yes Yes Fast Passive ge-0/0/2 Actor No Yes No No No Yes Fast Active ge-0/0/2 Partner No Yes No No No Yes Fast Passive LACP protocol: Receive State Transmit State Mux State ge-0/0/1 FUP Current Fast periodic Collecting distributing ge-0/0/2 Defaulted Fast periodic Detached
连接 EX 系列交换机并打开电源时,它应该会从 WAN 路由器获取 DHCP 租约,您可以如下所示进行验证。有时,您还应该看到交换机上的 phone-home 客户端正在尝试联系重定向服务器,如我们的示例所示:
root@spoke1> show dhcp server binding detail
Client IP Address: 10.33.33.11
Hardware Address: 04:5c:6c:6b:13:42
State: BOUND(LOCAL_SERVER_STATE_BOUND)
Protocol-Used: DHCP
Lease Expires: 2024-03-07 17:02:09 UTC
Lease Expires in: 85474 seconds
Lease Start: 2024-03-06 17:02:09 UTC
Last Packet Received: 2024-03-06 17:02:09 UTC
Incoming Client Interface: ae0.0
Client Interface Vlan Id: 1
Server Identifier: 10.33.33.1
Session Id: 2
Client Pool Name: VLAN1033
root@spoke1> show security flow session source-prefix 10.0.0.0/8
Session ID: 249108247036, Policy name: 01_Internet/20, State: Stand-alone, Timeout: 854, Valid
In: 10.33.33.11/59874 --> 44.231.144.179/443;tcp, Conn Tag: 0x0, If: ae0.0, Pkts: 8, Bytes: 1278,
Out: 44.231.144.179/443 --> 192.168.173.145/8983;tcp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 18, Bytes: 13734,
Total sessions: 1
交换机安装和配置
在本实验的有线部分安装和配置虚拟机箱和独立交换机时,我们遵循了分布 式分支机构 JVD EX 系列中更详细分享的最佳实践方法。在我们的案例中,我们通过一个中继端口将独立交换机连接到 WAN 路由器,而虚拟机箱出于冗余原因,在 WAN 路由器上使用了具有强制配置的 LAG(参见 图 2)。然后,交换机和所有连接的接入点通过 WAN 路由器的本机VLAN1033获得 DHCP 租约,然后能够开始与待管理Juniper Mist云通信。 图 3 显示了该实验室的预期设置(不带 AP)。
以下步骤列表总结了本章中用于配置交换机的过程,后面是这些步骤的详细说明:
- 定义交换机模板
- 将上行链路连接到 WAN 路由器
- 到Juniper Mist云的 Claim 和 ZTP
- 将交换机分配给站点
- 可选:升级固件
- 执行虚拟机箱组建
- 板载独立交换机
- 为有线客户端和接入点配置接入端口
- 测试配置
定义交换机模板
首先,我们导航到 “组织>交换机模板”:
然后,使用 “创建模板 ”或从现有模板导入 JSON 文件:
使用 JSON 文件,您可以导入以下配置,以避免执行下述手动步骤:
{
"ntp_servers": [],
"dns_servers": [
"8.8.8.8",
"9.9.9.9"
],
"dns_suffix": [],
"additional_config_cmds": [],
"networks": {
"vlan1088": {
"vlan_id": "1088",
"subnet": ""
},
"vlan1099": {
"vlan_id": "1099",
"subnet": ""
}
},
"port_usages": {
"dynamic": {
"mode": "dynamic",
"rules": []
},
"vlan1099-noauth": {
"mode": "access",
"disabled": false,
"port_network": "vlan1099",
"voip_network": null,
"stp_edge": true,
"all_networks": false,
"networks": null,
"port_auth": null,
"speed": "auto",
"duplex": "auto",
"mac_limit": 0,
"persist_mac": false,
"poe_disabled": false,
"enable_qos": false,
"storm_control": {},
"mtu": null,
"description": "",
"disable_autoneg": false,
"mac_auth_protocol": null,
"enable_mac_auth": null,
"mac_auth_only": null,
"guest_network": null,
"bypass_auth_when_server_down": null,
"stp_p2p": false,
"stp_no_root_port": false,
"allow_multiple_supplicants": null,
"dynamic_vlan_networks": null,
"reauth_interval": null
},
"vlan1099-mab": {
"disabled": false,
"mode": "access",
"port_network": "vlan1099",
"voip_network": null,
"stp_edge": true,
"mac_auth_protocol": "pap",
"all_networks": false,
"networks": null,
"port_auth": "dot1x",
"allow_multiple_supplicants": true,
"enable_mac_auth": true,
"mac_auth_only": true,
"guest_network": null,
"bypass_auth_when_server_down": false,
"dynamic_vlan_networks": null,
"speed": "auto",
"duplex": "auto",
"mac_limit": 0,
"persist_mac": false,
"poe_disabled": false,
"enable_qos": false,
"storm_control": {},
"mtu": null,
"description": "",
"disable_autoneg": false
},
"vlan1099-eap": {
"disabled": false,
"mode": "access",
"port_network": "vlan1099",
"voip_network": null,
"stp_edge": true,
"mac_auth_protocol": null,
"all_networks": false,
"networks": null,
"port_auth": "dot1x",
"allow_multiple_supplicants": false,
"enable_mac_auth": false,
"mac_auth_only": false,
"guest_network": null,
"bypass_auth_when_server_down": false,
"dynamic_vlan_networks": null,
"speed": "auto",
"duplex": "auto",
"mac_limit": 0,
"persist_mac": false,
"poe_disabled": false,
"enable_qos": false,
"storm_control": {},
"mtu": null,
"description": "",
"disable_autoneg": false
}
},
"switch_matching": {
"enable": true,
"rules": []
},
"switch_mgmt": {
"config_revert_timer": 10,
"root_password": "juniper123",
"protect_re": {
"enabled": false
},
"tacacs": {
"enabled": false
}
},
"radius_config": {
"auth_servers": [
{
"port": "1812",
"host": "10.44.44.5",
"secret": "juniper123"
}
],
"acct_servers": [],
"auth_servers_timeout": 5,
"auth_servers_retries": 3,
"fast_dot1x_timers": false,
"acct_interim_interval": 0,
"auth_server_selection": "ordered",
"coa_enabled": false,
"coa_port": ""
},
"vrf_config": {
"enabled": false
},
"remote_syslog": {
"enabled": false
},
"snmp_config": {
"enabled": false
},
"dhcp_snooping": {
"enabled": false
},
"acl_policies": [],
"mist_nac": {
"enabled": true,
"network": null
},
"port_mirroring": {},
"disabled_system_defined_port_usages": [],
"bgp_config": null,
"routing_policies": {},
"name": "naclab"
}
创建模板后,第一步也是最重要的一步是将交换机配置为使用通往Juniper Mist身份验证云的 RadSec 隧道。在这里,您可以配置以下设置:
- 身份验证服务器=
Mist Auth - 源地址=
None(这是默认设置,我们不需要更改它)
使用 Juniper Mist Edge 设备作为代理测试仿真第三方产品时,我们会进行以下更改:
- 身份验证服务器=
Mist Auth - 身份验证服务器1
- 主机名 / IP 地址=
10.44.44.5 - 端口=
1812 - 共享密钥 =
juniper123(或配置为在两者之间使用的任何内容)
- 主机名 / IP 地址=
- Timeout=
5(默认值) - Retires=
3(默认值) - 增强型计时器=
Disabled(默认值) - Load Balance=
Disabled(默认值) - 计费服务器=
None(Juniper Mist Edge 不侦听计费端口 1813) - 源地址=
None(这是默认设置,我们不需要更改它)
接下来,定义上行链路、接入点和有线客户端身份验证的端口配置文件。
让我们首先回顾一下我们打算使用的两个默认端口配置文件。第一个是“上行链路”配置文件,其中的重要设置是:
- 名称=
uplink - 端口已启用=
Enabled - 模式=
Trunk - 端口网络(未标记/本机 VLAN)=
default(VLAN-ID=1) (请记住,WAN 路由器VLAN1033配置为本机 VLAN。因此,这使我们能够从 WAN 路由器获得 10.33.33.0/24 范围的 DHCP 租约,因为交换机和 WAN 路由器都删除了 VLAN 标记) - 中继网络=
All Networks(允许您稍后添加更多 VLAN,而无需更改此链路)
下一个默认端口配置文件用于接入点:
- 名称=
ap - 端口已启用=
Enabled - 模式=
Trunk - 端口网络(未标记/本机 VLAN)=
default(VLAN-ID=1) (在这里,我们将本地上行链路 VLAN 从 WAN 路由器进一步拼接到接入点以管理接入点) - 中继网络=
All Networks - PoE=
Enabled - STP 边缘=
Yes
在继续之前,我们需要定义在交换和接入点环境中使用的三个 VLAN。由于我们继续使用现有的默认 VLAN1,因此无需定义 VLAN1033。第一个网络是有线客户端的网络。因此,我们配置:
- 名称=
vlan1099 - VLAN ID=
1099 - Subnet=
Empty(使用园区交换矩阵时,在此处输入“10.99.99.0/24”)。
第二个网络是无线客户端的传输。因此,我们配置:
- 名称=
vlan1088 - VLAN ID=
1088 - subnet=
Empty(使用园区交换矩阵时,请在此处输入“10.88.88.0/24”)。
接下来,我们使用三种不同的端口配置文件来为无线客户端进行配置VLAN1099以进行测试。我们从完全没有身份验证的设备开始,因此我们可以在没有 Access Assurance 的情况下使用它进行客户端连接测试。
- 名称=
vlan1099-noauth - 端口已启用=
Enabled - 模式=
Access - 端口网络(未标记/本机 VLAN)=
vlan1099 - 使用 dot1x 身份验证=
Unchecked
如果连接的客户端不支持 EAP,则使用下一个端口配置文件,因此我们必须仅回退到基于 MAC 地址的身份验证。
- 名称=
vlan1099-mab - 端口已启用=
Enabled - 模式=
Access - 端口网络(未标记/本机 VLAN)=
vlan1099 - 使用 dot1x 身份验证=
Checked - 允许多个请求方=
Checked(最好为实验室启用此建议设置,因为有时端口上会出现多个 MAC 地址,并且您不希望未知的 MAC 地址阻止端口上的进一步身份验证)。 - 动态 VLAN=
Unchecked - MAC 身份验证=
Checked(启用 MAB) - 仅 Mac 身份验证=
Checked(禁用此端口的所有 EAP 身份验证,否则必须等待 60 秒) - 身份验证协议 =
pap(这是最佳做法设置。如果交换机使用 RadSec 隧道,则该漏洞无效。此设置将用于第三方 RADIUS 服务器或作为 RadSec-Proxy 的 Mist-Edge 定义使用的 MAB RADIUS 身份验证) - 使用访客网络=
Unchecked - 服务器宕机时绕过身份验证=
Unchecked
最后,最后一个端口配置文件用于 EAP 请求方,这应该是我们在环境中拥有的所有客户端的最佳实践:
- 名称=
vlan1099-eap - 端口已启用=
Enabled - 模式=
Access - 端口网络(未标记/本机 VLAN)=
vlan1099 - 使用 dot1x 身份验证=
Checked - 允许多个请求方=
Unchecked - 动态 VLAN=
Unchecked - MAC 身份验证=
Unchecked - 仅限 Mac 身份验证=
Unchecked - 使用访客网络=
Unchecked - 服务器宕机时绕过身份验证=
Unchecked
不要忘记保存您的模板。
保存模板后,将其分配给您打算使用它的网站。
在这里,我们在应用之前将“site1”添加到我们的模板中。
生成以下示例:
将上行链路连接到 WAN 路由器
在此步骤中,使用交换机上的收入端口并将其连接到 WAN 路由器。然后打开交换机电源。大约 5 分钟后,它们就会启动,并应请求 DHCP 租约。
您可以查看 DHCP 租期列表以查看详细信息:
向瞻博网络 Mist 云进行声明和 ZTP
将交换机接入Juniper Mist云有多种方法。 分布式分支机构 EX 系列 JVD 中对此都有介绍。为了简化本实验的内容,我们使用了权利要求和 ZTP 方法。 此处 介绍了 ZTP 的过程以供回顾。我们案例中的过程描述如下:
- 找到设备上的二维码标签,然后扫描或读取声明代码。
- 转到 Organization > Inventory。
- 选择 Switches ,然后单击 Claim Switches,类似于 图 6 中看到的内容:
分配给站点
如果尚未将交换机分配给站点( 如图 6 所示),请记住必须先将交换机分配给站点,然后才能对其进行管理。如 图 7 所示,选择交换机,然后 从 More 菜单 中选择 Assign To Site。
选择将使用这些交换机的站点并启用 “使用Mist管理配置 ”,然后单击 “分配给站点”。
应该显示如下图所示的内容:
交换机从 WAN 路由器接收 DHCP 租约并重定向到正确的Juniper Mist云后,导航到 交换机>选择<“站点> >列表”后,我们应该会看到它们显示为“已连接”状态。
可选:升级固件
计划组建虚拟机箱时,建议所有交换机成员都运行相同版本的 Junos OS 固件。如果不是这种情况,请按照升级过程作。
建议您在将交换机投入生产之前,先将 Junos 固件升级到建议的版本。为此,请选择交换机,然后选择 升级固件 ,如下图所示:
这将打开一个对话框,您可以在其中为您的交换机型号选择 “建议 ”下的 Junos OS 固件,如下图所示:
本章的分布式分支机构 JVD EX 系列提供了有关此过程的更多信息。
执行虚拟机箱编排
如果您计划构建虚拟机箱,可以在 JVD for Distributed Branch EX 系列中找到有关如何为每种交换机型号执行此作的说明。以下链接适用于最常见的交换机型号:
- 需要预分虚拟机箱的交换机: EX2300、EX4650 和 QFX5120 Mist 的 虚拟机箱 形成工作流程
形成虚拟机箱后,配置 LAG 上行链路。在我们的案例中,配置以下内容:
- 端口 ID=
ge-0/0/1, ge-1/0/2 - interface=
L2 Interface - 配置文件=
Uplink - 端口聚合=
Enabled - LACP=
Enabled - LACP Force-UP=
Disabled(仅下行链路接口(如 WAN 路由器上的接口)需要此选项) - AE 索引=
0
(选答)您可以 将 Shell 远程 Shell 连接到交换机以查看 LAG 和 LACP 状态,如下例输出所示:
root@switch1> show lacp interfaces
Aggregated interface: ae0
LACP state: Role Exp Def Dist Col Syn Aggr Timeout Activity
ge-0/0/1 Actor No No Yes Yes Yes Yes Fast Active
ge-0/0/1 Partner No No Yes Yes Yes Yes Fast Active
ge-1/0/2 Actor No No Yes Yes Yes Yes Fast Active
ge-1/0/2 Partner No No Yes Yes Yes Yes Fast Active
LACP protocol: Receive State Transmit State Mux State
ge-0/0/1 Current Fast periodic Collecting distributing
ge-1/0/2 Current Fast periodic Collecting distributing
板载独立交换机
独立交换机的上线涉及使用前面演示的步骤使交换机联机并在云Juniper Mist管理交换机。完成此作后,只需使用 上行链 路配置文件配置通往 WAN 路由器的上行链路接口,因为此链路必须支持多个 VLAN。在我们的示例中,配置如下:
- 端口 ID=
ge-0/0/4 - interface=
L2 Interface - 配置文件=
Uplink - 端口聚合=
Disabled
(选答)您可能需要使用 远程 Shell 来确定在端口 ge-0/0/4 上配置的 VLAN。
root@switch2> show vlans
Routing instance VLAN name Tag Interfaces
default-switch default 1
.
.
ge-0/0/4.0*
.
.
default-switch vlan1088 1088
ge-0/0/4.0*
default-switch vlan1099 1099
ge-0/0/4.0*
为有线客户端和接入点配置接入端口
接下来,配置有线客户端和接入点的接入端口。为此,我们建议使用交换机模板来更好地同步配置。然而,对于我们的实验室来说,单独分配的配置文件更有意义,因为我们可以更灵活地更改它们。
对于使用 VLAN 1099 的有线客户端,我们从“vlan1099-noauth”配置文件开始,如下所示:
- 端口 ID=
ge-0/0/0 - interface=
L2 Interface - 配置文件=
vlan1099-noauth - 端口聚合=
Disabled
对于接入点,我们利用内置接入点配置文件:
- 端口 ID=
ge-0/0/3 - interface=
L2 Interface - 配置文件=
AP - 端口聚合=
Disabled
测试配置
接下来,检查有线客户端是否已连接到基础架构,并且无需执行任何身份验证即可看到彼此。选择实验室中可用的任何方法连接到连接到交换机的有线客户端。下面,请参阅在 Linux 客户端上执行的命令,用于测试网络中的连接,例如:
# review the local interfaces
root@desktop1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
1: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:7a:8a:50 brd ff:ff:ff:ff:ff:ff
inet 10.99.99.99/24 brd 10.99.99.255 scope global ens5
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe7a:8a50/64 scope link
valid_lft forever preferred_lft forever
# review the routes
root@desktop1:~# ip r
default via 10.99.99.1 dev ens5 proto static
10.99.99.0/24 dev ens5 proto kernel scope link src 10.99.99.99
# test the connection via WAN-Router to internet
root@desktop1:~# ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=3.65 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=3.54 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=3.63 ms
.
# ping the wireless client on the same VLAN in the next Switch
root@desktop1:~# ping -c3 10.99.99.42
PING 10.99.99.42 (10.99.99.42) 56(84) bytes of data.
64 bytes from 10.99.99.42: icmp_seq=1 ttl=64 time=1.47 ms
64 bytes from 10.99.99.42: icmp_seq=2 ttl=64 time=0.676 ms
64 bytes from 10.99.99.42: icmp_seq=3 ttl=64 time=0.679 ms
.
# check the ARP-resolution
root@desktop1:~# ip n
10.99.99.42 dev ens5 lladdr 52:54:00:bd:8c:e8 STALE
10.99.99.1 dev ens5 lladdr 4c:96:14:55:7f:80 STALE
# test the DHCP-Server on WAN-Router
root@desktop1:~# dhclient -v ens5
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens5/52:54:00:7a:8a:50
Sending on LPF/ens5/52:54:00:7a:8a:50
Sending on Socket/fallback
DHCPDISCOVER on ens5 to 255.255.255.255 port 67 interval 3 (xid=0xf4b2324f)
DHCPOFFER of 10.99.99.10 from 10.99.99.1
DHCPREQUEST for 10.99.99.10 on ens5 to 255.255.255.255 port 67 (xid=0x4f32b2f4)
DHCPACK of 10.99.99.10 from 10.99.99.1 (xid=0xf4b2324f)
bound to 10.99.99.10 -- renewal in 35575 seconds.
# test the DNS resolution
root@desktop1:~# host www.google.com
www.google.com has address 172.217.164.100
www.google.com has IPv6 address 2607:f8b0:4005:80b::2004
接入点安装和配置
接入点上线必须满足的先决条件
为了能够执行此实验,我们假设满足以下条件:
- AP 通过电缆连接到 EX 系列交换机并通电(通过外部电源或通过 PoE)。
- 如果使用 PoE,交换机必须具有足够的 PoE 可用功率,并且必须至少支持 IEEE 802.3af 或 IEEE 802.3at,具体取决于您的 AP 型号。
- 应在交换机和路由器上激活链路层发现协议 (LLDP)(这不是必需的)进行调试。
- 有必要完全遵循上述章节的说明,因为这些章节包括以下说明:
- 在此分支中,已为接入点管理 VLAN 1033 子网 10.33.33.0/24 配置了 DHCP 服务器。在我们的示例中,这是在 WAN 路由器上完成的。
- 额外的 VLAN 1088 子网 10.88.88.0/24 用于 WLAN 客户端。
- 附加的 VLAN 1099 子网 10.99.99.0/24 用于有线客户端。
- 在 WAN 路由器上,LAG 会形成到包含本机 VLAN 1033 以及 VLAN 1088 和 1099 作为中继的交换机。请记住,如果不进行进一步更改,上行链路中的本征 VLAN 将被分配给交换机上的 VLAN 1,其中分配了用于带内管理的 IRB.0。向下游设备(如接入点)提供管理 VLAN 时,需要引用此 VLAN 1。
- 在交换机连接的端口上,默认 VLAN 1 为本机,VLAN 1088 为中继。我们没有再次为有线客户端添加 VLAN 1099,因为端口不需要支持它。
- WAN 路由器必须在 WAN 接口上实施某种形式的源 NAT,以允许流向Juniper Mist云的管理流量。
以下是有关交换机最低配置(上行链路除外)的提醒:
上的接入点端口配置文件
如何向组织声明接入点?
可以使用激活码、声明码或二维码向任何组织声明接入点。
示例:激活码
每当您订购接入点时,我们的销售运营团队都会向您发送一个激活码,用于根据采购订单领取接入点和订阅。您可以使用该激活码一次性申请接入点。如需申请接入点,请前往 “组织>订阅 ”页面,选择右上角 的“添加激活码 ”。添加并激活激活码后,所有接入点将自动向组织声明。您可以在 Inventory 页面(Organization > Inventory)查看 AP 列表。
示例:接入点声明代码
您可以导航到 “组织>清单”>“申请接入点 ”,然后输入每个接入点背面的申请代码,从而向组织申请单个接入点。
示例:接入点二维码
使用 Mist™ AI 移动应用,您可以扫描印在瞻博网络接入点背面的二维码,为您的组织申请接入点。我们的应用程序与 iOS 和 Android 设备兼容。 在此处阅读更多相关信息。
我在哪里可以获取组织中接入点的申请代码?
AP 的申请代码写在 AP 的背面,上面印有 AP 的二维码。
故障排除:将接入点以“已连接”身份联机到清单中
我们假设在此步骤中,您已使用上述任一方法将 AP 声明到清单中。当您在 3-5 分钟后刷新浏览器窗口时,AP 应该会自动以“已连接”状态出现在清单中,如 图 9 所示:
如果是这种情况,您可以跳过此部分,因为它描述了如果 AP 未显示为“已连接”,如何进行故障排除。
此处详细介绍了瞻博网络接入点的故障排除。剩余部分将重点介绍在 EX 系列交换机端进行哪些故障排除,以帮助将 AP 带入清单中的 “已连接” 状态。
如果未将 AP 分配给站点,则无论其与云的连接是否一致,它将始终显示为 “已断开连接” 状态。请记住,除了声明接入点外,还必须将接入点分配给站点。
如果您是该站点的本地人,请检查接入点的状态 LED,因为其闪烁的代码可能会通过与 图 10 进行交叉引用来指示错误。
首先要做的是通过查看接入点的状态 LED 来了解错误的来源。如果在 AP 上看不到 LED,请重新启动它。如果 AP 由 PoE 供电,则可以使用以下两种方法之一重新启动它:
- 使用门户网站上提供的交换机的 Bounce Ports 选项。选择 AP 连接的端口会打开一个窗格,您可以在其中选择跳回特定端口,这也将为连接的 AP 供电。
您将看到一个新窗口,其中包含有关退回端口状态的信息,如 图 11 所示:
跳转端口可能需要几分钟时间,因为在此过程中必须进行两次 Junos OS 配置提交。
- 使用 远程 Shell 更改 PoE 接口配置(不推荐此选项)。
cli edit set poe interface ge-0/0/3 disable commit # wait >20seconds delete poe interface ge-0/0/3 disable commit and-quit exit
如果 AP 由外部电源供电,则必须将其拔下一段时间,然后再开机。AP 不像交换机那样具有控制台连接。
下一步是使用 远程命令行管理 程序对交换机进行审核,例如:
- 接入点连接的端口是否显示为“已开启”?
- 接入点连接的端口配置是否正确,并且正在转发数据包?
- 接入点的 MAC 地址是否显示在预期端口上?
- 您是否看到 AP 显示为 LLDP 邻接方?
- 假设 AP 由 PoE 供电,实际功耗是多少?
以下示例输出显示了连接到接口 ge-0/0/3 的 AP:
- 检查端口是否处于管理“已开启”状态并检测到物理链路。
root@Switch1> show interfaces terse Interface Admin Link Proto Local Remote ge-0/0/0 up down ge-0/0/0.0 up down eth-switch ge-0/0/1 up up ge-0/0/1.0 up up aenet --> ae0.0 ge-0/0/2 up up ge-0/0/2.0 up up aenet --> ae0.0 ge-0/0/3 up up ge-0/0/3.0 up up eth-switch ge-0/0/4 up down ge-0/0/4.0 up down eth-switch .
- 然后,检查端口是否处于转发模式,是否配置了预期的 VLAN(此示例中的默认 VLAN)并且是否处于访问模式。此外,请验证分配的 VLAN 是否与 WAN 路由器用于 DHCP 租用讲义以进行接入点管理的 VLAN 相同。
root@Switch1> show ethernet-switching interface ge-0/0/3 Routing Instance Name : default-switch Logical Interface flags (DL - disable learning, AD - packet action drop, LH - MAC limit hit, DN - interface down, MMAS - Mac-move action shutdown, AS - Autostate-exclude enabled, SCTL - shutdown by Storm-control, MI - MAC+IP limit hit) Logical Vlan TAG MAC MAC+IP STP Logical Tagging interface members limit limit state interface flags ge-0/0/3.0 32768 0 tagged WLAN-Client 1088 32768 0 Forwarding tagged default 1 32768 0 Forwarding untagged - 接下来,检查接入点的 MAC 地址(也印在二维码上)是否按预期出现在交换机接口上。
root@Switch1> show ethernet-switching table MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC) Ethernet switching table : 2 entries, 2 learned Routing instance : default-switch Vlan MAC MAC Age Logical NH RTR name address flags interface Index ID default 5c:5b:35:be:81:06 D - ge-0/0/3.0 0 0 default ee:38:73:9a:d4:a5 D - ae0.0 0 0
此时,也应该检查一下接入点的端口授权状态。有时,AP 打算对它所连接的交换机进行自我授权,有时这不是必需的,有人意外应用了启用了身份验证的端口配置文件。
- 接下来,检查您是否看到接入点的 MAC 地址显示为 LLDP 邻接方的机箱 ID。端口信息可能因您拥有的接入点型号而异;但是,系统名称可以帮助您确定有关接入点状态的更多信息:
- 未报告LLDP系统名称,说明AP存在连接问题。例如,它无法接收 DHCP 租约。
- 当 LLDP 系统名称为“Mist”时(如下例所示),则 AP 通常已开启,但未分配给清单。
- 当 LLDP 系统名称是接入点的 MAC 地址或清单名称时,它应该已经在组织清单中处于“已连接”状态,您可以开始应用更多配置。
root@Switch1> show lldp neighbors Local Interface Parent Interface Chassis Id Port info System Name ge-0/0/1 ae0 ec:38:73:9a:d5:24 ge-0/0/5 spoke1 ge-0/0/2 ae0 ec:38:73:9a:d5:24 ge-0/0/6 spoke1 ge-0/0/3 - 5c:5b:35:be:81:06 ETH0 Mist - 如果您在交换机上运行了 PoE,还应该检查 AP 的功耗。协商的 PoE 模式取决于 AP 型号(通常为 802.3af 或 802.3at),可在数据表中进行验证。根据配置状态和无线电使用情况,您应该会在实际的“功耗”报告中看到差异。
root@Switch1> show poe interface . . root@Switch1> show poe interface ge-0/0/3 PoE interface status: PoE interface : ge-0/0/3 Administrative status : Enabled Operational status : ON Power limit on the interface : 19.5W (L) Priority : High Power consumed : 7.3W Class of power device : 4 PoE Mode : 802.3at (L) LLDP-negotiated value on the port.
- 应在 WAN 路由器上执行以下检查。在我们的示例中,我们将 SRX 系列防火墙的远程 Shell 用作 WAN 路由器。您应该查找来自 AP 的 DHCP 租用请求,并验证是否看到两个使用端口 443 的会话用于 TCP/UDP Juniper Mist云,如下例所示:
root@spoke1> show dhcp server binding IP address Session Id Hardware address Expires State Interface 10.33.33.12 3 04:5c:6c:6b:13:42 54553 BOUND ae0.0 10.33.33.15 6 5c:5b:35:be:81:06 48923 BOUND ae0.0 root@spoke1> show arp interface ae0.0 MAC Address Address Name Interface Flags 04:5c:6c:6b:13:42 10.33.33.12 10.33.33.12 ae0.0 permanent 5c:5b:35:be:81:06 10.33.33.15 10.33.33.15 ae0.0 permanent Total entries: 2 root@spoke1> show security flow session source-prefix 10.33.33.15 Session ID: 34359960425, Policy name: 01_Internet/20, State: Stand-alone, Timeout: 60, Valid In: 10.33.33.15/40267 --> 44.204.233.81/443;udp, Conn Tag: 0x0, If: ae0.0, Pkts: 45026, Bytes: 8408428, Out: 44.204.233.81/443 --> 192.168.173.145/23463;udp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 5524, Bytes: 407857, Session ID: 34359962715, Policy name: 01_Internet/20, State: Stand-alone, Timeout: 1794, Valid In: 10.33.33.15/37165 --> 54.144.163.241/443;tcp, Conn Tag: 0x0, If: ae0.0, Pkts: 8997, Bytes: 4866046, Out: 54.144.163.241/443 --> 192.168.173.145/28185;tcp, Conn Tag: 0x0, If: ge-0/0/0.0, Pkts: 5063, Bytes: 421001, Total sessions: 2
在极少数情况下(尤其是对于借来的设备或实验室设备时),有人已经在另一个组织或云中领取了接入点,但忘记将其从库存中释放。当然,这将排除在其他组织中的任何使用。如果是这种情况,请开具支持票证。
Mist Edge 代理安装和配置
将 Juniper Mist Edge 作为 RadSec 的代理部署到 Juniper Mist 身份验证云时,建议的工作流将在以下步骤中描述:
- 将 Juniper Mist Edge 设备部署在旧有 RADIUS 服务器通常所在的中心位置。在我们简单的 JVD 测试实验室中,它作为例外附着在 WAN 路由器上。在生产环境中,位置通常是企业总部,因此任何分支机构站点均可通过企业 VPN 访问系统。
- 如果您只打算将 Juniper Mist Edge 用作 RADIUS 代理,则只需连接带外管理 (OOBM) 接口。它用于:
- 允许 Juniper Mist Edge 与 Juniper Mist 云联系以进行管理。
- 创建 RadSec 代理实例,该实例侦听 RADIUS 端口,然后通过 RadSec 将消息沿隧道传送到Juniper Mist身份验证云。
- 可选: 连接 Juniper Mist Edge 设备的其他接口(如果该接口也用于接入点的隧道终止)。
- 最初,OOBM 端口需要 DHCP 租约,您必须通过基础架构提供 DHCP 租约。
- 通过展开位于设备正面右下角的拉出式标签来获取声明代码或二维码。这允许 ZTP。
- 通过激活码在 Juniper Mist 云中创建设备。
- 等待 Juniper Mist Edge 设备显示为“已连接”和“已注册”。
- 执行更新。
- 在 OOBM 端口上配置静态 IP 地址,而不是 DHCP 租约。
我们假设 Juniper Mist Edge 已在实验室中连接并打开电源,因此我们现在可以在 Juniper Mist 云中创建实例。转到 Mist Edge > Mist Edge库存>领取Mist Edge:
像下面所示的示例声明全新 Mist Edge:
请记住,声明代码位于设备的右前下角,您必须展开拉出式标记才能查看它:
接下来,Juniper Mist Edge 应在 Juniper Mist Edge 清单中显示为“已连接”和“已注册”,并应显示 OOBM 接口的 DHCP 分配的 IP 地址。
在门户中单击设备后,将打开一个新页面。第一项任务(可能不是必需的)是执行更新,如下所示:
.
接下来,我们建议更改设备上内部 Mist 和 root 帐户的默认管理密码。
接下来,我们需要将 OOBM 接口上分配的动态 IP 地址更改为静态 IP 地址,因为所有 RADIUS 客户端都希望使用静态 IP 地址到达 RADIUS 服务器。因此,我们为实验室配置:
- 配置静态 OOBM IP=
Enabled - IP 地址=
10.44.44.5 - 子网掩码=
255.255.255.0 - 默认网关=
10.44.44.1(我们的 WAN 路由器的 ge-0/0/5 接口) - DNS=
8.8.8.8, 1.1.1.1
不要忘记保存您的新配置。
接下来,返回一页并选择 “创建群集”。
为集群命名,然后选择要加入其中的 Mist Edge。
选择集群:
接下来,启用 RadSec 代理,如我们的示例所示:
- Radius 代理=
Enabled - 类型=
Mist NAC Proxy - IP 地址=
10.0.0.0/8(我们应该一个一个地管理所有 IP 地址,但不是这个实验室)。 - 共享密钥=
juniper123(我们应该使用单独的共享密钥,但这是一个实验室)。 - Vendor=
juniper(在本例中为“瞻博网络”,但也可以是从下拉菜单中选择的第三方供应商)。 - 站点=
site1
不要忘记保存您的配置更改。
(选答)如果您愿意,可以以 root 身份打开 Juniper Mist Edge 设备的 SSH shell,并在本地检查:
-
root@mistedge1:~# ss -tuln Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 0.0.0.0:1812 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:5355 0.0.0.0:* udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:68 0.0.0.0:* udp UNCONN 0 0 [::]:1812 [::]:* udp UNCONN 0 0 [::]:5355 [::]:* tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.1:9080 0.0.0.0:* tcp LISTEN 0 4096 0.0.0.0:5355 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.1:9199 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.1:9109 0.0.0.0:* tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* tcp LISTEN 0 128 [::]:22 [::]:* tcp LISTEN 0 4096 [::]:5355 [::]:* root@mistedge1:~# systemctl status radsecproxy * radsecproxy.service - radsecproxy Loaded: loaded (/lib/systemd/system/radsecproxy.service; enabled; vendor p> Drop-In: /usr/lib/systemd/system/radsecproxy.service.d `-mxedge.conf Active: active (running) since Thu 2024-08-15 15:27:29 UTC; 15min ago Docs: man:radsecproxy(1) Main PID: 1821 (radsecproxy) IP: 189.8K in, 128.8K out IO: 128.0K read, 72.0K written Tasks: 9 (limit: 32768) Memory: 1.6M CPU: 592ms CGroup: /system.slice/radsecproxy.service `-1821 /usr/sbin/radsecproxy -c /etc/mxedge-radsecproxy.conf Aug 15 15:27:29 mistedge1 systemd[1]: Starting radsecproxy... Aug 15 15:27:29 mistedge1 systemd[1]: Started radsecproxy.
RadSec 隧道始终按需创建,不会永久保持开放状态。
Juniper Mist认证云证书安装
在本节中,我们将演示如何安装各种身份验证方法所需的证书。在 表 2 中,我们突出显示了每种身份验证方法所需的证书以及需要安装的位置。请记住,通常客户 PKI 用于证书发挥作用的所有 EAP 方法。对于 表 2 中的最后两种方法,我们重用Mist在内部为 RadSec 隧道为每个组织创建的自动 PKI。这样可以更轻松地部署证书,而不是从客户的 PKI 获取证书。
在下表中,术语“CA-cert”是指客户在其 PKI 中有多个级别具有中间或签名 CA 的情况。必须为整个路径安装所有这些公共证书。系统需要能够评估返回到根 CA 的整个路径。
| 身份验证方法 | Mist | 客户端请求方 CA-Cert | 客户端请求方 Mist 客户端请求方 用户/计算机证书 | |
|---|---|---|---|---|
| MAB | 不适用 | 不适用 | 不适用 | 不适用 |
| EAP-TLS | 客户 PKI CA-cert | 客户 PKI TLS 服务器公有/私有 | 客户 PKI CA-cert | 客户 PKI、TLS-客户端、公有/私有 |
| EAP-TTLS | 客户 PKI CA-cert | 客户 PKI TLS 服务器公有/私有 | 客户 PKI CA-cert | 不适用 |
| EAP-TTLS Mist PKI | Mist PKI CA 认证 | Mist PKI 内部 | Mist PKI CA 认证 | 不适用 |
| 用于Mist接入点的 EAP-TLS | Mist PKI CA 认证 | Mist PKI 内部 | Mist PKI CA 认证 | Mist 在接入点上自动部署 PKI |
导入客户 CA 证书
转到“ 组织>证书” 以启动本章中的所有进程。
您应该尚未看到任何证书安装,因此让我们从客户的 PKI 导入根 CA。您需要 PEM 格式的证书的公共部分,然后单击 “Add Certificate Authority”(添加证书颁发机构):
将证书的 PEM 部分粘贴到 签名证书 字段中。然后,检查提取的属性,然后单击 “保存”。
查看并导入Mist CA 证书
我们继续相同的对话窗口,现在单击“ 查看Mist证书”:
检查证书,然后单击 “下载 ”将证书保存在本地。
打开下载的文件并复制整个内容:
再次点击 “Add Certificate Authority”(添加证书颁发机构):
将下载的证书内容粘贴到 “已签名的证书 ”字段中,然后单击“ 保存”:
您现在应至少拥有两个 CA 证书,类似于以下示例中所示的证书:
导入 RADIUS 服务器证书
我们在同一对话框中继续并检查 RADIUS 服务器证书的状态:
- 如果字段显示 “导入客户 RADIUS 服务器证书”, 则尚未定义任何内容,RADIUS 服务器将为每个组织使用由Mist内部 PKI 签名的证书。
- 如果字段显示 “查看客户 RADIUS 服务器证书”, 则表示已成功加载有效的客户 PKI 证书,这些证书将用于 EAP 身份验证。
在我们的示例中,尚未定义任何内容,因此我们单击 “导入客户 RADIUS 服务器证书 ”按钮。
填写 “私钥 ”和 “签名证书”字段。您可能还需要在 私钥密码下添加密码。完成后,请检查显示的信息和属性,然后单击 “保存”。
现在,已执行实验室所需的所有证书配置。
使用证书和必要的 EAP 方法配置客户端请求方
本章提供了在未设置 MDM 来管理请求方时使用的手动客户端配置示例。这更适合测试工程师,而不是强烈建议使用 MDM 的生产级部署。但是,最好了解需要配置的内容和位置。
同样,如果您打算使用某种 MDM 来管理您的客户端,您可以跳过整个章节。
在 Windows 客户端上安装本地证书
在我们的示例中,我们使用自行生成的证书 PKI。在这里,您可以看到原始 cacert.pem 文件和 user01.p12 文件所在的文件夹并传输到本地设备:
将文件cacert.pemcacert.crt重命名为,以便 Windows 识别正确的类型。然后,双击文件将其导入。
单击 “安装证书”。
选择 “本地计算机” 以便能够与其他帐户共享新的根 CA。
配置以下设置:
- 将所有证书放在以下存储区=
Checked - 证书存储=
Trusted Root Certification Authorities
完成向导:
现在应导入您的证书。
接下来,让我们通过双击文件 user01.p12导入 User=Certificate :
在此对话框中配置:
- 存储位置=
Current User
查看文件位置和名称:
我们的证书包含以下信息:
- 密码=
juniper123
配置以下设置:
- 将所有证书放在以下存储区=
Checked - 证书存储=
Personal
完成向导。
现在应导入您的证书。
Windows 客户端有线 EAP-TLS 示例
要配置有线 NIC,请在本地搜索字段中键入“control”一词,然后单击 “控制面板”:
根据您的视图,选择 “网络和 Internet”:
根据您的视图,选择 “网络和共享中心”。
“连接”下应至少列出一个可供选择的以太网适配器。
选择 “属性 ”对话框。
更改为 “身份验证 ”选项卡。然后,配置以下设置:
- 网络身份验证方法=
Microsoft: Smart Card or other certificate
- 点击=
Settings
此对话框中的唯一更改是选择 受信任的根证书颁发机构 ,在我们的例子中是 ca.example.net。将其余字段保留为默认值,然后返回到上一个对话框。
单击 “其他设置”。
配置以下设置:
- 指定身份验证模式=
Checked - 模式=
User authentication
现在,您可以完成主要对话。
为了进行简单的测试,我们建议您首先禁用适配器。
然后,再次启用适配器并检查身份验证是否有效。
Windows 客户端无线 EAP-TLS 示例
要配置 WLAN 适配器,请在本地搜索字段中键入“control”一词,然后单击 “控制面板”。
根据您的视图,选择 “网络和 Internet”。
根据您的视图,选择 “网络和共享中心”。
然后,选择“ 设置新连接或网络”。
选择 “手动连接到无线网络”。
配置以下设置:
- 网络名称=
<SSID> - 安全类型=
WPA2-Enterprise
.
选择 “更改连接设置”。
更改为 “安全性 ”选项卡。然后,配置以下内容:
- 网络身份验证方法=
Microsoft: Smart Card or other certificate
- 点击=
Settings
此对话框中的唯一更改是选择 受信任的根证书颁发机构 ,在我们的例子中是 ca.example.net。将其余字段保留为默认值,然后返回到上一个对话框。
单击 “其他设置”。
配置以下设置。
- 指定身份验证模式=
Checked - 模式=
User authentication
您现在可以完成主要对话。然后,使用通常的对话连接到无线网络。
Windows 客户端有线 EAP-TTLS 示例
要配置有线 NIC,请在本地搜索字段中键入“control”一词,然后单击 “控制面板”。
根据您的视图,选择 “网络和 Internet”。
根据您的视图,选择 “网络和共享中心”。
“连接”下应至少有一个可以选择的以太网适配器。
选择 “属性 ”对话框。
更改为 “身份验证 ”选项卡。然后,配置以下设置:
- 网络身份验证方法=Microsoft:
EAP-TTLS - 点击=
Settings
此对话中唯一的变化是选择我们的受信任根证书颁发机构,在我们的例子中是 ca.example.net.将其余字段保留为默认值,然后返回到上一个对话框。请确保客户端身份验证方法是默认的未加密密码 (PAP)。
单击 “其他设置”。
配置以下设置:
- 指定身份验证模式=
Checked - 模式=
User authentication - 点击=
Save credentials
接下来,输入对 Juniper Mist 身份验证云将联系进行验证的远程 IdP 有效的用户名和密码。在我们的案例中,使用示例 PKI,输入以下内容:
- 用户名=
user01@example.net - 密码=
juniper123
然后,保存此对话框并返回上一个对话框。
您现在可以完成主要对话。
为了进行简单的测试,我们建议您首先禁用适配器。
然后,再次启用适配器并检查身份验证是否有效。
Windows 客户端无线 EAP-TTLS 示例
要配置 WLAN 适配器,请在本地搜索字段中键入“control”一词,然后单击 “控制面板”。
根据您的视图,单击 “网络和互联网”。
根据您的视图,单击 “网络和共享中心”。
单击“ 设置新连接或网络”。
选择 “手动连接到无线网络”。
配置以下设置:
- 网络名称=
<SSID> - 安全类型=
WPA2-Enterprise
选择 “更改连接设置”。
更改为 “安全性 ”选项卡。然后,配置以下设置:
- 网络身份验证方法=
Microsoft: Smart Card or other certificate
- 点击=
Settings
此对话中唯一的变化是选择 我们的受信任根证书颁发机构, 在我们的例子中是 ca.example.net.将其余字段保留为默认值,然后返回到上一个对话框。请确保客户端身份验证方法是默认 的未加密密码 (PAP)。
单击 “其他设置”。
配置以下设置。
- 指定身份验证模式=
Checked - 模式=
User authentication - 点击=
Save credentials
接下来,输入对Juniper Mist身份验证云将联系进行验证的远程 IdP 有效的用户名和密码。在我们的案例中,使用示例 PKI,输入以下内容:
- 用户名=
user01@example.net - 密码=
juniper123
然后,保存此对话框并返回上一个对话框。
您现在可以完成主要对话。
接下来,使用通常的对话连接到无线网络。
Linux 桌面客户端
Linux 不支持专用证书存储。我们只需将文件传输到系统上,并在文件中显示 /etc/wpa_supplicant/wpa_supplicant.conf 它们,其中还包含EAP身份验证方法配置。在本章的示例中,我们在测试时始终执行以下作:
- 登录到桌面客户端虚拟机。
- 从外部存储加载所需的证书。
- 将我们的配置
/etc/wpa_supplicant/wpa_supplicant.conf写入一个新文件 - 在前台启动 EAP 请求方以查看任何调试消息。
使用 EAP-TLS 时,用户证书还包含根 CA 的整个路径,因此无需额外配置。
Linux 客户端有线 EAP-TLS 示例
在我们的示例中, ens5 是以太网接口
virsh console desktop1
# load your pkcs user-file from Lab-Host into VM
scp root@192.168.10.1:examplePKI/user01.p12 .
# configure the WPA-Supplicant for EAP-TLS
cat <<EOF >/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=2
ap_scan=0
network={
key_mgmt=IEEE8021X
eap=TLS
identity="user01@example.net"
private_key="/root/user01.p12"
private_key_passwd="juniper123"
eapol_flags=0
}
EOF
# now start the wpa-supplicant in forground to see its messages
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -D wired -i ens5
Successfully initialized wpa_supplicant
ens5: Associated with 01:80:c2:00:00:03
ens5: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
ens5: CTRL-EVENT-EAP-STARTED EAP authentication started
ens5: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13
ens5: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 13 (TLS) selected
ens5: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
ens5: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
ens5: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/ST=California/O=Example TEST-Corp./OU=IT-Department/CN=radius.example.net' hash=3fa3a749a49e49597c3fd9b2441f0c4ce6ab4e9e792868ac94a82fe69f0768c9
ens5: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:radius.example.net
ens5: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
ens5: CTRL-EVENT-CONNECTED - Connection to 01:80:c2:00:00:03 completed [id=0 id_str=]
Linux 客户端无线 EAP-TLS 示例
virsh console desktop2
# load your pkcs user-file from Lab-Host into VM
scp root@192.168.10.1:examplePKI/user01.p12 .
# configure the WPA-Supplicant for EAP-TLS
cat <<EOF >/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=wheel
eapol_version=2
ap_scan=1
network={
ssid="vlan1099" # SSID of the network to connect
scan_ssid=1 # enable probe request for finding networks using hidden SSID
key_mgmt=WPA-EAP # use external authentication, not pre-shared key
eap=TLS
identity="user01@example.net"
private_key="/root/user01.p12"
private_key_passwd="juniper123"
eapol_flags=0
}
EOF
# check how your WLAN USB-Adapter is named
iwconfig
lo no wireless extensions.
wlxe8de27a0e68e IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr=2347 B Fragment thr:off
Encryption key:off
Power Management:off
ens3 no wireless extensions.
# now start the wpa-supplicant in forground to see its messages
rm -f /var/run/wpa_supplicant/wlxe8de27a0e68e
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -D nl80211 -i wlxe8de27a0e68e
Successfully initialized wpa_supplicant
wlxe8de27a0e68e: SME: Trying to authenticate with d4:20:b0:11:56:13 (SSID='vlan1099' freq=2462 MHz)
wlxe8de27a0e68e: Trying to associate with d4:20:b0:11:56:13 (SSID='vlan1099' freq=2462 MHz)
wlxe8de27a0e68e: Associated with d4:20:b0:11:56:13
wlxe8de27a0e68e: CTRL-EVENT-EAP-STARTED EAP authentication started
wlxe8de27a0e68e: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlxe8de27a0e68e: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=US
wlxe8de27a0e68e: CTRL-EVENT-EAP-STARTED EAP authentication started
wlxe8de27a0e68e: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13
wlxe8de27a0e68e: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 13 (TLS) selected
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/ST=California/O=Example TEST-Corp./OU=IT-Department/CN=radius.example.net' hash=3fa3a749a49e49597c3fd9b2441f0c4ce6ab4e9e792868ac94a82fe69f0768c9
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:radius.example.net
wlxe8de27a0e68e: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
wlxe8de27a0e68e: PMKSA-CACHE-ADDED d4:20:b0:11:56:13 0
wlxe8de27a0e68e: WPA: Key negotiation completed with d4:20:b0:11:56:13 [PTK=CCMP GTK=CCMP]
wlxe8de27a0e68e: CTRL-EVENT-CONNECTED - Connection to d4:20:b0:11:56:13 completed [id=0 id_str=]
Linux 客户端有线 EAP-TTLS 示例
在我们的示例中, ens5 是以太网接口:
virsh console desktop1
# load your root-ca-file from Lab-Host into VM
scp root@192.168.10.1:examplePKI/cacert.pem .
# configure the WPA-Supplicant for EAP-TTLS w. PAP
cat <<EOF >/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=0
network={
key_mgmt= IEEE8021X # use external authentication, not pre-shared key
eap=TTLS # enable TTLS method for encrypted tunnel
ca_cert="/root/cacert.pem" # root-ca that signed the cert of the AAA-Server
anonymous_identity="anon@example.net" # use identity outside tunnel as NAI
phase2="auth=PAP" # use password authentication protocol
# this will pass clear-text password inside tunnel
identity="user01@example.net" # use this identity inside tunnel
password="juniper123" # password of the authenticating user
}
EOF
# now start the wpa-supplicant in forground to see its messages
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -D wired -i ens5
Successfully initialized wpa_supplicant
ens5: Associated with 01:80:c2:00:00:03
ens5: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
ens5: CTRL-EVENT-EAP-STARTED EAP authentication started
ens5: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13 -> NAK
ens5: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
ens5: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected
ens5: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
ens5: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/ST=California/O=Example TEST-Corp./OU=IT-Department/CN=radius.example.net' hash=3fa3a749a49e49597c3fd9b2441f0c4ce6ab4e9e792868ac94a82fe69f0768c9
ens5: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:radius.example.net
ens5: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
ens5: CTRL-EVENT-CONNECTED - Connection to 01:80:c2:00:00:03 completed [id=0 id_str=]
Linux 客户端无线 EAP-TTLS 示例
virsh console desktop2
# load your root-ca-file from Lab-Host into VM
scp root@192.168.10.1:examplePKI/cacert.pem .
# configure the WPA-Supplicant for EAP-TTLS w. PAP
cat <<EOF >/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=1
network={
ssid="vlan1099" # SSID of the network to connect
scan_ssid=1 # enable probe request for finding networks using hidden SSID
key_mgmt=WPA-EAP # use external authentication, not pre-shared key
eap=TTLS # enable TTLS method for encrypted tunnel
ca_cert="/root/cacert.pem" # root-ca that signed the cert of the AAA-Server
anonymous_identity="anon@example.net" # use identity outside tunnel as NAI
phase2="auth=PAP" # use password authentication protocol
# this will pass clear-text password inside tunnel
identity="user01@example.net" # use this identity inside tunnel
password="juniper123" # password of the authenticating user
}
EOF
# check how your WLAN USB-Adapter is named
iwconfig
lo no wireless extensions.
wlxe8de27a0e68e IEEE 802.11 ESSID:off/any
Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm
Retry short limit:7 RTS thr=2347 B Fragment thr:off
Encryption key:off
Power Management:off
ens3 no wireless extensions.
# now start the wpa-supplicant in forground to see its messages
rm -f /var/run/wpa_supplicant/wlxe8de27a0e68e
wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -D nl80211 -i wlxe8de27a0e68e
Successfully initialized wpa_supplicant
wlxe8de27a0e68e: SME: Trying to authenticate with d4:20:b0:11:56:13 (SSID='vlan1099' freq=2437 MHz)
wlxe8de27a0e68e: Trying to associate with d4:20:b0:11:56:13 (SSID='vlan1099' freq=2437 MHz)
wlxe8de27a0e68e: Associated with d4:20:b0:11:56:13
wlxe8de27a0e68e: CTRL-EVENT-EAP-STARTED EAP authentication started
wlxe8de27a0e68e: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
wlxe8de27a0e68e: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=US
wlxe8de27a0e68e: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=13 -> NAK
wlxe8de27a0e68e: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=21
wlxe8de27a0e68e: CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-CERT depth=1 subject='/C=NL/ST=Netherlands/L=Amsterdam/O=Juniper/OU=CA-Center/CN=ca.example.net/emailAddress=trustcenter@example.net' hash=6474bda8fe419b2525f6efa3579d2947437bc08e1a8ded9d48724f610c7c50e5
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/C=US/ST=California/O=Example TEST-Corp./OU=IT-Department/CN=radius.example.net' hash=3fa3a749a49e49597c3fd9b2441f0c4ce6ab4e9e792868ac94a82fe69f0768c9
wlxe8de27a0e68e: CTRL-EVENT-EAP-PEER-ALT depth=0 DNS:radius.example.net
wlxe8de27a0e68e: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully
wlxe8de27a0e68e: PMKSA-CACHE-ADDED d4:20:b0:11:56:13 0
wlxe8de27a0e68e: WPA: Key negotiation completed with d4:20:b0:11:56:13 [PTK=CCMP GTK=CCMP]
wlxe8de27a0e68e: CTRL-EVENT-CONNECTED - Connection to d4:20:b0:11:56:13 completed [id=0 id_str=]
公共身份提供程序数据库集成的配置示例
Azure AD 集成
Juniper Mist Access Assurance 允许你使用 OAuth 将我们的身份验证服务以本机方式集成到 Azure Active Directory 中。然后,通过以下方式将 Azure AD 作为 IdP 与 Juniper Mist Access Assurance 结合使用:
- 使用 EAP-TTLS 进行用户身份验证
- 通过 OAuth 执行委派身份验证检查用户名和密码,从而对用户进行身份验证
- 获取用户组成员身份,以便在身份验证策略中使用它们
- 获取用户帐户状态信息(活动或已暂停)
- 使用 EAP-TLS 或 EAP-TTLS 进行用户授权
- 获取用户帐户状态信息(活动或已暂停)
- 获取用户组成员身份,以便在身份验证策略中使用它们
- 按 MDM 合规状态划分的用户授权状态(使用 Microsoft Intune)
Azure AD 集成第 1 部分:Azure 门户配置
登录 portal.azure.com到 Azure 租户。
导航到“ Azure Active Directory”>“应用注册”。
单击 “新注册”。
为应用程序命名,然后单击 “注册”。
复制并保存 “应用程序(客户端)ID”、“目录(租户)ID”,然后选择 “添加证书或密码”。
选择“ 新建客户端密码”,设置密钥过期时间,然后单击 “添加”。
添加密钥后,复制并保存 “值 ”字段(请注意,创建密钥后,您只会立即看到它一次,因此请确保将其保存在安全的地方)。
现在,导航到 “身份验证 ”选项卡并启用 “允许公共客户端流”,如果要支持基于 EAP-TTLS 凭据的身份验证,则需要这样做。
最后,导航到 API 权限 选项卡并授予以下权限,不要忘记授予管理员同意:
Microsoft Graph:
- User.Read=
Delegated - User.Read.All=
Application - Group.Read.All=
Application
Azure AD 集成第 2 部分:瞻博网络 Mist 云配置
导航到 Organization > Access > Identity Providers ,然后单击 添加 IDP。
按如下方式配置 Azure AD 集成:
- IDP 类型=
OAuth - OAuth 类型=
Azure - OAuth 租户 ID=
<paste value from Directory (tenant) ID you copied from Azure app>
- 域名=
<configure your Azure domain name(s)>
- OAuth 客户端凭据 (CC) 客户端 ID:=
<paste Application (client) ID you copied from Azure app earlier>
- OAuth 客户端凭据 (CC) 客户端密码 =
<paste Value of the secret your created earlier>
- OAuth ROPC 客户端 ID=
<paste Application (client) ID from Azure>
有关使用 Azure 进行 EAP-TTLS 身份验证的说明。
EAP-TTLS 身份验证将资源所有者密码凭据 (ROPC) OAuth 流与 Azure AD 结合使用,这意味着使用用户名和密码使用旧式身份验证,而无需多重身份验证 (MFA)。以下是使用此方法时要记住的一些注意事项:
- 客户端设备需要配置正确的 Wi-Fi 配置文件,无论是来自组策略 (GPO) 还是 MDM——仅在登录提示时提供用户名和密码不适用于某些作系统。
- 用户需要使用其完整的用户主体名称 (UPN) (username@domain),而不仅仅是其用户名。
- 客户端需要信任服务器证书。有关详细信息,请参阅 以下文档 。
- 用户需要至少登录到 Azure 一次,然后 ROPC 身份验证才会起作用(如果使用测试用户帐户,这一点很重要)。
- 需要为使用此特定应用程序的用户禁用 MFA,因为 MFA 不是 802.1X 的真正选项(中断漫游和客户端超时)。
验证
使用 EAP-TLS 和 Azure AD 查找对客户端进行身份验证时,应会看到一个名为 “NAC IDP 组查找成功”的其他事件。
在 EAP-TTLS 方案中,应会看到 “NAC IDP 身份验证成功 ”(指示 Azure 已验证用户凭据),然后是获取用户组成员身份的 NAC IDP 组查找成功 事件。
Okta 集成
Juniper Mist Access Assurance 允许您使用 OAuth 将我们的身份验证服务与 Okta 目录原生集成。然后,您可以通过以下方式将 Okta 作为 IdP 与 Juniper Mist Access Assurance 结合使用:
- 使用 EAP-TTLS 进行用户身份验证
- 通过 OAuth 执行委派身份验证检查用户名和密码,从而对用户进行身份验证
- 获取用户组成员身份,以便在身份验证策略中使用它们
- 获取用户帐户状态信息(活动或已暂停)
- 使用 EAP-TLS 或 EAP-TTLS 进行用户授权
- 获取用户帐户状态信息(活动或已暂停)
- 获取用户组成员身份,以便在身份验证策略中使用它们
Okta 集成第 1 部分:Okta 仪表板
首先,获取您的 Okta 租户 ID 并保存它。如果您单击 Okta 仪表板的右上角,您可以看到它:
Okta 集成第 2 部分:OKTA 资源所有者密码凭据应用程序集成
本部分中的步骤是让 IdP 能够在 Mist Authentication Cloud 请求时验证用户凭据。
第 1 步 - 创建应用程序集成
导航到 “应用程序”>“创建新的应用程序集成”。
第 2 步 - 配置应用授权类型和用户分配
为应用程序命名,选择 “资源所有者密码 授予类型”:Name your application, select Resource Owner Password grant type:
选择允许哪些用户使用此应用进行身份验证。
第 3 步 - 生成客户端 ID 和客户端密钥
让我们生成客户端密钥在 “常规 ”选项卡下,单击“ 编辑 ”按钮。
将 “客户端身份验证 ”设置为 “客户端密码”。
复制生成的客户端 ID 和客户端密码。
第 4 步 - 配置 App API 范围
转到 Okta API 范围以允许应用具有以下读取权限。
Okta 集成第 3 部分:OKTA 客户端凭据应用程序集成
本部分中的步骤是让 IdP 在成功进行用户身份验证后将组分配发送回 Mist 身份验证云。
第 1 步 - 创建应用程序集成
导航到 “应用程序”>“创建新的应用程序集成”。选择“API 服务”作为登录方法。
为应用程序命名,然后单击 “保存”。
第 2 步 - 生成客户端 ID 和私钥
在下一个屏幕上,选择 “编辑” 以生成私钥。
将 “客户端身份验证 ”设置为 “公钥/私钥”,然后单击 “添加密钥”。
首先,选择 PEM 作为格式,然后单击 “复制到剪贴板 ”以复制生成的私钥(将其保存在安全位置),然后单击 “完成”。
在下一个屏幕上,单击 “保存”。
不要忘记复制并保存您的客户端 ID。
向下滚动,直到看到 “常规设置 ”部分,单击“编辑”,然后取消选中“要求在令牌请求中证明拥有证明 (DPoP) 标头”。
步骤 3 - 配置应用 API 范围
转到 Okta API Scopes 选项卡并授予以下 API 权限。
第 4 步 – 为应用程序分配管理员角色
导航到 “管理员角色 ”选项卡并分配“只读管理员”角色,否则应用将无法通过 API 读取任何数据。
Okta 集成第 4 部分:本地 Okta 用户创建示例
创建本地 Okta 用户是可选的!您可以使用其他方法来管理您的用户帐户。
要添加新的用户帐户,请转到 “目录”>“人员”>“添加人员”。
配置以下示例用户,然后保存帐户:
- 用户类型=
User - 名字=
Joe - 姓氏=
Doe - 用户名=user04@example.net (用于 IdP 登录)
- 密码
- 密码=
<your password> - 用户必须在首次登录时更改密码=
Unchecked/Disabled
- 密码=
然后 激活 用户帐户
将第二个应用程序分配给此用户帐户(上面我们使用名称“User AuthZ – Mist Access Assurance”),以允许读出为此帐户分配的组作为 IdP 的一部分。
分配第二个应用程序。
检查应用程序现在已分配给用户帐户。
检查此用户帐户所属 的组 。该组是默认的 Everyone 。您可以根据需要添加更多。然后,所有这些组都会报告给 Mist Authentication Cloud,人们可以做出基于标签的决策。
Okta 集成第 5 部分:瞻博网络 Mist 云配置
首先,将您的 Okta 租户 ID 放入 Juniper Mist 仪表板下的新 IdP 中。
第 1 步 - 添加身份提供商
在Juniper Mist仪表板中,导航到 “组织>访问>身份提供程序”>添加。
按以下步骤配置 IdP:
- IDP 类型=
OAuth - OAuth 类型=
Okta - OAuth 租户 ID=
<Okta Tenant ID (from Part 1)>
如果您使用 Okta 开发人员帐户进行测试,则 OAuth 租户 ID 不得包含域扩展名,并且看起来像“dev-<number>。
- 域名=
<Your Okta users domain name(s), e.g. company.com>
- OAuth CC 客户端 ID=
<Client ID you copied in Part 3 / Step 2>
- OAuth CC 私钥=
<Private key you copied Part 3 / Step 2>
- OAuth ROPC 客户端 ID=
<Client ID from Part 2 / Step 3 of this guide>
- OAuth ROPC 客户端密钥=
<Secret from Part 2 / Step 3 of this guide>
验证
如果 EAP-TLS 客户端身份验证成功,并随后针对 Okta 进行 IdP 查找,您应该会看到从 Okta 获取 IdP 角色的 NAC 组查找成功 事件。
如果 EAP-TTLS 身份验证成功,您还将看到 NAC IDP 身份验证成功 事件,表明 Okta 已验证用户凭据。
自己的 LDAP 目录
提供以下步骤是为了让您了解当您要针对简单的简约LDAP存储库进行测试时所采取的步骤。LDAP存储库及其目录结构尽可能保持基本。我们建议您不要将其投入生产,但如果您打算创建类似的集成,则了解流程可能会有所帮助。
本章中提供的信息仅限于实验室使用,并不意味着在生产中使用。
自有 LDAP 目录第 1 部分:创建具有公有 IP 地址的实例
第一步是设置一个运行在可以托管 LDAP 软件的地方的实例。这可以是容器、虚拟机或物理服务器。您不需要太多的资源或 CPU 能力。您甚至可以在 Raspberry Pi 上运行该服务。此解决方案的一个重要方面是,您需要有一个静态公共 IP 地址,如果该实例未直接连接到静态公共 IP 地址,则需要将 LDAPS TCP 端口 636 转换为专用 LDAP 实例。
请记住,Juniper Mist身份验证云(位于 Internet 上)需要能够打开与专用 LDAP 实例的连接以检查凭据。如果您在本地托管该实例,则可能需要要求您的 IT 团队允许通过企业防火墙进行此连接。另一种方法是在公共云提供商中创建一个实例,因为这样您就可以更轻松地将公共 IP 地址映射到该实例。
无论您选择哪个选项,都要记下下一个进程的 LDAP 实例的公共 IP 地址。在我们的示例中,我们在公共云上创建了一个小型 Ubuntu 22.04 VM 来运行 LDAP 实例。
自己的LDAP目录第2部分:为LDAPS创建证书
使用静态公共 IP 地址的 LDAP 实例就位后,您必须使用客户的 PKI 为 TLS 服务器创建证书。如果您计划稍后将服务投入生产,最好的选择是使用 FQDN 将其添加到 DNS。在这里,为了简单起见,我们只使用静态 IP 地址。以下示例使用基于 OpenSSL 的自主生成的 PKI,因此您可能需要使用与客户的 PKI 相关的类似步骤。显然,您需要将 127.0.0.1 替换为您自己的 IP 地址。
cd examplePKI openssl genrsa -out ldapserveraz.example.key 4096 openssl req -new -key ldapserveraz.example.key -subj '/C=US/ST=California/L=Sunnyvale/O=Example TEST-Corp./OU=IT-Department/CN=127.0.0.1' -out ldapserveraz.example.csr cat <<EOF >ca-server.extensions.cnf basicConstraints=critical,CA:FALSE keyUsage = digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement extendedKeyUsage = serverAuth subjectAltName=IP:127.0.0.1 subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer EOF openssl ca -config casign.conf -extfile ca-server.extensions.cnf -out ldapserveraz.example.pem -infiles ldapserveraz.example.csr openssl x509 -in ldapserveraz.example.pem -out strip.pem cat strip.pem >ldapserveraz.example.pem cat ldapserveraz.example.pem -----BEGIN CERTIFICATE----- . . -----END CERTIFICATE----- cat ldapserveraz.example.key -----BEGIN RSA PRIVATE KEY----- . . -----END RSA PRIVATE KEY-----
自己的LDAP目录第3部分:安装LDAP服务
在我们的示例中,我们在 VM 中使用了一个 Docker 容器,因此第一步是安装 Docker 本身:
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update apt-get install docker-ce docker-ce-cli containerd.io docker-compose -y
然后,您可以安装 OpenLDAP Docker 容器并配置 LDAPS 的证书:
# create some storage directories
docker rm -f openldap-server
rm -fR /data/slapd/*
mkdir -p /data/slapd/config
mkdir /data/slapd/database
mkdir /data/slapd/certs
chmod 775 -R /data/slapd
chown -R $USER:docker /data/slapd
apt-get install -y ldap-tools
# we use the cacert.pem File of our root-ca
# as our Enterprise root CA
cat <<EOF >/data/slapd/certs/cacert.pem
-----BEGIN CERTIFICATE-----
.
.
-----END CERTIFICATE-----
EOF
cat <<EOF >/data/slapd/certs/ldapserver.example.pem
-----BEGIN CERTIFICATE-----
.
# use the server certificate generated above for the cn=<public-ip>
.
-----END CERTIFICATE-----
EOF
cat <<EOF >/data/slapd/certs/ldapserver.example.key
-----BEGIN RSA PRIVATE KEY-----
.
# use the server key generated above for the cn=<public-ip>
.
-----END RSA PRIVATE KEY-----
EOF
# create and remember a strong ADMIN password
ADMINPASS=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1`
echo 'The Admin password is:'$ADMINPASS >ldapadminpass.txt
echo 'The Admin password is:'$ADMINPASS
The Admin password is:MC0xxxxxxxxxxxxxRjQ6IC
# lauch the ldap docker instance
docker rm -f openldap-server
docker run \
--restart=always \
--name openldap-server \
-p 389:389 \
-p 636:636 \
--env LDAP_ORGANISATION="example.net" \
--env LDAP_DOMAIN="ldap.example.net" \
--env LDAP_BASE_DN="dc=ldap,dc=example,dc=net" \
--env LDAP_ADMIN_PASSWORD=$ADMINPASS \
--volume /data/slapd/database:/var/lib/ldap \
--volume /data/slapd/config:/etc/ldap/slapd.d \
--volume /data/slapd/certs:/container/service/slapd/assets/certs \
--env LDAP_READONLY_USER=true \
--env LDAP_READONLY_USER_USERNAME=readonly \
--env LDAP_READONLY_USER_PASSWORD=juniper123 \
--env LDAP_TLS=true \
--env LDAP_TLS_CRT_FILENAME=ldapserver.example.pem \
--env LDAP_TLS_KEY_FILENAME=ldapserver.example.key \
--env LDAP_TLS_CA_CRT_FILENAME=cacert.pem \
--env LDAP_TLS_VERIFY_CLIENT=try \
--detach osixia/openldap:latest
#docker rm -f phpldapadmin
#docker run \
--restart=always \
--name phpldapadmin \
-p 80:80 \
--env PHPLDAPADMIN_LDAP_HOSTS=172.31.0.10 \
--env PHPLDAPADMIN_HTTPS='false' \
--detach osixia/phpldapadmin:latest
若要测试服务安装,可以使用以下命令:
# check if ldap docker works at all (unsecure as readonly user)
ldapsearch \
-h 127.0.0.1 \
-p 389 \
-D 'cn=readonly,dc=ldap,dc=example,dc=net' \
-w 'juniper123' \
-b 'dc=ldap,dc=example,dc=net' \
'(objectClass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=ldap,dc=example,dc=net> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#
# ldap.example.net
dn: dc=ldap,dc=example,dc=net
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.net
dc: ldap
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
自己的LDAP目录第4部分:创建基本LDAP目录
为了创建一个用于测试的小型 LDAP 目录,我们导入了一个在其他地方创建的小目录作为 LDIF 文件。
# create a small ldif file for import
cat <<EOF >import.ldif
# LDIF Export for dc=ldap,dc=example,dc=net
# Server: 192.168.10.14 (192.168.10.14)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 8
#
# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on June 23, 2023 2:55 pm
# Version: 1.2.5
version: 1
# Entry 1: dc=ldap,dc=example,dc=net
#dn: dc=ldap,dc=example,dc=net
#dc: ldap
#o: example.net
#objectclass: top
#objectclass: dcObject
#objectclass: organization
# Entry 2: ou=groups,dc=ldap,dc=example,dc=net
dn: ou=groups,dc=ldap,dc=example,dc=net
objectclass: organizationalUnit
objectclass: top
ou: groups
# Entry 3: cn=employees,ou=groups,dc=ldap,dc=example,dc=net
dn: cn=employees,ou=groups,dc=ldap,dc=example,dc=net
cn: employees
gidnumber: 501
memberuid: user01
memberuid: user02
memberuid: user03
objectclass: posixGroup
objectclass: top
# Entry 4: cn=employer,ou=groups,dc=ldap,dc=example,dc=net
dn: cn=employer,ou=groups,dc=ldap,dc=example,dc=net
cn: employer
gidnumber: 500
objectclass: posixGroup
objectclass: top
# Entry 5: ou=users,dc=ldap,dc=example,dc=net
dn: ou=users,dc=ldap,dc=example,dc=net
objectclass: organizationalUnit
objectclass: top
ou: users
# Entry 6: cn=user01,ou=users,dc=ldap,dc=example,dc=net
dn: cn=user01,ou=users,dc=ldap,dc=example,dc=net
cn: user01
gidnumber: 501
homedirectory: /home/users/user01
loginshell: /bin/bash
mail: user01@example.net
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user01
uid: user01
uidnumber: 1000
userpassword: juniper123
# Entry 7: cn=user02,ou=users,dc=ldap,dc=example,dc=net
dn: cn=user02,ou=users,dc=ldap,dc=example,dc=net
cn: user02
gidnumber: 501
homedirectory: /home/users/user02
loginshell: /bin/bash
mail: user02@example.net
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user02
uid: user02
uidnumber: 1001
userpassword: juniper123
# Entry 8: cn=user03,ou=users,dc=ldap,dc=example,dc=net
dn: cn=user03,ou=users,dc=ldap,dc=example,dc=net
cn: user03
gidnumber: 501
homedirectory: /home/users/user03
mail: user03@example.net
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user03
uid: user03
uidnumber: 1002
userpassword: juniper123
EOF
# import your LDIF file to create the accounts
ldapadd \
-h 127.0.0.1 \
-p 389 \
-D 'cn=admin,dc=ldap,dc=example,dc=net' \
-w $ADMINPASS \
-f import.ldif
adding new entry "ou=groups,dc=ldap,dc=example,dc=net"
adding new entry "cn=employees,ou=groups,dc=ldap,dc=example,dc=net"
adding new entry "cn=employer,ou=groups,dc=ldap,dc=example,dc=net"
adding new entry "ou=users,dc=ldap,dc=example,dc=net"
adding new entry "cn=user01,ou=users,dc=ldap,dc=example,dc=net"
adding new entry "cn=user02,ou=users,dc=ldap,dc=example,dc=net"
adding new entry "cn=user03,ou=users,dc=ldap,dc=example,dc=net"
自有 LDAP 目录 第 5 部分:瞻博网络 Mist 云配置
导航到 “组织>身份提供商”。
使用以下配置添加新的 IdP:
- 名称=
ownLDAP - IDP 类型=
LDAPS - LDAP 类型=
Custom - 组过滤器=
memberOf - 成员过滤器=
memberOf - User Filter=
(mail=%s)(您也可以使用(uid=%s),但 TTLS 客户端在身份验证时只能使用其名称,而不能使用其电子邮件地址) - 服务器主机=
<DNS-FQDN OR Public-IP>(请注意,您必须在 LDAPS 服务器上具有匹配的服务器证书,其中公用名与您在此处配置的证书匹配) - 域名=
example.net - 绑定 DN=
cn=readonly,dc=ldap,dc=example,dc=net - 绑定密码=
juniper123 - 基本 DN=
ou=users,dc=ldap,dc=example,dc=net
在我们的案例中,LDAPS 连接的证书是由同一客户 PKI 制作的。因此,不需要额外的步骤。如果是来自外部 LDAPS 服务提供商,则需要获取并添加客户端证书。如下图所示:
若要在 “组织>身份验证策略”下测试 IdP 集成,请创建一个简单的 EAP-TTLS 规则,如下所示:
在我们的目录中,EAP 请求方可以使用 3 个用户名( user01@example.net 、 user01@example.net 和 user03@example.net )以及所有 3 个用户名的密码 juniper123 (或者您可以在导入前在 LDIF 文件中更改此密码)。
执行身份验证过程时,应会看到以下事件。