Рубрики
openwrt

openwrt sdk

Ссылки:

https://downloads.openwrt.org/releases/  - тут ищем sdk 
https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem - тут смотрим какие пакеты нужно установить для сборки
https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk - инструкция по использованию sdk

Ставим необходимые пакеты debian/ubuntu:

sudo apt install build-essential clang flex bison g++ gawk gcc-multilib g++-multilib 
gettext git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev 
file wget

openwrt git сборка

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

Пример сборки sdk для ls1046afrwy:

!!! ЛУЧШЕ ИСПОЛЬЗОВАТЬ СБОРКУ OPENWRT GIT
0. Скачиваем/распаковываем sdk
cd /opt
wget https://downloads.openwrt.org/releases/22.03.3/targets/layerscape/armv8_64b/openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64.tar.xz
tar -xfv openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64.tar.xz

1. Обновляем и устанавливаем feeds:
cd openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64
./scripts/feeds update -a
./scripts/feeds install -a 


2. Производим первоначальную настройку  выбираем нужные пакеты
make defconfig
make menuconfig


3. Производим сборку
make -j4 V=s

Рубрики
openwrt

openwrt / upgrade all package / update / upgrade / обновление


opkg update
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

Рубрики
openwrt

openwrt / imagebuilder

Ссылка:

Image Builder:
Это предварительно скомпилированная среда, используемая для создания пользовательских образов прошивок без необходимости компиляции ядра и пакетов.

https://openwrt.org/docs/guide-user/additional-software/imagebuilder
https://openwrt.org/ru/docs/guide-user/additional-software/imagebuilder

https://openwrt.org/toh/start - поиск устройства

https://downloads.openwrt.org/releases/ - релиз

Готовим систему:

Debian/Ubuntu
sudo apt-get update
sudo apt-get install build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python

CentOS/RHEL
yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt wget
yum group install "Development Tools"

Fedora 27+
dnf install @c-development @development-tools @development-libs zlib-static which

Готовим образ openwrt:

0. Скачиваем openwrt-imagebuilder под наше устройство:
cd /opt
wget https://downloads.openwrt.org/releases/21.02.3/targets/ipq40xx/mikrotik/openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64.tar.xz
1. Распакуйте архив с Image Builder и перейдите в его директорию.
tar -pxf openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64.tar.xz
cd openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64

Настраиваем образ openwrt:

!!! make image команда создаст образ для устройства по умолчанию со стандартными (необходимыми) пакетами. 
!!! PROFILE - определяет целевой профиль для сборки
!!! PACKAGES - список пакетов, добавляемых (исключаемых) в образ
!!! FILES - каталог с пользовательскими файлами для добавления
!!! BIN_DIR - Пользовательская директория для создаваемого образа
!!! EXTRA_IMAGE_NAME - Пользовательское имя для создаваемого образа
!!! DISABLED_SERVICES - Какие службы в /etc/init.d/ будут отключены по умолчанию
!!! make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/
!!! make clean - Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой:

0.  Смотрим список целевых профилей.
make info

1. если требуется перенастроить файлы то создаем директорию files
!!! В этот каталог добавляем свои файлы
!!! По умолчанию фалы будут помещены в корень на целевой системе
!!! Требуется создавать структуру каталогов.
mkdir files
mkdir files/etc

2. Определившись с профилем, пакетами, файлами, выполняем сборку
!!! (-) - минус перед пакетом предполагает его удаление в конечной сборке
make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/

Где же файлы:

После завершения команды make сгенерированные образы сохраняются в каталоге bin /device-architecture , как если бы вы их компилировали.
Созданный образ можно найти в подкаталоге ./bin/targets//genericили загляните внутрь. 
/build_dir/для файлов *-squashfs-sysupgrade.bin и *-squashfs-factory.bin
(например /build_dir/target-mips_24kc_musl/linux-ar71xx_tiny/tmp/openwrt-18.06.2-ar71xx-tiny-tl-wr740n-v6-squashfs-factory.bin)

Пример:

make info
make image PROFILE=fsl_ls1046a-frwy-sdboot PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk -layerscape-fman -tfa-ls1046a-frwy-sdboot"

Рубрики
openwrt

openwrt / ansible

scripts bash

cat  hosts.txt.ssh
------------------
192.168.1.1
192.168.1.2
192.168.1.3
------------------

cat resolv.conf
----------------
nameserver 192.168.1.1
----------------

#Копируем настройки  DNS
#scp resolv.conf
for i in `cat hosts.txt.ssh`; do scp resolv.conf ${i}:/etc/resolv.conf; done

