如何配置OVN路由器?

概览

基于我上一篇文章中的实验环境,我现在将三层网络基础功能添加到OVN中。最终呈现出来的将是由逻辑路由器连接的一对逻辑交换机。 另外,路由器将被配置为通过OVN中内置的DHCP服务来提供IP地址。

重构逻辑组件

由于设置开始变得更加复杂,我们将重新构建网络架构。 新的逻辑网络拓扑如下:

  • 2 台逻辑交换机 switches: “dmz” 和“inside”
  • 逻辑路由器“tenant1”,它连接着两个逻辑交换机
  • IP网络“dmz” :172.16.255.128/26
  • IP网络“inside”:172.16.255.192/26
  • 每个逻辑交换机上各有一对“虚拟机”

新的逻辑网络如下图所示

理解路由

在本次实验中,我们将创建一个OVN路由器,即“分布式逻辑路由器”(DLR)。 DLR不同于传统路由器,因为它不是物理的设备,而是一种逻辑架构(与逻辑交换机不同)。 DLR仅作为OVS中的一个功能而存在:换句话说,每个OVS实例能够在overlay网络转发流量之前先在本地模拟出一个三层路由器。

创建逻辑交换机和逻辑路由器

在ubuntu1上定义逻辑交换机:


  1. ovn-nbctl ls-add inside 
  2. ovn-nbctl ls-add dmz 

添加逻辑路由器及其关联的路由器和交换机端口:


  1. # 添加路由器tenant1 
  2. ovn-nbctl lr-add tenant1 
  3.   
  4. # 为路由器tenant1创建一个连接到dmz交换机的端口 
  5. ovn-nbctl lrp-add tenant1 tenant1-dmz 02:ac:10:ff:01:29 172.16.255.129/26 
  6.   
  7. # 为dmz交换机创建用于连接到路由器tenant1的端口dmz-tenant1 
  8. ovn-nbctl lsp-add dmz dmz-tenant1 
  9. ovn-nbctl lsp-set-type dmz-tenant1 router 
  10. ovn-nbctl lsp-set-addresses dmz-tenant1 02:ac:10:ff:01:29 
  11. ovn-nbctl lsp-set-options dmz-tenant1 router-port=tenant1-dmz 
  12.   
  13. #为路由器tenant1创建一个连接到inside交换机的端口  
  14. ovn-nbctl lrp-add tenant1 tenant1-inside 02:ac:10:ff:01:93 172.16.255.193/26 
  15.   
  16. #为inside交换机创建用于连接到路由器tenant1的端口inside-tenant1 
  17. ovn-nbctl lsp-add inside inside-tenant1 
  18. ovn-nbctl lsp-set-type inside-tenant1 router 
  19. ovn-nbctl lsp-set-addresses inside-tenant1 02:ac:10:ff:01:93 
  20. ovn-nbctl lsp-set-options inside-tenant1 router-port=tenant1-inside 
  21.   
  22. ovn-nbctl show 

添加 DHCP

OVN中的DHCP与大多数的解决方案有点不同。 大多数人的想法是管理员将:

  1. 给定子网定义一组DHCP选项
  2. 创建逻辑交换机端口,给该端口定义MAC地址和IP地址
  3. 为该端口分配DHCP选项。
  4. 将端口安全设置为仅允许分配的地址

下面,我们将要给4台虚拟机配置逻辑端口。

在ubuntu1上:


  1. ovn-nbctl lsp-add dmz dmz-vm1 
  2. ovn-nbctl lsp-set-addresses dmz-vm1 "02:ac:10:ff:01:30 172.16.255.130" 
  3. ovn-nbctl lsp-set-port-security dmz-vm1 "02:ac:10:ff:01:30 172.16.255.130" 
  4.   
  5. ovn-nbctl lsp-add dmz dmz-vm2 
  6. ovn-nbctl lsp-set-addresses dmz-vm2 "02:ac:10:ff:01:31 172.16.255.131" 
  7. ovn-nbctl lsp-set-port-security dmz-vm2 "02:ac:10:ff:01:31 172.16.255.131" 
  8.   
  9. ovn-nbctl lsp-add inside inside-vm3 
  10. ovn-nbctl lsp-set-addresses inside-vm3 "02:ac:10:ff:01:94 172.16.255.194" 
  11. ovn-nbctl lsp-set-port-security inside-vm3 "02:ac:10:ff:01:94 172.16.255.194" 
  12.   
  13. ovn-nbctl lsp-add inside inside-vm4 
  14. ovn-nbctl lsp-set-addresses inside-vm4 "02:ac:10:ff:01:95 172.16.255.195" 
  15. ovn-nbctl lsp-set-port-security inside-vm4 "02:ac:10:ff:01:95 172.16.255.195" 
  16.   
  17. ovn-nbctl show 

