一、实验目标
通过开源路由软件 Quagga 实现 OSPF 动态路由协议,并在多台服务器上配置共享虚拟 IP(VIP),使网络设备上存在多条等值路由,从而实现多个服务器使用单个 VIP 同时为客户端提供服务。
二、实验环境准备
✅ 创建三台虚拟机:
| 虚拟机名称 | 角色说明 |
|---|---|
Server1 | 模拟路由器 |
Server2 | 真实业务服务器 |
Server3 | 真实业务服务器 |
所有服务器均使用 CentOS 7.9 操作系统,并且网络管理工具为
network。
三、IP地址规划
| 设备/接口 | IP地址 | 子网掩码 | 说明 |
|---|---|---|---|
| Server1 ens33 | 192.168.1.10 | 255.255.255.0 | - |
| Server2 ens33 | 192.168.1.20 | 255.255.255.0 | - |
| Server3 ens33 | 192.168.1.30 | 255.255.255.0 | - |
| Server2 lo | 192.168.20.20/32 | 255.255.255.255 | Loopback 接口,作为 VIP |
| Server3 lo | 192.168.20.20/32 | 255.255.255.255 | Loopback 接口,作为 VIP |
四、ens33接口配置(Server1 / Server2 / Server3)
1. Server1上IP配置示例:
对于每台服务器,编辑网络接口配置文件以设置静态IP。假设默认的网络接口名称为ens33。
对于
Server2和Server3,只需分别将IPADDR修改为192.168.1.20和192.168.1.30,其余配置保持一致。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.10 # `更改为对应的IP地址`
NETMASK=255.255.255.0
GATEWAY=192.168.1.2 # `更改为对应的网关`
DNS1=114.114.114.114
DNS2=223.5.5.5
保存并退出编辑器 (按 Esc 键, 输入 :wq)
# 重启网络服务
systemctl restart network
五、修改主机名(Server1 / Server2 / Server3)
请根据当前服务器角色设置对应的主机名。以下命令需在三台服务器上分别执行:
-
Server1 执行:
sudo hostnamectl set-hostname server1 -
Server2 执行:
sudo hostnamectl set-hostname server2 -
Server3 执行:
sudo hostnamectl set-hostname server3
提示:更改主机名后,建议同时更新 /etc/hosts 文件以包含本机的主机名解析,例如:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10 server1
192.168.1.20 server2
192.168.1.30 server3
六、安装 Quagga 和 Telnet 工具 (Server1 / Server2 / Server3)
-
在所有三台服务器上执行以下命令:
# 安装 Quagga 路由软件
yum install -y quagga.x86_64
# 安装 Telnet 工具(用于管理 Quagga)
yum install -y telnet.x86_64
七、初始化 Quagga 配置 (server1 / server2 / server3配置相同)
1. server1上的示例:
vim /etc/quagga/zebra.conf
-
根据实际主机名(如
server1、server2、server3)添加如下内容:#替换为对应的主机名 hostname server1 password zebra123 enable password zebra123 -
保存 (按 Esc 键, 输入 :wq)退出后,修改权限:
chown quagga:quagga /etc/quagga/zebra.conf -
初始化 OSPF 配置文件
cd /etc/quagga touch ospfd.conf chown quagga:quagga ospfd.conf -
启动并启用服务:
systemctl start zebra.service systemctl enable zebra.service systemctl status zebra.service systemctl start ospfd.service systemctl enable ospfd.service systemctl status ospfd.service
八、配置动态路由(OSPF)
🔹 仅在Server1上执行以下命令:
# 登录到 Server1,执行:
vtysh
输入以下命令,下图仅为参考:
configure terminal
router ospf
network 192.168.1.0/24 area 0
end
write memory
exit
🔹 仅在Server2上执行以下命令:
# 登录到 Server2,执行:
vtysh
输入以下命令,下图仅为参考:
configure terminal
interface lo
ip address 192.168.20.20/32
exit
router ospf
network 192.168.1.0/24 area 0
network 192.168.20.20/32 area 0
end
write memory
exit
🔹 仅在Server3上执行以下命令:
# 登录到 Server3,执行:
vtysh
输入以下命令:
configure terminal
interface lo
ip address 192.168.20.20/32
exit
router ospf
network 192.168.1.0/24 area 0
network 192.168.20.20/32 area 0
end
write memory
exit
九、运行状态检查
登录到任意一台服务器(如 Server1),执行:
vtysh
输入以下命令进行验证:
show ip route
show ip ospf neighbor
show ip ospf database
show ip ospf database router 192.168.20.20
exit