#Устанавливаем python for ansible
for i in `cat hosts.txt.ssh`; do ssh $i opkg update ; done
for i in `cat hosts.txt.ssh`; do ssh $i opkg install python3-light python3-multiprocessing python3-distutils openssh-sftp-server python3-logging; done


#Ставим snmpd
for i in `cat hosts.txt.ssh`; do ssh $i opkg install  snmpd; done


#MAC
# parse MAC
for i in `cat hosts.txt | tail -n 39 | grep -v "#"`; do ssh $i ip a | grep ether | awk '{print $2}' && echo ; done
# parse MAC print host
for i in `cat hosts.txt | tail -n 39 | grep -v "#"`; do ssh $i uci get  system.@system[0].hostname && ip a | grep ether | awk '{print $2}' && echo ; done
##parse mac
for i in `cat hosts.txt | tail -n 39 | grep -v "#"`; do ssh $i fdddd="`uci get  system.@system[0].hostname`" && echo $fdddd  && ip a | grep ether | awk '{print $2}' && echo ; done
# parse mod 
# awk '{cmd="YOUCOMMAND" $1; system(cmd)}'
# cmd="uci get  system.@system[0].hostname"
#for i in `cat hosts.txt | tail -n 39 | grep -v "#"`; do ssh $i  ip a | grep ether | awk '{cmd="uci get  system.@system[0].hostname" print $2; system(cmd)}' && echo ; done


#scp file batman
for i in `cat hosts.txt | tail -n 39 | grep -v "#"`; do scp bat-hosts root@$i:/etc/bat-hosts; done


# generation ip 
for i in `seq 1 36`; do echo 192.168.1.${i} ; done 

Настройка сетевого имени openwrt:

# change hostname openwrt #
uci set system.@system[0].hostname=openwrt-20
uci commit system
echo newhostname > /proc/sys/kernel/hostname
reboot


Openwrt /etc/config/snmpd

config agent
        option agentaddress 'UDP:161,UDP6:161'

config agentx
        option agentxsocket '/var/run/agentx.sock'

config com2sec 'public'
        option secname 'ro'
        option source 'default'
        option community 'vasian'

config com2sec 'private'
        option secname 'rw'
        option source 'localhost'
        option community 'private'

config com2sec6 'public6'
        option secname 'ro'
        option source 'default'
        option community 'public'

config com2sec6 'private6'
        option secname 'rw'
        option source 'localhost'
        option community 'private'

config group 'public_v1'
        option group 'public'
        option version 'v1'
        option secname 'ro'

config group 'public_v2c'
        option group 'public'
        option version 'v2c'
        option secname 'ro'

config group 'public_usm'
        option group 'public'
        option version 'usm'
        option secname 'ro'

config group 'private_v1'
        option group 'private'
        option version 'v1'
        option secname 'rw'

config group 'private_v2c'
        option group 'private'
        option version 'v2c'
        option secname 'rw'

config group 'private_usm'
        option group 'private'
        option version 'usm'
        option secname 'rw'

config view 'all'
        option viewname 'all'
        option type 'included'
        option oid '.1'

config access 'public_access'
        option group 'public'
        option context 'none'
        option version 'any'
        option level 'noauth'
        option prefix 'exact'
        option read 'all'
        option write 'none'
        option notify 'none'

config access 'private_access'
        option group 'private'
        option context 'none'
        option version 'any'
        option level 'noauth'
        option prefix 'exact'
        option read 'all'
        option write 'all'
        option notify 'all'

config system
        option sysLocation 'office'
        option sysContact 'bofh@example.com'

config exec
        option name 'filedescriptors'
        option prog '/bin/cat'
        option args '/proc/sys/fs/file-nr'

config engineid
        option engineidtype '3'
        option engineidnic 'eth0'

config snmpd 'general'
        option enabled '1'

Debian /etc/snmp/snmpd.conf

sysServices    72
master  agentx
agentaddress  udp:161
view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1
rocommunity  vasian 192.168.0.0/16
createUser snmpreadonly SHA "SecUREDpass" AES "StRongPASS"
rouser snmpreadonly

_test_ansible.yml

---
- name: My TEST Playbook
  hosts: all
    #  become: yes
  
  tasks:
  - name: Ping test
    ping:    
...

copy-file-bat-hosts-to-server.yaml

---
- hosts: all
  #become: yes
  #gather_facts: false
  vars:
       destin_file_cli: /etc/bat-hosts
       source_file_cli: ./bat-hosts
 
  tasks:
  - name: Copy file bat-hosts to Servers
    copy: src={{ source_file_cli }} dest={{ destin_file_cli }} mode=0664 owner=root group=root backup=yes 
...

copy-file-snmpd-to-server.yaml