您可能已经注意到,与上一个实验不同,现在通过一条命令就能定义mac和IP地址。 IP地址定义实现了我们的2个目的:

  1. 它通过OVN在本地应答其知道的IP / MAC的ARP请求来实现ARP抑制。
  2. 从哪个端口收到DHCP请求,就会从哪个接口分配IP地址。通过这种方式来实现DHCP。

接下来,我们需要定义DHCP选项并将它们分配给逻辑端口。这里的处理将与我们以前看到的有点不同,因为我们将直接与OVN NB数据库进行交互。 用这种方式的原因是需要捕获DHCP_Options中的UUID,以便我们可以将UUID分配给交换机端口。 为此,我们将把捕获的ovn-nbctl命令的结果输出到一对bash变量中。


  1. dmzDhcp="$(ovn-nbctl create DHCP_Options cidr=172.16.255.128/26 \ 
  2. options="\"server_id\"=\"172.16.255.129\" \"server_mac\"=\"02:ac:10:ff:01:29\" \ 
  3. \"lease_time\"=\"3600\" \"router\"=\"172.16.255.129\"")"  
  4. echo $dmzDhcp 
  5.   
  6. insideDhcp="$(ovn-nbctl create DHCP_Options cidr=172.16.255.192/26 \ 
  7. options="\"server_id\"=\"172.16.255.193\" \"server_mac\"=\"02:ac:10:ff:01:93\" \ 
  8. \"lease_time\"=\"3600\" \"router\"=\"172.16.255.193\"")" 
  9. echo $insideDhcp 
  10.   
  11. ovn-nbctl dhcp-options-list 

