Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

使用 CSRX Contrail 服务链

 

服务链是以特定顺序通过多个网络实体转发信息流的概念,而每个网络实体则执行特定功能,如防火墙、IPS、NAT、LB 等。执行服务链的传统方式是使用独立硬件设备,但这使得服务链变得不太灵活、成本高昂且延长设置时间。在动态服务链中,网络功能部署为虚拟机或容器,可按逻辑方式自动链接。例如,Figure 1使用 Contrail 来在两个不同网络中的两个盒之间进行服务链,使用– cSRX 容器级别4级别7防火墙来保护它们之间的流量。

Figure 1: 服务链
服务链
Note

此处的左和右网络仅用于简单性’,用于按从左到右的顺序,但您可以使用自己的课程名称。在将盒附加到之前,请确保先配置网络,否则不会创建 pod。

启动客户端和 CSRX 箱

让’s 使用此 YAML 文件创建两个虚拟网络:

Verify using Kubectl:

’良好的实践是确认这两个网络现在是否在 Contrail 中,然后再继续。在 Contrail UI 中,选择配置 > 网络 > 网络 > 默认域 > k8s 默认值如Figure 2所示(重点介绍左侧网络)。

Note

如果在网络的 YAML 文件中使用默认命名空间,它将在域默认域和项目 k8s 中创建它。

Figure 2: 确认创建两个网络
确认创建两个网络

创建客户端箱

现在,’让 s 创建两个 Ubuntu 箱,每个网络使用以下注释对象:

创建 cSRX 盒

现在使用此 YAML 文件创建一个 Juniper cSRX 容器,在左侧网络上有一个接口,右网络上有一个接口:

确认接口放置在正确的网络中:

Note

不管注释对象的使用是什么,每个容器都有一个属于群集范围默认网络的接口,因为上面的注释对象创建完毕,并在特定网络中放入一个额外接口。

验证 PodIP

要验证 podIP,请登录左侧 pord、右 Pod 和 cSRX 以确认 IP/MAC 地址:

Note

与其他盒不同,cSRX’未使用 DHCP 获取 IP,并且从出厂默认配置开始,因此需要对其进行配置。

Note

默认情况下,cSRX eth0 仅在外壳中可见,用于管理。连接网络时,第一个连接的网络将映射到 eth1,后者为 GE-0/0/1,而附加的第二个则映射到 eth2,后者为 GE-0/0/0。

配置 cSRX IP

在 cSRX 上配置此基本设置。要分配正确的 IP 地址,请使用 kubectl 中的 MAC/IP 地址映射说明 pod 命令输出,以及配置默认安全策略以允许所有操作:

验证 cSRX 上分配的 IP 地址:

左侧 pod 上的 ping 测试将失败,因为没有路由:

在左侧和右侧的盒中添加静态路由,然后再次尝试 ping:

Ping 仍发生故障,因为我们’未创建服务链,也会负责路由。让’我们来看到我们的数据包发生了什么变化:

’在 cSRX 没有会话。要排除 ping 问题,请登录承载此容器的计算节点 cent22,以使用 TShark 转储流量并检查路由。要获取链接容器的接口:

请注意,vif0/3 和 vif0/4 与右侧 pod 绑定,分别链接到 tapeth0-89a4e2 和 tapeth1-89a4e2。Vif0/5 和 Vif0/6 的左盒的相同之处,Vif0/7、vif 0/8 和 Vif0/9 与 cSRX1 绑定在一起。从中,您还可以看到击中接口的数据包/字节的数量,以及 VRF。VRF 3 适用于默认集群-网络,而 VRF 6 则适用于左网络,而 VRF 5 则适用于正确的网络。在图10.3 中,您可以从所有视角(容器、Linux、vr 代理)中看到接口映射。

Figure 3: 接口映射
接口映射

让’我们再次尝试从左盒向右盒上 ping,并使用右盒的分路界面上的 TShark 进行进一步检测:

看起来 ping’根本没有到达右侧的 pod,让我们’检查 cSRX’的左网络路界面:

我们可以看到数据包,但 cSRX 安全中没有希望丢弃此数据包的任何内容

通过记录到计算节点中 vrouter_vrouter agent_1 容器,检查左网络 VRF 的路由表:

请注意,6是左侧网络的路由表 VRF;正确的网络 VRF 路由表也是如此,但缺少路由:

因此,即使所有的箱都托管在相同的计算节点上,它们也’无法相互连接。如果这些箱托管在某些不同的计算节点上,您就有了更大的问题要解决。服务链’不仅仅是调整容器上的路由,还应在计算节点之间的 vRouter 之间交换路由,而不考虑盒的位置(以及在将盒式移动到其他计算节点时自动调整)。在 labbing 服务链允许我’解决不属于这种 CLI 故障排除…的网络管理员的重要问题之前,您可以使用 Contrail 控制器 GUI 执行相同的故障排除。