---
- hosts: all
  #  become: yes
  gather_facts: false
  vars:
       destin_file: /etc/config/snmpd
       source_file: ./snmpd.txt
 
  tasks:
  - name: Copy file snmpd to Servers
    copy: src={{ source_file }} dest={{ destin_file }} mode=0664 owner=root group=root backup=yes 
  
  - name: restart snmpd
    shell: /etc/init.d/snmpd restart
...

rm-copy-file-resolv-to-server.yaml

---
- hosts: all
  #  become: yes
  gather_facts: false
  vars:
       destin_file: /etc/resolv.conf
       source_file: ./resolv.conf
 
  tasks:
  - name: remove file resolv.conf
    file: 
      path: /etc/resolv.conf
      state: absent

  - name: Copy file resolv.conf  to Servers
    copy: src={{ source_file }} dest={{ destin_file }} mode=0664 owner=root group=root backup=yes 

...



Рубрики
openwrt

openwrt / mikrotik / прошивка / 60Ghz / ad / firmware / wi-fi / iw / wpa_supplicant / hostapd / ifconfig

Ссылки:

https://openwrt.org/toh/mikrotik/common
https://openwrt.org/toh/mikrotik/common#saving_mikrotik_routerboard_license_key_using_winbox_and_windows
https://openwrt.org/toh/mikrotik/common#saving_mikrotik_routerboard_license_key_without_using_winbox

https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/
https://downloads.openwrt.org/releases/22.03.0-rc3/targets/ipq40xx/mikrotik/
https://openwrt.org/ru/toh/mikrotik/common
https://wiki.archlinux.org/title/Preboot_Execution_Environment_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
https://github.com/klukonin/Mikrotik-researcher-tools

https://habr.com/ru/post/315960/


https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#%D0%A0%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC_%D1%81_%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D0%B0%D0%BC%D0%B8_%D0%B8_%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0%D0%BC%D0%B8

https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

https://wiki.archlinux.org/title/Wpa_supplicant

https://wiki.archlinux.org/title/Network_configuration_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)/Wireless_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

http://linux-wless.passys.nl/

https://wireless.wiki.kernel.org/en/users/drivers

https://en.wikipedia.org/wiki/Wi-Fi

https://wiki.mikrotik.com/wiki/Manual:Interface/Wireless

Сохранение файла с лицензией MikroTik RouterOS

0. Подключаемся на микротик и выполняем в терминале:
/system license output
/file print
1. Любым доступным способом забираем файл лицензии с микротика

mikrotik подготовка

0. Подключаемся к микротику и открываем его терминал
1. Выполняем следующие
/system routerboard settings set boot-device=try-ethernet-once-then-nand
2. Выключаем микротик
/system shutdown

dnsmasq подготовка DHCP+TFTP

0. Устанавливаем dnsmasq и останавливаем его демон
apt install dnsmasq
systemctl stop dnsmasq && systemctl disable dnsmasq

2. скачиваем прошивки
!!! initramfs нужна для загрузки по tftp (эта прошивка загружается в оперативную память и ничего не ломает)
!!! sysupgrade установка прошивки (заменяет прошивку микротика)
cd /srv/tftp
wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin
wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-squashfs-sysupgrade.bin

3. Запускаем tftp
dnsmasq -i enp0s20f0u2 --dhcp-range=192.168.88.64,192.168.88.128 --dhcp-boot=openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-initramfs-kernel.bin --enable-tftp --tftp-root=/srv/tftp/ -d -u nobody -p0 -K --log-dhcp --bootp-dynamic --dhcp-host=DC:2C:6E:68:AF:B9

4. На микротике: 
   0) вытаскиваем питание
   1) Зажимаем кнопку reset
   2) Включаем питание
   3) Ждем 3 сек и отпускаем кнопку reset

Установка постоянной прошивки на openwrt:

0. Любым способом копируем на openwrt прошивку 
wget:
cd /tmp

wget https://downloads.openwrt.org/releases/22.03.0-rc1/targets/ipq40xx/mikrotik/openwrt-22.03.0-rc1-ipq40xx-mikrotik-mikrotik_lhgg-60ad-squashfs-sysupgrade.bin

ssh openwrt:
ssh root@192.168.1.1
cd /tmp
scp user@192.168.1.10:/home/user/file.bin . 

ssh:
scp sysupgrade.bin root@192.168.1.1:/tmp

1. устанавливаем прошивку

/sbin/sysupgrade sysupgrade.bin

Примеры конфигов hostapd \ wpa_supplicant

cd /etc
wget https://raw.githubusercontent.com/klukonin/Mikrotik-researcher-tools/master/files/etc/wpa_supplicant.conf 
wget https://raw.githubusercontent.com/klukonin/Mikrotik-researcher-tools/master/files/etc/hostapd.conf

