当前位置: 首页 > 科技观察

使用开源软件在Linux上创建SDN

时间:2023-03-13 08:12:07 科技观察

使用开源路由协议栈Quagga将您的Linux系统变成路由器。网络路由协议分为两类:内部网关协议和外部网关协议。路由器使用内部网关协议在单个自治系统内共享信息。如果您使用的是Linux,则可以使用开源(GPLv2)路由堆栈Quagga使其像路由器一样运行。什么是斑驴?Quagga是一个路由包和GNUZebra的一个分支。它为类Unix平台提供所有主要路由协议的实现,例如开放最短路径优先(OSPF)、路由信息协议(RIP)、边界网关协议(BGP)和中间系统到中间系统协议(IS-是)。虽然Quagga实现了IPv4和IPv6的路由协议,但它并不是一个完整的路由器。真正的路由器不仅实现了所有的路由协议,还具有转发网络流量的能力。Quagga只实现了路由协议栈,而转发网络流量的工作则交由Linux内核处理。架构Quagga通过特定于协议的守护进程实现不同的路由协议。守护程序名称与路由协议相同,只是添加字母“d”作为后缀。Zebra是与协议无关的核心守护进程,它为内核提供抽象层,并通过TCP套接字向Quagga客户端提供ZservAPI。每个特定于协议的守护进程负责运行关联的协议并根据交换的信息构建路由表。Quagga架构环境本教程通过Quagga实现的OSPF协议配置动态路由。该环境由两台名为Alpha和Beta的CentOS7.7主机组成。两台主机共享对192.168.122.0/24网络的访问。主机Alpha:IP:192.168.122.100/24网关:192.168.122.1主机Beta:IP:192.168.122.50/24网关:192.168.122.1安装包首先,在两台主机上安装Quagga包。它存在于CentOS基本存储库中:yuminstallquagga-y启用IP转发接下来,在两台主机上启用IP转发,因为它将由Linux内核执行:sysctl-wnet.ipv4.ip_forward=1sysctl-pconfigurenow,切换到/etc/quagga目录并为您的设置创建配置文件。您将需要三个文件:zebra.conf:Quagga守护程序的配置文件,您可以在其中定义接口及其IP地址和IP转发ospfd.conf:协议配置文件,您可以在其中定义将通过OSPFprotocoldaemons:你将指定需要在主机Alpha上运行的相关协议守护进程,[root@alpha]#cat/etc/quagga/zebra.confinterfaceeth0ipaddress192.168.122.100/24ipv6ndsuppress-rainterfaceeth1ipaddress10.12。13.1/24ipv6ndsuppress-rainterfaceloipforwardinglinevty[root@alpha]#cat/etc/quagga/ospfd.confinterfaceeth0interfaceeth1interfacelorouterospfnetwork192.168.122.0/24区域0.0.0.0network10.12.13.0/24区域vty[root@alphaa~]#cat/etc/quagga/daemonszebra=yesospfd=yesOnHostBeta,[root@betaquagga]#catzebra.confinterfaceeth0ipaddress192.168.122.50/24ipv6ndsuppress-rainterfaceeth1ipaddress10.10.10.1/24ipv6ndsuppress-rainterfaceloipforwardinglinevty[root@betaquagga]#catospfd.confinterfaceeth0interfaceeth1interfacelorouterospfnetwork192.168.122.0/24area0.0.0.0network10.10.10.0/24area0.0.0.0@betalinevty~root]#cat/etc/quagga/daemonszebra=yesospfd=yes配置防火墙要使用OSPF协议,必须允许它通过防火墙:firewall-cmd--add-protocol=ospf--permanentfirewall-cmd--reload现在,启动zebra和ospfd守护进程#systemctlstartzebra#systemctlstartospfd使用如下命令查看两台主机上的路由表:[root@alpha~]#iprouteshowdefaultvia192.168.122.1deveth0protostaticmetric10010.10.10.0/24via192.168。122.50deveth0protozebra指标2010.12。13.0/24deveth1protokernelscopelinksrc10.12.13.1192.168.122.0/24deveth0protokernelscopelinksrc192.168.122.100metric100可以看到Alpha上的路由表包含10.10.10.0via192.168.122.1/50.24条路由表项,通过zebra协议获得。同样,在主机Beta上,该表包含通过192.168.122.100到网络10.12.13.0/24的路由条目。[root@beta~]#iprouteshowdefaultvia192.168.122.1deveth0protostaticmetric10010.10.10.0/24deveth1protokernelscopelinksrc10.10.10.110.12.13.0/24via192.168.122.100deveth0protozebrametric208192.16.122.0/24deveth0protokernelscopelinksrc192.168.122.50metric100结论如您所见,环境和配置相对简单。为了增加复杂性,您可以向路由器添加更多网络接口以为更多网络提供路由。您也可以使用相同的方法来实现BGP和RIP协议。