如果您想了解有关OVN NB数据库的更多信息,请参阅ovn-nb的手册(译者注:http://openvswitch.org/support/dist-docs/ovn-nb.5.pdf)。

现在,我们将使用存储在变量中的UUID为逻辑交换机端口分配DHCP_Options。


  1. ovn-nbctl lsp-set-dhcpv4-options dmz-vm1 $dmzDhcp 
  2. ovn-nbctl lsp-get-dhcpv4-options dmz-vm1 
  3.   
  4. ovn-nbctl lsp-set-dhcpv4-options dmz-vm2 $dmzDhcp 
  5. ovn-nbctl lsp-get-dhcpv4-options dmz-vm2 
  6.   
  7. ovn-nbctl lsp-set-dhcpv4-options inside-vm3 $insideDhcp 
  8. ovn-nbctl lsp-get-dhcpv4-options inside-vm3 
  9.   
  10. ovn-nbctl lsp-set-dhcpv4-options inside-vm4 $insideDhcp 
  11. ovn-nbctl lsp-get-dhcpv4-options inside-vm4 

配置虚拟机

与上一个实验一样,我们将使用OVS内部端口和网络命名空间构建的“伪虚拟机”。 现在的区别是,我们将使用DHCP进行地址分配。

接下来我们将设置虚拟机。

在ubuntu2上:


  1. ip netns add vm1 
  2. ovs-vsctl add-port br-int vm1 -- set interface vm1 type=internal 
  3. ip link set vm1 address 02:ac:10:ff:01:30 
  4. ip link set vm1 netns vm1 
  5. ovs-vsctl set Interface vm1 external_ids:iface-id=dmz-vm1 
  6. ip netns exec vm1 dhclient vm1 
  7. ip netns exec vm1 ip addr show vm1 
  8. ip netns exec vm1 ip route show 
  9.   
  10. ip netns add vm3 
  11. ovs-vsctl add-port br-int vm3 -- set interface vm3 type=internal 
  12. ip link set vm3 address 02:ac:10:ff:01:94 
  13. ip link set vm3 netns vm3 
  14. ovs-vsctl set Interface vm3 external_ids:iface-id=inside-vm3 
  15. ip netns exec vm3 dhclient vm3 
  16. ip netns exec vm3 ip addr show vm3 
  17. ip netns exec vm3 ip route show 

在 ubuntu3上:


  1. ip netns add vm2 
  2. ovs-vsctl add-port br-int vm2 -- set interface vm2 type=internal 
  3. ip link set vm2 address 02:ac:10:ff:01:31 
  4. ip link set vm2 netns vm2 
  5. ovs-vsctl set Interface vm2 external_ids:iface-id=dmz-vm2 
  6. ip netns exec vm2 dhclient vm2 
  7. ip netns exec vm2 ip addr show vm2 
  8. ip netns exec vm2 ip route show 
  9.   
  10. ip netns add vm4 
  11. ovs-vsctl add-port br-int vm4 -- set interface vm4 type=internal 
  12. ip link set vm4 address 02:ac:10:ff:01:95 
  13. ip link set vm4 netns vm4 
  14. ovs-vsctl set Interface vm4 external_ids:iface-id=inside-vm4 
  15. ip netns exec vm4 dhclient vm4 
  16. ip netns exec vm4 ip addr show vm4 
  17. ip netns exec vm4 ip route show 

测试网络连通性

在ubuntu2上,从vm1测试网络连通性:


  1. # ping vm1的默认网关 
  2. root@ubuntu2:~# ip netns exec vm1 ping 172.16.255.129 
  3. PING 172.16.255.129 (172.16.255.129) 56(84) bytes of data. 
  4. 64 bytes from 172.16.255.129: icmp_seq=1 ttl=254 time=0.689 ms 
  5. 64 bytes from 172.16.255.129: icmp_seq=2 ttl=254 time=0.393 ms 
  6. 64 bytes from 172.16.255.129: icmp_seq=3 ttl=254 time=0.483 ms   
  7. # 从 overlay网络ping vm2(跨越整个 tenant1) 
  8. root@ubuntu2:~# ip netns exec vm1  ping 172.16.255.131 
  9. PING 172.16.255.131 (172.16.255.131) 56(84) bytes of data. 
  10. 64 bytes from 172.16.255.131: icmp_seq=1 ttl=64 time=2.16 ms 
  11. 64 bytes from 172.16.255.131: icmp_seq=2 ttl=64 time=0.573 ms 
  12. 64 bytes from 172.16.255.131: icmp_seq=3 ttl=64 time=0.446 ms   
  13. # 经过 router ping通 vm3(跨越整个 overlay网络) 
  14. root@ubuntu2:~# ip netns exec vm1  ping 172.16.255.194 
  15. PING 172.16.255.194 (172.16.255.194) 56(84) bytes of data. 
  16. 64 bytes from 172.16.255.194: icmp_seq=1 ttl=63 time=1.37 ms 
  17. 64 bytes from 172.16.255.194: icmp_seq=2 ttl=63 time=0.077 ms 
  18. 64 bytes from 172.16.255.194: icmp_seq=3 ttl=63 time=0.076 ms   
  19. #经过 router ping 通vm4(跨越整个 overlay网络) 
  20. root@ubuntu2:~# ip netns exec vm1  ping 172.16.255.195 
  21. PING 172.16.255.195 (172.16.255.195) 56(84) bytes of data. 
  22. 64 bytes from 172.16.255.195: icmp_seq=1 ttl=63 time=1.79 ms 
  23. 64 bytes from 172.16.255.195: icmp_seq=2 ttl=63 time=0.605 ms 
  24. 64 bytes from 172.16.255.195: icmp_seq=3 ttl=63 time=0.503 ms 

结语

OVN使得第三层overlay网络易于部署和管理。 另外像DHCP的服务直接构建到系统中的方式,有助于减少构建有效的SDN解决方案所需的外部组件的数量。 在下一篇文章中,将讨论如何将我们(当前隔离的)overlay网络连接到外部世界。

译者简介:郑敏先,就职于诺云系统(上海)有限公司。工作地点为南京的诺云研发中心。担任解决方案工程师。

本文作者:佚名          

来源:51CTO

时间: 2024-12-30 14:26:34

如何配置OVN路由器?的相关文章

Packet Tracer 5.0如何配置cisco路由器

花费了几天的时间写了这篇博文,关于配置cisco路由器的命令在教程上都写的比较清楚,可是好多命令记住了未必能够得心应手的运用于企业的实际网络中,我在这篇博文了介绍了运用终端设备如何登录到cisco路由器,如何专线接入配置网络,如何使用cisco路由器的一些基本的配置命令,还有相关的一些设置cisco命令的所涉及到一些思科设备的硬件知识. 思科路由器和普通的路由器,(比如sohu路由器.金浪路由器.TP-link路由器都有一个WAN端口几个以太网端口),在连接外网上是有区别的.思科路由器没有WAN

正确配置思科路由器口令从而保障网络安全

[51CTO.com 专家特稿]网络的安全管理涉及到许多方面,但纵观许多安全事件,可以得到一个基本的结论,危害都是由于 忽视了基本的安全措施而造成的.本文将讨论维护思科路由器口令安全的重要性,解释思科路由器IOS的三种模式,并向读者展示如何配置五大口令保护网络安全. 借助口令保障路由器安全的原因 首先,作为思科设备的管理员,我们必须 认识到,路由器并不存在什么自动化的口令防御.管理员必须认真对待思科设备的口令设置问题.思科设备运行的灵魂是IOS,它有不同的模式.这些模式是分等级设置的,这意味着访

如何配置OVN负载均衡器?

译者简介:郑敏先,就职于诺云系统(上海)有限公司.工作地点为南京的诺云研发中心.担任解决方案工程师. 概述 基于我的上一篇文章,接下来我将介绍OVN的负载平衡特性. 但在开始之前,我们来看看上一个实验中的配置. OVN 负载均衡器 OVN负载均衡器旨在为OVN逻辑网络空间内的工作负载提供非常基本的负载均衡服务.由于其简单的功能集,它不是设计用于替换那些为高级用例提供更多花里胡哨的功能的硬件负载均衡器. 其它负载均衡器大多使用基于哈希的算法来平衡VIP的请求到逻辑空间内的相关IP地址池.由于哈希算

配置 IPSec - 路由器到PIX防火墙

这个文档说明了在路由器和思科防火墙之间的IPSec配置.在总部和分公司之间的流量使用的是私有IP地址,当分公司的局域网用户访问互联网时,需要进行地址转换. 网络拓扑 配置 定义去路由器的流量: access-list ipsec permit ip 10.1.1.0 255.255.255.0 10.2.2.0 255.255.255.0 !--- 去路由器的流量不做地址转换 access-list nonat permit ip 10.1.1.0 255.255.255.0 10.2.2.0

实例讲解路由器OSPF配置之路由器上的OSPF的链路状态数据库查询

R1路由器上的OSPF的链路状态数据库查询R1#sh ip ospf database 查询OSPF的链路状态数据库OSPF Router with ID (1.1.1.1) (Process ID 100)描述R1的OSPF的路由ID为1.1.1.1,进程ID为100Router Link States (Area 0)路由链路状态数据库中的区域"0"LinkIDADVRouterAgeSeq#ChecksumLinkcount 1.1.1.11.1.1.11040x80000005

实例讲解路由器OSPF配置之路由器上的OSPF邻居表查询

R1路由器上的OSPF邻居表查询R1#shipospfneighbor查询OSPF的邻居表命令 NeighborIDPriStateDeadTimeAddress Interface 2.2.2.21FULL/-00:00:35199.99.1.2Serial1/0"Neighbor ID" 表示邻居路由器的路由ID,而路由ID是代表路由器在OSPF网络中的唯一标识符.Pri 路由器的优先级State 路由器的状态为FULLDead Time 最后学习到路由信息的时间Address 邻

教你如何安全配置Cisco路由器交换机

一. 网络结构及安全脆弱性为了使设备配置简单或易于用户使用,Router或Switch初始状态并没有配置安全措施, 所以网络具有许多安全脆弱性,因此网络中常面临 如下威胁:1. DDOS攻击2. 非法授权访问攻击.口令过于简单,口令长期不变,口令明文创送,缺乏强认证机制.3.IP地址欺骗攻击-.利用Cisco Router和Switch可以有效防止上述攻击.二.保护路由器2.1 防止来自其它各省.市用户Ddos攻击最大的威胁:Ddos, hacker控制其他主机,共同向Router访问提供的某种

配置-思科路由器设置,求ping通

问题描述 思科路由器设置,求ping通 已知:内部局域网tracert服务器0的结果为:192.168.0.10>172.168.100.10>100.100.100.50>100.100.100.100:tracert服务器1的结果为:192.168.0.10>172.168.100.20>200.200.200.40>200.200.200.200请教:两个路由器的配置

AR系列路由器使用SSH用户验证方式为password登录路由器的典型配置_路由器、交换机

 大 | 中 | 小    SSH是Secure Shell(安全外壳)的简称,用户通过一个不能保证安全的网络环境远程登录到路由器时,SSH特性可以提供安全保障和强大的认证功能,以保护路由器不受诸如IP地址欺诈.明文密码截取等等的攻击. 使用SSH Client通过password方式登录路由器 # sysname Quidway # radius scheme system # domain system # local-user huawei             /创建本地帐号"huaw