Клиент Client:
wpa_supplicant -D nl80211  -i wlan0 -c /etc/wpa_supplicant.conf -B

Точка доступа AP:
hostapd -B /etc/hostapd.conf

openwrt regenerate configuration wifi / сброс wifi

rm -f /etc/config/wireless
wifi config

ip / ifconfig

ifconfig wlan0 192.168.2.1 # Set an IP
ifconfig wlan0 down
ifconfig wlan0 up

ip link set wlan0 up

iwconfig

!!! iwlist - команда устарела и рекомендуется использовать iw вместо ее

Сканировать wifi и вывести имена сетей:
iwlist wlan0 scan | grep ESSID

Сканирование сети:
iwlist  scan

Получить инфу по wlan0:
iwconfig wlan0

Если вы можете получить IP для проводного интерфейса, но не можете для беспроводного, попробуйте отключить энергосберегающие функции вашей беспроводной карты:
iwconfig wlan0 power off


Ели вы получаете timeout ошибку из-за waiting for carrier проблемы, возможно вам понадобится установить канал в auto для конкретного устройства:
iwconfig wlan0 channel auto

iwconfig wlan0	- получение состояния соединения
iwlist wlan0 scan - сканирование доступных точек доступа
iwconfig wlan0 mode ad-hoc - установка режима работы ad-hoc
iwconfig wlan0 essid ваш_essid - подключение к открытой сети
iwconfig wlan0 essid ваш_essid freq 2432M - подключение к открытой сети с указанием канала
iwconfig wlan0 essid ваш_essid key ваш_ключ - подключение к сети с WEP шифрованием шестнадцатеричным ключом
iwconfig wlan0 essid ваш_essid key s:ваш_ключ - подключение к сети с WEP шифрованием ASCII-ключом
iwconfig wlan0 power on	- включение режима энергосбережения

iw / iwinfo / iwlist

!!! iwlist - команда устарела и рекомендуется использовать iw вместо ее
Сканирование сети:
iw dev  scan

iw dev wlan0 link - получение состояния соединения
iw dev wlan0 scan - сканирование доступных точек доступа
iw dev wlan0 set type ibss - установка режима работы ad-hoc
iw dev wlan0 connect ваш_essid - подключение к открытой сети
iw dev wlan0 connect ваш_essid 2432 - подключение к открытой сети с указанием канала
iw dev wlan0 connect ваш_essid key 0:ваш_ключ - подключение к сети с WEP шифрованием шестнадцатеричным ключом
iw dev wlan0 set power_save on - включение режима энергосбережения

iw phy phy0 interface add moni0 type monitor

iw dev
iw dev wlan0 link
iw dev wlan0 scan

iw phy0 info
iw wlan0 info
iw reg get

iwinfo


Подключение к сети wi-fi с помощью iw:

iw dev wlan0 del
iw phy phy0 interface add wlan0 type ibss
ifconfig wlan0 up
iw dev wlan0 scan                                            
iw dev wlan0 ibss join AdHocNetworkName 2412 

rfkill

Во многих ноутбуках присутствует аппаратный переключатель (или кнопка) питания беспроводной карты, однако она может быть также заблокирована и ядром.

Используйте rfkill, чтобы посмотреть текущий статус:
rfkill list

Если карта заблокирована аппаратно (hard blocked), используйте переключатель (кнопку), чтобы разблокировать её. 
Если же карта заблокирована не аппаратно, a программно (soft blocked), используйте следующую команду:
rfkill unblock wifi

hostapd


Пример простой 1 802.11b/g/n with WPA2-PSK and CCMP:
vim /etc/hostapd/hostapd.conf
-----------------------------
# the interface used by the AP
interface=wlan0
# "g" simply means 2.4GHz band
hw_mode=g
# the channel to use
channel=10
# limit the frequencies used to those allowed in the country
ieee80211d=1
# the country code
country_code=FR
# 802.11n support
ieee80211n=1
# QoS support, also required for full speed on 802.11n/ac/ax
wmm_enabled=1
# the name of the AP
ssid=somename
# 1=wpa, 2=wep, 3=both
auth_algs=1
# WPA2 only
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
-----------------------------

Пример простой 2 802.11a/n/ac with WPA2-PSK and CCMP:
/etc/hostapd/hostapd.conf
-------------------------
interface=wlan0
# "a" simply means 5GHz
hw_mode=a
# the channel to use, 0 means the AP will search for the channel with the least interferences (ACS)
channel=0
ieee80211d=1
country_code=FR
ieee80211n=1
# 802.11ac support
ieee80211ac=1         
wmm_enabled=1
ssid=somename
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
-------------------------