在 Contrail 控制器 UI 中,选择监控 > 基础架构 > 虚拟路由器,然后选择承载该 pod 的节点,在我们的本例中为 cent22,如下一个屏幕捕获中所示,Figure 4

Figure 4: 操作中的 Contrail 控制器 GUI
操作中的 Contrail 控制器 GUI

Figure 4显示了 "接口" 选项卡,它等效于在 vrouter_vrouter 代理-1 容器上运行 vif-l 命令,但显示的信息更详细。请注意实例 ID 和分路接口命名之间的映射,实例 ID 的前六个字符将始终在分路接口命名中反映出来。

我们是 GUI cowboys。让’我们检查每个 VRF 的路由表,方法是移动到路由选项卡并选择要查看的 VRF,如Figure 5中所示。

Figure 5: 检查每个 VRF 的路由表
检查每个 VRF 的路由表

选择左网络。名称较长,因为它包含域(和项目)。您可以确认没有来自正确网络的 10.20.20.0/24 前缀。您也可通过选择 L2 (相当于 rt--dump 6--系列桥接命令),检查在左网络中了解的 MAC 地址。

服务链

现在让’我们使用 CONTRAIL 命令 GUI 利用 cSRX 服务链。服务链包含四个需要按顺序完成的步骤:

  1. 创建服务模板;
  2. 根据已完成的服务模板创建服务实例;
  3. 创建网络策略并选择以前创建的服务实例;
  4. 将此网络策略应用到网络。
Note

由于 Contrail 命令 GUI 是为所有环境提供单点管理的最佳解决方案,因此我们将使用它来构建服务变化。您仍然可以使用常规 Contrail 控制器 GUI 来构建服务链。

首先,’让 s 登录 CONTRAIL 命令 GUI (在我们的设置 https://10.85.188.16:9091/中),如Figure 7中所示,然后选择服务 > 目录 > Create,如Figure 8所示。

Figure 6: 登录 Contrail 命令
登录 Contrail 命令
Figure 7: 创建新服务
创建新服务

在此处插入服务模板的名称,在此处 myweb-cSRX-CS,然后选择 v2 和虚拟机作为服务模式。选择 "网络中" 和 "防火墙" 作为服务类型,如Figure 9所示。

Figure 8: 选择服务类型
选择服务类型

下一步选择管理,从左到右,然后单击创建。

Figure 9: 创建服务
创建服务

现在,选择部署,然后单击 Create 按钮创建服务实例,如Figure 11所示。

Figure 10: 部署服务实例
部署服务实例

命名此服务实例,然后从下拉菜单中选择您创建的模板的名称,以便从 cSRX 成为将执行服务链的实例(在该情况下为容器)中选择正确的网络。单击端口元组以将其展开,如Figure 12所示。然后,这三个接口中的每一个都绑定 cSRX 的一个接口,然后单击 Create。

Figure 11: 扩展端口元组
扩展端口元组
Note

虚拟机接口’的名称未显示在下拉菜单中,而是’实例 ID。您可以根据我们之前提到的方式来识别点击接口名称。换句话说,您只需了解属于该容器的任何接口的前六个字符。给定实例(VM 或容器)中的所有接口共享相同的首字符。

继续之前,请确保三个接口的状态正常,并且显示的是 cSRX 实例的正确 IP 地址,如Figure 13所示。

Figure 12: 所有接口启动并运行
所有接口启动并运行

要创建网络策略,请转到叠加 > 网络策略 > 创建,如Figure 14所示。

Figure 13: 创建网络策略
创建网络策略

为您的网络策略命名,然后在第一个规则中,将左网络添加为源网络,将右侧网络作为目标提供给 pass 操作。

Figure 14: 源和目标
源和目标

选择 advanced 选项并将服务实例连接到以前创建的,然后单击创建按钮。

Figure 15: 连接服务实例
连接服务实例

要将此网络策略附加到网络,请在最左侧列中单击虚拟网络,然后选择左网络和编辑。

Figure 16: 将策略附加到网络
将策略附加到网络

在网络策略中,从下拉菜单列表中选择您刚创建的网络策略,然后单击 Save。对正确的网络执行相同操作。

Figure 17: 保存网络策略
保存网络策略

验证服务链

现在让’我们来验证此服务的影响是否在路由上更改。从 Contrail 控制器模块控制节点(http://10.85.188.16:8143 在我们的设置中),选择监控 > 基础架构 > 虚拟路由器然后选择承载该 pod 的节点,在本例中为 Cent22. local,然后选择路由选项卡并选择左 VRF。

Figure 18: 验证服务链
验证服务链

在这种情况下,您可以看到正确的网络主机路由已泄漏到左侧网络(10.20.20.1/32、10.20.20.2/32)。

现在,’让我们从左箱向右盒 ping,以查看 cSRX 上创建的会话:

安全策略

在 cSRX 上创建安全策略,以便仅允许 HTTP 和 HTTPS:

由于 cSRX 上的策略下降,ping 失败:

在 cSRX 我们可以看到会话创建: