OLSR Mesh

OLSR, Mesh-мережі та http://www.olsr.org/ (більше не доступний)

Outdated Information!
This article contains information that is outdated or no longer valid. You can edit this page to update it.

OLSR зазнав значних змін з моменту написання цієї статті. Зокрема, з'явилася версія “v2”, що є частиною офіційного стандарту IETF — описана в [https://tools.ietf.org/html/rfc7181], з оновленнями, опублікованими після 2014 року.

Mesh-мережі самостійно організовуються та автоматично налаштовуються відповідно до змін у топології мережі. Наприклад, правильно налаштована OLSR mesh автоматично адаптується в разі відмови вузла, появи нового маршруту або зміни доступності менш завантажених маршрутів. Концепція mesh-мереж не є новою — сам Інтернет є величезною mesh-мережею. Що нового? Mesh-мережі з бездротовими технологіями на OpenWrt — це справді круто! ;)

OLSR — один із протоколів маршрутизації, який можна використовувати для створення мобільних adhoc-мереж (MANET) або, загальніше, бездротових mesh-мереж. Код OLSR, розроблений Андреасом Тоннесеном (Andreas Tønnesen) — найкраще підходить для OpenWrt, оскільки для нього створено відповідні пакунки.

Ця сторінка wiki містить інформацію про те, як вручну створити mesh-мережу на основі OLSR, налаштовуючи OpenWrt та демон olsrd. Якщо ваша мета — якнайшвидше запустити OLSR-мережу, можливо, варто розглянути прошивки, спеціально створені для цього, наприклад проєкт Freifunk. Якщо ж ви налаштовані запускати OLSR на OpenWrt без сторонніх збірок — читайте далі!

olsrd 0.6.1-3
Назва Розмір Опис
olsrd 108257 демон маршрутизації OLSR (Optimized Link State Routing)
olsrd-mod-dyn-gw-plain 2902 Простий плагін динамічного шлюзу в Інтернет
olsrd-mod-bmf 12106 Плагін базової передачі multicast, залежить від kmod-tun
olsrd-mod-httpinfo 23831 Невеликий вбудований веб-сервер для перегляду інформації
olsrd-mod-quagga 5848 Плагін інтеграції з Quagga
olsrd-mod-dyn-gw 4348 Плагін динамічного інтернет-шлюзу
olsrd-mod-txtinfo 6201 Простий текстовий інформаційний плагін
olsrd-mod-nameservice 11511 Легкий DNS-резолвер плагін
olsrd-mod-dot-draw 4233 Плагін для візуалізації топології у форматі Dot
olsrd-mod-mdns 5648 Плагін Multicast DNS
olsrd-mod-watchdog 2316 Плагін Watchdog
olsrd-mod-arprefresh 2703 Плагін оновлення ARP-кешу ядра
olsrd-mod-p2pd 8066 Плагін Peer-to-Peer Discovery
olsrd-mod-secure 9710 Плагін підпису повідомлень для безпеки домену маршрутизації

Mesh-мережі можуть бути налаштовані безліччю способів. Нижче представлено простий приклад, який демонструє маршрутизацію між підмережами в діапазоні 10.0.0.0/255.0.0.0 через OLSR:

      WAN                                                 WAN
       |                                                   |
OpenWrt + OLSR Вузол 1 ---- бездротове з’єднання ---- OpenWrt + OLSR Вузол 2
       |                                                   |
      LAN                                                 LAN
       |                                                   |
  Робоча станція A                                 Робоча станція B

Обидва вузли (у прикладі використовується WRT54GL) мають мати встановлений OLSR. Загалом, OLSR потрібно встановлювати на всіх вузлах, що беруть участь у маршрутизації між підмережами з підтримкою OLSR. OLSR потрібно налаштувати на прослуховування всіх Wi-Fi інтерфейсів на цих маршрутизаторах. Запуск на дротових інтерфейсах зазвичай не потрібен і, згідно з деякими джерелами, може конфліктувати з іншими службами, такими як DHCP.

Якщо дротові інтерфейси маршрутизатора належать до іншої підмережі, ніж бездротові, можна налаштувати OLSR для розповсюдження повідомлень HNA (host and network association) до інших маршрутизаторів. Залежно від того, чи ви використовуєте IPv4 або IPv6, у вашому файлі конфігурації /?/olsrd.conf мають бути директиви Hna4 або Hna6.