Пример простой 3 802.11b/g/n triple AP:
/etc/hostapd/hostapd.conf
-------------------------
interface=wlan0
hw_mode=g
channel=10
ieee80211d=1
country_code=FR
ieee80211n=1
wmm_enabled=1
# First AP
ssid=test1
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=somepassword
# Second AP
# the name of the new interface hostapd will create to handle this AP 
bss=wlan1
ssid=test2
auth_algs=1
wpa=1
wpa_key_mgmt=WPA-PSK
wpa_passphrase=someotherpassword
# Third AP
# the name of the new interface hostapd will create to handle this AP 
bss=wlan2
ssid=test3
# since there is no encryption defined, none will be used
-------------------------



wpa_supplicant / wpa_cli

Запуск wpa_supplicant:
wpa_supplicant -Dnl80211 -iwlan0 -C/var/run -u &
wpa_cli -p/var/run

Пример минимальной настройки:
wpa_cli 
add_network
set_network 0 ssid "MYSSID"
set_network 0 key_mgmt NONE
enable_network 0

Пример:
wpa_cli 
add_network
set_network 0 ssid "name of AP"
set_network 0 key_mgmt WPA-PSK
set_network 0 pairwise TKIP
set_network 0 psk "key"
enable_network 0

Пример для закрытой WPA2 сети:
wpa_cli 
add_network
set_network 0 ssid "name of AP"
set_network 0 key_mgmt WPA-PSK
set_network 0 pairwise CCMP
set_network 0 psk "key"
enable_network 0

wpa_supplicant.conf

cat /etc/wpa_supplicant.conf
----------------------------
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
#
# home network; allow all valid ciphers
    network={
    ssid="home"
    scan_ssid=1
    key_mgmt=WPA-PSK
    psk="very secret passphrase"
 }
----------------------------

!!! Первая строка необходима, без ctrl_interface программа даже не запустится. 
!!! GROUP=wheel нужно для того, чтобы запускать из под обычного пользователя в графическом интерфейсе wpa_gui.
!!! Поэтому рекомендуется  менять на рутовый GROUP=0
!!! Каждой сети в файле настроек должен соответствовать блок network {}
!!! ap_scan=0 #драйвер сканирует точку доступа
!!! ap_scan=1 #wpa_supplicant сканирует точку доступа, используется по-умолчанию
!!! ap_scan=2 #как 0, но еще учитывает политики безопасности и SSID, работает с ndiswrapper
!!! bssid — The Basic Service Set Identifier (BSSID), физический адрес точки доступа.
!!! key_mgmt — Протоколы аутентификации.
!!! pairwise — Для WPA2 укажите CCMP, а для WPA — TKIP.
!!! proto — WPA/WPA2.
!!! psk — Хэш пароля PreShared Key.
!!! ca_cert — Абсолютный путь к CA-сертификату в формате PEM или DER, необходим для возможности подтверждения сертификата сервера.
!!! ca_path — Абсолютный путь к директории, где хранятся файлы CA-сертификатов (в формате PEM), которые вы хотите добавить в список доверенных.
!!! client_cert — Абсолютный путь к клиентскому сертификату в формате PEM или DER.
!!! eap — Разделенный пробелами список поддерживаемых методов EAP: MD5, MSCHAPV2, OTP, GTC, TLS, PEAP, или TTLS.
!!! identity — Идентификации EAP, например имя пользователя.
!!! password — Пароль EAP.


Рекомендованный конфиг WPA-PSK:
cat /etc/wpa_supplicant.conf
----------------------------
ctrl_interface_group=0
ap_scan=1
ctrl_interface=/var/run/wpa_supplicant
network={
    proto=WPA2
    pairwise=CCMP
    key_mgmt=WPA-PSK
    priority=5
    ssid="MYSSID"
    bssid=44:b0:51:dc:ba:f8
    psk=ce55977186ae1df2dffeb571acee8dacd92f49edddbdef53623132e3c24567ae
}
----------------------------

Рекомендованный конфиг WPA-EAP:
cat /etc/wpa_supplicant.conf
----------------------------
network = {
ssid="Company WPA2 EAP"
key_mgmt=WPA-EAP
pairwise=TKIP
group=TKIP
eap=PEAP
identity="username@domain"
password="your_passphrase"
ca_cert="/etc/cert/ca.pem"
phase1="peapver=0"
phase2="MSCHAPV2"
}
----------------------------

Рекомендованный конфиг WPA2 TLS:
cat /etc/wpa_supplicant.conf
----------------------------
network = {
ssid="Company WPA2 TLS"
key_mgmt=WPA-EAP
pairwise=CCMP
group=CCMP
eap=TLS
ca_cert="/etc/cert/ca.pem"
private_key="/etc/cert/privkey.p12"
private_key_passwd="your_passphrase PKCS#12"
}
----------------------------

