Ссылки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
https://openwrt.org/docs/guide-user/network/wifi/mesh/batman https://openwrt.org/docs/guide-user/installation/openwrt_x86 https://openwrt.org/docs/guide-user/base-system/basic-networking https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem https://openwrt.org/ru/doc/howto/build#%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8F https://downloads.openwrt.org/ https://chef.libremesh.org/ http://downloads.libremesh.org/ https://libremesh.org/ https://libremesh.org/development.html https://github.com/binnes/WiFiMeshRaspberryPi/blob/master/part1/ROUTE.md https://librecmc.org/ https://librerouter.org/ https://librerouter.org/libre-design https://github.com/open-mesh-mirror/batctl https://trex-tgn.cisco.com/ https://www.open-mesh.org/doc/batman-adv/Tweaking.html https://openwrt.su/sborka/maskirovka-svoej-sborki-openwrt-pod-ofitsialnyj-repozitarij https://4pda.to/forum/index.php?showtopic=911457&st=1180#entry83632397 https://openwrt.org/docs/guide-user/network/wifi/mesh/batman |
openwrt сборка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
0. Устанавливаем пакеты для сборки: apt install build-essential git gcc make bc fakeroot dpkg-dev libncurses5-dev libssl-dev 1. Скачиваем openwrt git clone https://git.openwrt.org/openwrt/openwrt.git cd openwrt git pull 2. Выбираем бранч git branch -a git tag git checkout v21.02.2 3. Обновляем бранч ./scripts/feeds update -a ./scripts/feeds install -a 4 Приступаем к сборке !!! make defconfig будет произведено основное конфигурирование системы сборки, включая проверку зависимостей и условий для окружения сборки и т.п. !!! будет проводится проверка для зависимостей. Установите отсутствующие компоненты и запустите снова. !!! выберите вашу платформу перед использованием defconfig настраиваем платформу (Target System, Subtarget, Target Profile) и сохраняем конфигурацию в файл .config: make menuconfig 5. применяем стандартные параметры для профиля: make defconfig 6. модифицируем набор пакетов и сохраняем конфигурацию (в файл .config): make menuconfig 7. Сохраняем свои изменения конфигурации в файл mydiffconfig на будущее: scripts/diffconfig.sh >mydiffconfig 8. Выполняем make либо make V=w либо make V=s: # make -j $(nproc) defconfig download clean world # make -j $(nproc) kernel_menuconfig # make -j $(nproc) make -j4 V=s |
Установка на VM x86-x64
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
0. К виртуальной машине подключаем два диска, второй диск будем использовать как хранилище, туда мы загрузим прошивку. Для того что бы не запутается в дисках, создаем диски разного размера 10Гб и 20Гб 1. Загружаемся с LiveCD (например https://www.system-rescue.org/) 2. монтируем второй диск и загружаем на него прошивку (https://downloads.openwrt.org/) https://downloads.openwrt.org/releases/21.02.2/targets/x86/64/openwrt-21.02.2-x86-64-generic-ext4-combined-efi.img.gz 3. Переходим в каталог куда мы загрузили прошивку и распаковываем gunzip openwrt-*.img.gz 4. Определяем диск куда будем заливать прошивку lsblk fdisk -l 5. Заливаем прошивку dd if=openwrt-21.02.0-x86-64-generic-ext4-combined.img bs=1M of=/dev/sdX |
openwrt
1 2 3 4 5 6 7 8 9 10 |
opkg update opkg install mc opkg install luci opkg install luci-i18n-base-ru opkg install tcpdump opkg install pciutils opkg install lsblk opkg install speedtest-netperf opkg install netperf opkg install ip-full |
batman bmx7:
1 2 3 |
opkg install bmx7 bmx7-uci-config opkg install kmod-batman-adv opkg install batctl |
uci изменить имя хоста:
1 2 3 |
uci set system.@system[0].hostname=newhostname uci commit system echo newhostname > /proc/sys/kernel/hostname |
uci настройки сети:
1 2 3 4 5 6 7 |
uci show network - показать настройки сети uci show wireless - показать настройки wifi uci set network.lan.ipaddr='10.0.0.2' - задать ip адрес "10.0.0.2" для интерфейса lan uci set network.lan.netmask='255.255.255.0' - задать маску "255.255.255.0" для интерфейса lan uci commit network service network restart |
uci пример сетевых параметров:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
network.loopback=interface network.loopback.ifname='lo' network.loopback.proto='static' network.loopback.ipaddr='127.0.0.1' network.loopback.netmask='255.0.0.0' network.globals=globals network.globals.ula_prefix='fd27:70fa:5c1d::/48' network.lan=interface network.lan.type='bridge' network.lan.ifname='eth0.1' network.lan.proto='static' network.lan.netmask='255.255.255.0' network.lan.ip6assign='60' network.lan.ipaddr='192.168.1.1' network.wan=interface network.wan.ifname='eth0.2' network.wan.proto='dhcp' network.wan6=interface network.wan6.ifname='eth0.2' network.wan6.proto='dhcpv6' network.@switch[0]=switch network.@switch[0].name='switch0' network.@switch[0].reset='1' network.@switch[0].enable_vlan='1' network.@switch_vlan[0]=switch_vlan network.@switch_vlan[0].device='switch0' network.@switch_vlan[0].vlan='1' network.@switch_vlan[0].ports='1 2 3 4 5t' network.@switch_vlan[1]=switch_vlan network.@switch_vlan[1].device='switch0' network.@switch_vlan[1].vlan='2' network.@switch_vlan[1].ports='0 5t' |
Русификация:
1 2 3 |
В поиске набираем base-ru opkg install luci-i18n-base-ru opkg install luci-i18n-firewall-ru |
batctl
1 2 3 4 5 6 7 8 9 10 11 12 |
Показать добавленные интерфейсы в bat0: batctl if Создать bat0 и добавить интерфейс enp1s0 в bat0: batctl if add enp1s0 Показать MAC интерфейса bat0: batctl n batctl originators Проверить доступность MAC_ADDRESS: batctl traceroute MAC_ADDRESS |
batmand
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
batmand -b -c -d 1 - подключится к запущенному bat0 и показать информацию Убить batmand: killall batmand pkill batmand systemctl stop batmand.service Тестирование работы: batmand -b -c -d 1 -b запуск соединения в пакетном режиме По умолчанию отладочная информация обновляется через определенный промежуток времени, поэтому, если вы используете "-b", она будет выполняться один раз, а затем остановится. В данном случае это означает однократный запуск debug level 1. Обратите внимание, что-b можно использовать только с-c и уровнями отладки 1 и 2. Примеры запуска batmand: batmand -o 500 -r 3 -d 3 -p 192.168.1.1 eth1 -o интервал инициатора в мс Узел передает широковещательные сообщения (мы называем их originator message или OGM), чтобы сообщить соседним узлам о своем существовании. Интервал инициатора-это время ожидания после отправки одного сообщения и перед отправкой следующего. Значение по умолчанию-1000 мс (1 секунда). В мобильной сети может потребоваться очень быстрое обнаружение сетевых изменений, поэтому вам нужно отправлять сообщения очень часто, например, использовать значение 500 мс. В статической сети вы можете сэкономить пропускную способность, используя более высокое значение. Эта опция доступна только в режиме демона. -r класс маршрутизации Класс маршрутизации может быть установлен в четыре значения - он включает "модус поиска в Интернете". Демон выберет интернет-шлюз на основе определенных критериев (если не указано "- p").: 0 - установить no default route (по умолчанию) 1 - используйте быстрое соединение 2 - используйте стабильное соединение 3 - используйте быстрое коммутационное соединение XX - используйте соединение с поздним переключением Уровень 1 B. A. T. M. A. N пытается найти наилучшее доступное соединение, наблюдая за пропускной способностью восходящих линий и качеством связи. Уровень 2 B. A. T. M. A. N сравнивает качество связи интернет-узла и выбирает тот, который имеет лучшее соединение. Уровень 3 B. A. T. M. A. N сравнивает качество связи интернет-узла и выбирает тот, у которого лучшее соединение, но переключается на другой шлюз, как только найдено лучшее соединение. Уровень XX B. A. T. M. A. N сравнивает качество связи интернет-узла и выбирает узел с лучшим качеством связи, но переключается на другой шлюз, как только этот шлюз имеет значение TQ, которое на xx лучше, чем выбранный в данный момент шлюз. XX это число от 3 до 256 -d уровень отладки Уровень отладки может быть установлен в пять значений. 0 - отладка выключена (по умолчанию) 1 - список соседей 2 - список шлюзов 3 - наблюдайте за батмандом 4 - наблюдайте за батмандом (очень многословным). 5 - отладка памяти / использование процессора -p предпочтительный шлюз Установите интернет-шлюз самостоятельно. Если предпочтительный шлюз не найден, выбор шлюза будет использовать текущий класс маршрутизации для выбора шлюза. -g класс шлюза Класс шлюза используется для указания другим узлам сети доступной пропускной способности Интернета. Просто введите любое число (необязательно с последующим "kbit" или "mbit"), и демон угадает ваш соответствующий класс шлюза. Используйте"/", чтобы разделить скорость спуска и загрузки. Вы можете опустить скорость загрузки, и batmand возьмет на себя загрузку. 5000 5000кбит 5мбит 5 мбит/1024 5mbit/1024kbit 5 мбит/1 мбит -s сервер визуализации Поскольку база данных топологии не вычисляется протоколом, было реализовано дополнительное решение для создания графов топологии, демоны vis server. B. A. T. M. A. N. могут отправлять свое локальное представление о своих односкачковых соседях на сервер vis. Он собирает информацию и предоставляет данные в формате, аналогичном выходу топологической информации OLSR. Поэтому существующие решения для построения топологических графиков, разработанные для OLSR, могут быть использованы для визуализации сетчатых облаков с использованием B. A. T. M. A. N. --policy-routing-scriptотключает функцию маршрутизации политики batmand - все изменения маршрутизации отправляются сценарию Этот параметр отключает функцию маршрутизации политики batmand - все изменения маршрутизации отправляются сценарию, который может использовать эту информацию или нет. Разработчики микропрограммного обеспечения и пакетов могут использовать эту опцию для тесной интеграции batmand в свои собственные политики маршрутизации. Эта опция доступна только в режиме демона. |
Kernel enable
1 2 |
CONFIG_IP_ADVANCED_ROUTER CONFIG_IP_MULTIPLE_TABLES |
debian /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp5s0 iface enp5s0 inet dhcp auto enp1s0 iface enp1s0 inet static address 10.50.50.50/24 post-up batctl if add enp1s0 post-up batctl if add enp5s0 auto bat0 iface bat0 inet static address 172.25.0.3/24 |
openwrt /etc/config/batmand
1 2 3 |
config batmand general option interface 'eth1 eth4' option routing_class '3' |
openwrt /etc/config/network
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd8a:d1c1:22a8::/48' config device option name 'br-lan' option type 'bridge' list ports 'eth0' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.1.1' option netmask '255.255.255.0' option ip6assign '60' config interface 'eth5' option device 'eth5' option proto 'static' option ipaddr '192.168.200.1' option netmask '255.255.255.0' config interface 'eth4' option device 'eth4' option proto 'static' option ipaddr '10.150.150.20' option netmask '255.255.255.0' config interface 'wan' option device 'eth1' option proto 'dhcp' config interface 'wan6' option device 'eth1' option proto 'dhcpv6' config interface 'eth6' option proto 'static' option netmask '255.255.255.0' option ipaddr '10.0.7.1' option device 'eth6' config interface 'bat0' option proto 'batadv' option routing_algo 'BATMAN_IV' option aggregated_ogms '1' option ap_isolation '0' option bonding '0' option fragmentation '1' option gw_mode 'off' #option gw_mode 'server' #option gw_mode 'client' #gw_bandwidth '10000/2000' # speed server #gw_sel_class '5000' # speed client option log_level '0' option orig_interval '1000' option bridge_loop_avoidance '1' option distributed_arp_table '1' option multicast_mode '1' option multicast_fanout '16' option network_coding '0' option hop_penalty '30' option isolation_mark '0x00000000/0x00000000' config interface 'bat0_hardif_mesh0' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' config interface 'bat0_hardif_eth0' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' # TQ / penalty / fix 5 hop option device 'eth0' config interface 'bat0_hardif_eth1' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth1' config interface 'bat0_hardif_eth2' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth2' config interface 'bat0_hardif_eth3' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth3' config interface 'bat0_hardif_eth4' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth4' config interface 'bat0_hardif_eth5' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth5' config interface 'bat0_hardif_eth6' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth6' config interface 'bat0_hardif_eth7' option proto 'batadv_hardif' option master 'bat0' option mtu '1536' option hop_penalty '15' option throughput_override '100mbit' option device 'eth7' |
systemd \ systemctl enable batmand \ error
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Добавить в файл строки"/lib/systemd/system/batmand.service": ----------------------------------------------------------- [Install] WantedBy=multi-user.target ----------------------------------------------------------- Пример /lib/systemd/system/batmand.service: ------------------------------------------ [Unit] Description=Layer3 multi-hop ad-hoc mesh daemon After=network.target [Service] EnvironmentFile=/etc/default/batmand ExecStart=/usr/sbin/batmand --no-detach $DAEMON_OPTS [Install] WantedBy=multi-user.target ----------------------------------------- Запускаем: systemd enable batmand systemct start batmand |
openwrt upgrade all package:
1 2 |
opkg update opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade |
batctl traceroute script:
1 |
for i in ` arp | awk '{print $4}' | grep -v type | tr '\n' ' '` ; do batctl tr $i ; done |
openwrt upgrade
1 2 3 |
cd /tmp wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/x86/64/openwrt-22.03.0-rc1-x86-64-generic-ext4-combined.img.gz sysupgrade openwrt-22.03.0-rc1-x86-64-generic-ext4-combined.img.gz |