Outdated Information!
This article contains information that is outdated or no longer valid. You can edit this page to update it.

  1. Розділіть бездротовий інтерфейс і інтерфейс LAN у файлі /etc/config/network, оскільки за замовчуванням вони об’єднані в міст (bridge).
  2. Налаштуйте бездротові інтерфейси (WNIC) для роботи в режимі adhoc. Ваш файл /etc/config/wireless може виглядати так:
config wifi-device  wl0
        option type     broadcom
        option channel  11
        # вимкніть радіо, щоб уникнути відкритої точки доступу після прошивки:
        option disabled 0

config wifi-iface
        option device   wl0
        # option network        lan
        option mode     adhoc
        option ssid     OLSR
        option hidden   0
        option encryption none
  1. Встановіть olsrd:
opkg update
opkg install olsrd
  1. Відредагуйте файл /etc/olsrd.conf і замініть “Interface” на назву бездротового інтерфейсу маршрутизатора. Приклад:
# olsr.org OLSR daemon config file
# /etc/olsrd.conf
#
# Приклад змінено для демонстрації роботи мережі OLSR

DebugLevel  0
IpVersion 4
ClearScreen     yes

# На другому вузлі OLSR (olsrd.conf не надається, оскільки відрізняється лише одним рядком),
# який має LAN-інтерфейс у мережі 10.100.2.0/255.255.255.0, запис Hna4 виглядатиме так:
# 10.100.2.0 255.255.255.0 — ці записи повідомляють іншим вузлам як маршрутизувати трафік через mesh.

Hna4
{
  # Моя домашня мережа
  10.100.1.0  255.255.255.0
}

AllowNoInt  yes
UseHysteresis yes

# Параметри гістерезису
HystScaling 0.50
HystThrHigh 0.80
HystThrLow  0.30

LinkQualityLevel  0
Pollrate  0.05
NicChgsPollInt  3.0

Interface "wl0"
{
    AutoDetectChanges            yes
}

# Запуск вбудованого HTTP-сервера для перегляду інформації про mesh.
# Працює лише за наявності встановленого плагіна olsrd_httpinfo

LoadPlugin "olsrd_httpinfo.so.0.1"
{
  PlParam   "port"  "1979"
  PlParam   "Net" "0.0.0.0 0.0.0.0"
}
  1. Налаштуйте firewall для дозволу пересилання трафіку між інтерфейсами. Приклад скрипта:
#!/bin/sh
 
# Авторські права (C) 2006 OpenWrt.org
 
iptables -F input_rule
iptables -F output_rule
iptables -F forwarding_rule
iptables -t nat -F prerouting_rule
iptables -t nat -F postrouting_rule
 
# Правила для трафіку, що спрямований на IP WAN-інтерфейсу
iptables -F input_wan
iptables -F forwarding_wan
iptables -t nat -F prerouting_wan
 
# Вказати інтерфейс Wi-Fi вручну (можна автоматизувати)
WIFI=wl0
 
# Дозволити SSH-з’єднання
iptables -A input_wan -p tcp --dport 22 -j ACCEPT
 
# Дозволити підключення до інформаційного порту OLSR
iptables -A input_wan -p tcp --dport 1979 -j ACCEPT
 
# OLSR використовує порт 698 для передачі повідомлень про стан мережі
iptables -A input_rule -p udp --dport 698 -j ACCEPT
 
# Дозвіл на пересилання між інтерфейсами
iptables -A forwarding_rule -i $WAN -o $WIFI -j ACCEPT
iptables -A forwarding_rule -i $WIFI -o $WAN -j ACCEPT
 
# Дозвіл для пересилання між LAN і WIFI
iptables -A forwarding_rule -i $LAN -o $WIFI -j ACCEPT
iptables -A forwarding_rule -i $WIFI -o $WIFI -j ACCEPT
iptables -A forwarding_rule -i $LAN -o $LAN -j ACCEPT
iptables -A forwarding_rule -i $WIFI -o $LAN -j ACCEPT
  1. Запустіть OLSR та увімкніть автозапуск:
/etc/init.d/olsrd start
/etc/init.d/olsrd enable

Перезавантажте маршрутизатор і перевірте з’єднання, намагаючись “пропінгувати” інтерфейси інших пристроїв. Сядьте, розслабтеся та насолодіться напоєм за власним вибором на честь вдалого налаштування!

Варто звернути увагу на деякі плагіни, які легко налаштовуються та показують базову інформацію про стан вашої mesh-мережі. У моїй мережі я використовую olsrd-mod-httpinfo, який надає простий веб-сервер для перегляду статусу mesh.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/06/07 09:45
  • by vazaz