openwrt wi-fi


type	string	yes	(autodetected)	        The type is determined on firstboot during the initial radio device detection - it is usually not required to change it. 
                                                Used values are broadcom on brcm47xx, or mac80211 for all other platforms

band	string	no	(driver default)	Specifies the band, possible values are 2g for 2.4 GHz, 5g for 5 GHz, 6g for 6 GHz and 60g for 60 GHz. (NEW since 21.02.2, replaces hwmode)

htmode	string	no	(driver default)	Specifies the high throughput mode, used to control 802.11n (HT), 802.11ac (VHT) and 802.11ax (HE). The channel width used for these depends on this configuration. 
                                                See this section for details. Possible values are: HT20, HT40-, HT40+, HT40, or VHT20, VHT40, VHT80, VHT160, NOHT disables 11n and 11ac, HE20, HE40, HE80, HE160

txpower	integer	no	(driver default)	Specifies the maximum desired transmission power in dBm. The actual txpower used depends on regulatory requirements.

vim /etc/config/wireless
------------------------
config	wifi-device		'radio0'
	option	type		'mac80211'
	option	channel		'2'
	option	hwmode		'60g'
	option	path		'pci0000:00/0000:00:00.0'
	option	htmode		'HT20'
	option	country		'US'
 
config	wifi-iface
	option	device		'radio0'
	option	network		'lan'
	option	mode		'ap'
	option	ssid		'OpenWrt'
	option	encryption	'none'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
	option ssid 'My-WiFi-Home'
	option network 'lan'
	option encryption 'psk2'
	option key 'WiFipassword'
	option ieee80211w '0'
	option wps_pushbutton '1'
------------------------

Пример wi-fi wpa_supplicant настройки в debian:

vim /etc/network/interfaces
---------------------------
auto wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
---------------------------

wifi логи:

Следим за логами:
logread -f

Отслеживать сообщения ядра:
dmesg -w

Проверьте сообщения ядра на предмет загрузки прошивки:
dmesg | grep firmware

Если там нет интересующей вас информации, проверьте сообщения подробного вывода, относящиеся к определённому вами ранее модулю (например iwlwifi)
dmesg | grep iwlwifi
modinfo iwlwifi

В ситуации, когда вы не можете определить ошибку, запустите wpa_supllicant напрямую с ключом -dd:
wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd


Если вы используете какую-то утилиту для управления сетью, то же самое можно сделать с помощью systemd:
journalctl -f
journalctl -xb


Проверка состояния драйвера:
lspci -k

Наблюдаем за событиями wi-fi:
iw event
iw event -f
iw event -t

openwrt /etc/config/network

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'eth0'

config device
        option name 'eth0'
        option macaddr 'dc:2c:6e:68:af:b9'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ip6assign '60'
        list ipaddr '192.168.1.1/24'
        list ipaddr '192.168.127.70/24'
        option gateway '192.168.1.10'
        list dns '192.168.1.1'
        list dns '192.168.16.254'


Файлы firmware для wil6210 для запуска wifi lhgg-60ad

!!! https://forum.openwrt.org/t/support-for-mikrotik-wap-60g/30752/95
!!! https://forum.openwrt.org/t/support-for-mikrotik-wap-60g/30752/7
!!! https://github.com/openwrt/openwrt/pull/2417
!!! https://forum.openwrt.org/t/solved-archer-c7-v2-wireless-died-daemon-notice-hostapd-handle-probe-req-send-failed/65837
!!! https://forum.openwrt.org/t/support-for-mikrotik-rb3011uias-rm/4064/399?page=20
!!! из ссылок выше мы узнаем что:
!!! драйвер wil6210.fw в openwrt как заглушка
!!! luci не работает с 60Ghz (не проверял, может и работает на новых прошивках)
!!! ошибка никуда не исчезнет (wil6210 0000:01:00.0: Direct firmware load for wil6210_sparrow_plus.fw failed with error -2)

Описание:
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools
Старые прошивки на котором запустилось 60Ghz (!!! внимание на прошивку надо ставить\докидывать файл wil6210, см описание ниже):
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools/releases
Новые прошивки openwrt 22.03.0-rc3 на котором запустилось 60Ghz (!!! внимание на прошивку надо ставить\докидывать файл wil6210, см описание ниже):
https://downloads.openwrt.org/releases/22.03.0-rc3/targets/ipq40xx/mikrotik/

Файл hosapd:
https://raw.githubusercontent.com/IMDEANetworksWNG/Mikrotik-researcher-tools/main/files/etc/hostapd.conf
Файл wpa_supplicant.conf:
https://github.com/IMDEANetworksWNG/Mikrotik-researcher-tools/blob/main/files/etc/wpa_supplicant.conf

