OLSR路由协议模拟环境实验

172 阅读3分钟

在 Linux 上安装和配置 OLSRd

本文档介绍如何在基于 Debian/Ubuntu 的 Linux 系统上安装、配置和测试 OLSRd(Optimized Link State Routing protocol)。


步骤 1:更新系统并安装依赖

# 更新软件包列表
sudo apt update

# 安装编译工具和依赖
sudo apt install -y bison flex build-essential

步骤 2:下载并编译 OLSRd

# 从 GitHub 克隆 OLSRd 仓库
git clone https://github.com/OLSR/olsrd.git

# 进入源码目录
cd olsrd

# 编译 OLSRd
make

# 安装 OLSRd
sudo make install

步骤 3:配置 OLSRd

编辑 OLSRd 配置文件,通常位于 /etc/olsrd/olsrd.conf

sudo vim /etc/olsrd/olsrd.conf

在配置文件中,确保指定正确的网络接口(例如 ens18):

Interface "ens18"
{
    # 可选参数(根据需求调整)
    Ip4Broadcast 255.255.255.255
    HelloInterval 2.0
    TcInterval 5.0
    MidInterval 5.0
    HnaInterval 5.0
}

image.png


步骤 4:运行 OLSRd

前台运行(调试模式,输出详细信息):

sudo olsrd -i ens18 -d 2

后台运行(无输出):

sudo olsrd -i ens18 -d 0 &

步骤 5:验证 OLSRd 运行

查看路由表:

ip route show

或使用:

route -n

如果 OLSRd 正常运行,你应该能看到通过 OLSR 协议学习到的路由条目。

image.png

image.png


步骤 6:防火墙配置

OLSRd 使用 UDP 端口 698 进行通信,确保防火墙允许该端口:

sudo ufw allow 698/udp

步骤 7:测试 OLSR 【同一子网情况下】

假设有三台主机:

  • 172.16.40.54
  • 172.16.40.55
  • 172.16.40.56

实验目的: 172.16.40.56通过172.16.40.55学习到172.16.40.54的路由,用来模拟54设备与56断连情况。

测试步骤:

  1. 172.16.40.56 上临时拒绝来自 172.16.40.54 的流量:
sudo ufw insert 1 deny from 172.16.40.54
  1. 172.16.40.54 上检查是否仍能看到 172.16.40.56 的路由信息(通过 OLSR 邻居状态)。

  2. 恢复规则(测试完成后):

sudo ufw delete deny from 172.16.40.54

image.png

image.png

步骤八:不同子网路由传递

假设有三台主机:

  • 172.16.40.54
  • 172.16.40.55
  • 172.16.40.56

实验目的: 172.16.40.54>>172.16.40.55>>172.16.40.56 172.16.40.55192.168.0.0路由发布给172.16.40.54

image.png

172.16.40.54配置

image.png

172.16.40.55配置

olsrd -f /etc/olsrd/olsrd.conf -d 0

image.png

172.16.40.56配置

image.png

最终效果 跨子网路由传递成功

image.png

image.png

注意事项

  • 确保所有节点的 OLSRd 配置中使用接口名称正确。
  • 如需持久化运行,可考虑使用 systemd 服务管理 OLSRd。
  • 调试时可使用 -d 参数输出日志,生产环境建议使用 -d 0 静默运行。
  • 实现多跳访问时 需要开启ipv4转发功能 【net.ipv4.ip_forward=1】