0. Скачиваем и распаковываем
https://download.mikrotik.com/routeros/6.40.9/all_packages-arm-6.40.9.zip

1. Распаковываем all_packages-arm-6.40.9.zip
unzip all_packages-arm-6.40.9.zip

2. Переходим в каталог all_packages-arm-6.40.9 
cd all_packages-arm-6.40.9

3. Распаковываем бинарник wireless-6.40.9-arm.npk
binwalk -e wireless-6.40.9-arm.npk

4. Переходим _wireless-6.40.9-arm.npk.extracted/squashfs-root/lib/firmware/
cd _wireless-6.40.9-arm.npk.extracted/squashfs-root/lib/firmware/

5. Интересует файл wil6210-d0.fw

6. Достовляем его на openwrt с заменой файла wil6210.fw
scp wil6210-d0.fw root@192.168.1.1:/lib/firmware/wil6210.fw


7. На одном устройстве подымаем клиента STA
wpa_supplicant -D nl80211  -i wlan0 -c /etc/wpa_supplicant.conf -B

8. На втором устройстве подымаем сервер AP
hostapd -B /etc/hostapd.conf

Пример hostapd.conf без шифрования lhgg-60ad

ctrl_interface=/var/run/hostapd
interface=wlan0
driver=nl80211
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ssid=Mikrotik
country_code=DE
hw_mode=ad
channel=2
beacon_int=100

Пример wpa_supplicant.conf без шифрования lhgg-60ad

network={
    ssid="Mikrotik"
    key_mgmt=NONE
}

Рубрики
openwrt

wireguard / openwrt / server / client

Cсылки:

https://openwrt.org/docs/guide-user/services/vpn/wireguard/server
https://openwrt.org/docs/guide-user/services/vpn/wireguard/client
https://wiki.shulepov.com/software/openwrt/wireguard
https://github.com/IgorKha/wireguard-mikrotik
https://habr.com/ru/post/594877/
https://interface31.ru/tech_it/2022/04/nastroyka-wireguard-vpn-na-routerah-mikrotik.html

Server wireguard openwrt:

0. Редактируем firewall
vim /etc/config/firewall
------------------------
config zone
option name             wan
list   network          'wan'
option input            ACCEPT
------------------------

1. Редактируем интерфейсы
vim /etc/config/network
-----------------------
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config interface 'wan'
option device 'eth0'
option proto 'dhcp'
-----------------------

2. Устанавливаем пакеты:
opkg update
opkg install wireguard-tools
opkg install luci-i18n-wireguard-ru
opkg install luci-i18n-base-ru
reboot


3. Создаем каталог и генерируем ключи для сервера и клиента wg:
cd /root && mkdir wgkeys && cd wgkeys
wg genkey | tee wgserver.key | wg pubkey > wgserver.pub
wg genkey | tee wgclient.key | wg pubkey > wgclient.pub
wg genpsk > wgclient.psk


4. Загружаем переменные (Вставляем в консоль переменные):
WG_IF="vpn"
WG_PORT="51820"
WG_ADDR="192.168.9.1/24"
WG_ADDR6="fdf1:e8a1:8d3f:9::1/64"
WG_KEY="$(cat wgserver.key)"
WG_PSK="$(cat wgclient.psk)"
WG_PUB="$(cat wgclient.pub)"

5. Настраиваем firewall
# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.lan.network="${WG_IF}"
uci add_list firewall.lan.network="${WG_IF}"
uci -q delete firewall.wg
uci set firewall.wg="rule"
uci set firewall.wg.name="Allow-WireGuard"
uci set firewall.wg.src="wan"
uci set firewall.wg.dest_port="${WG_PORT}"
uci set firewall.wg.proto="udp"
uci set firewall.wg.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart

6. Настраиваем интерфейс wg:

# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci set network.${WG_IF}.listen_port="${WG_PORT}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR6}"
 
# Add VPN peers
uci -q delete network.wgclient
uci set network.wgclient="wireguard_${WG_IF}"
uci set network.wgclient.public_key="${WG_PUB}"
uci set network.wgclient.preshared_key="${WG_PSK}"
uci add_list network.wgclient.allowed_ips="${WG_ADDR%.*}.2/32"
uci add_list network.wgclient.allowed_ips="${WG_ADDR6%:*}:2/128"
uci commit network
/etc/init.d/network restart


7. загрузим ключи на клиент:


Client wireguard openwrt:


0. Редактируем firewall
vim /etc/config/firewall
------------------------
config zone
option name             wan
list   network          'wan'
option input            ACCEPT
------------------------

1. Редактируем интерфейсы
vim /etc/config/network
-----------------------
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config interface 'wan'
option device 'eth0'
option proto 'dhcp'
-----------------------


2. Загружаем переменные (Вставляем в консоль переменные):
# Configuration parameters
WG_IF="vpn"
WG_SERV="IP_ADDRESS_SERVER_WG"
WG_PORT="51820"
WG_ADDR="192.168.9.2/24"
WG_ADDR6="fdf1:e8a1:8d3f:9::2/64"
WG_KEY="$(cat wgclient.key)"
WG_PSK="$(cat wgclient.psk)"
WG_PUB="$(cat wgserver.pub)"

3. Переходим в каталог с ключами:
/root/wgkeys

4. Настраиваем firewall для wg0:
# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci del_list firewall.wan.network="${WG_IF}"
uci add_list firewall.wan.network="${WG_IF}"
uci commit firewall
/etc/init.d/firewall restart

5. Настраиваем интерфейс wg0:
# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR6}"
 
# Add VPN peers
uci -q delete network.wgserver
uci set network.wgserver="wireguard_${WG_IF}"
uci set network.wgserver.public_key="${WG_PUB}"
uci set network.wgserver.preshared_key="${WG_PSK}"
uci set network.wgserver.endpoint_host="${WG_SERV}"
uci set network.wgserver.endpoint_port="${WG_PORT}"
uci set network.wgserver.route_allowed_ips="1"
uci set network.wgserver.persistent_keepalive="25"
uci add_list network.wgserver.allowed_ips="0.0.0.0/0"
uci add_list network.wgserver.allowed_ips="::/0"
uci commit network
/etc/init.d/network restart

Troubleshooting:

# Restart services
/etc/init.d/log restart; /etc/init.d/network restart; sleep 10
 
# Log and status
logread -e vpn; netstat -l -n -p | grep -e "^udp\s.*\s-$"
 
# Runtime configuration
pgrep -f -a wg; wg show; wg showconf vpn
ip address show; ip route show table all
ip rule show; iptables-save -c
ip -6 rule show; ip6tables-save -c
 
# Persistent configuration
uci show network; uci show firewall; crontab -l


Рубрики
openwrt

zerotier / openwrt / debian / vpn

Ссылки:

https://github.com/mwarning/zerotier-openwrt/wiki
https://my.zerotier.com/
https://www.zerotier.com/

https://support.elsist.biz/ru/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D0%B8/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-zerotier-%D0%BD%D0%B0-%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%82%D0%BE%D1%80-wl-r220l-wlink/

https://www.zerotier.com/download/
https://support.paperspace.com/hc/en-us/articles/115000973693-How-to-Create-a-VPN-tunnel-with-ZeroTier-Linux-

Установка zerotier:

opkg update
opkg install zerotier

Показать текущие настройки zerotier:

uci show zerotier
cat /etc/config/zerotier 
zerotier-cli info

Добавить в сеть zerotier:

uci set zerotier.openwrt_network=zerotier
uci add_list zerotier.openwrt_network.join='YOU_ID_ZEROTIRE'
uci set zerotier.openwrt_network.enabled='1'
uci commit zerotier

debian install

curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join 
Рубрики
openwrt

openwrt \ libremesh \ batman\ batmand \ batman-adv

Ссылки

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/
Home
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 сборка

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

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

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:

opkg install bmx7 bmx7-uci-config
opkg install kmod-batman-adv
opkg install batctl

uci изменить имя хоста:

uci set system.@system[0].hostname=newhostname
uci commit system
echo newhostname > /proc/sys/kernel/hostname

uci настройки сети:

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 пример сетевых параметров:

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'

Русификация:

В поиске набираем base-ru
opkg install luci-i18n-base-ru
opkg install luci-i18n-firewall-ru

batctl

Показать добавленные интерфейсы в bat0:
batctl if 

Создать bat0 и добавить интерфейс enp1s0  в bat0:
batctl if add enp1s0

Показать MAC интерфейса bat0:
batctl n
batctl originators

Проверить доступность MAC_ADDRESS:
batctl traceroute MAC_ADDRESS

batmand

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

CONFIG_IP_ADVANCED_ROUTER
CONFIG_IP_MULTIPLE_TABLES

debian /etc/network/interfaces

# 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

config batmand general 
       option interface 'eth1 eth4' 
       option routing_class '3'

openwrt /etc/config/network


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

Добавить в файл строки"/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:

opkg update
opkg list-upgradable | cut -f 1 -d ' ' | xargs opkg upgrade

batctl traceroute script:

for i in ` arp | awk '{print $4}' | grep -v type | tr '\n' ' '` ; do batctl tr  $i ; done

openwrt upgrade

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