FW: документация CLI
Страница перенесена в Confluence
Прошивка для точек доступа представляет из себя кастомизированную сборку OpenWRT. В настоящее время для серии точек используется образ на основе ветки 18.06, для новых точек на основе 19.07. Однако общая структура общая для всех версий.
CLI - это shell, в котором можно выполнять команды. Подключится к CLI можно с помощью протокола SSH.
Общие настройки
Просмотр лога
Для просмотра лог файлов можно использовать logread. Утилита поддерживает фильтрацию (ключ -e), а также follow логов (опция -f). Пример использования:
# logread -e cpeagent -f
Thu Jul 29 20:32:32 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e sending PUBLISH (d0, q0, r0, m65413, 'REQ/CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/DB//cf1b6c00-b708-47ad-c74e-d190a41a0740/C/stat', ... (1759 bytes))
Thu Jul 29 20:32:32 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e received PUBLISH (d0, q0, r0, m0, 'RSP/DB//CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/cf1b6c00-b708-47ad-c74e-d190a41a0740', ... (32 bytes))
Thu Jul 29 20:32:33 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e sending PUBLISH (d0, q0, r0, m65414, 'REQ/CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/DB//0c9195d2-55da-4ef0-cebd-cbc8df75218f/C/client-stat', ... (639 bytes))
Thu Jul 29 20:32:33 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e received PUBLISH (d0, q0, r0, m0, 'RSP/DB//CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/0c9195d2-55da-4ef0-cebd-cbc8df75218f', ... (39 bytes))
Thu Jul 29 20:32:42 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e sending PUBLISH (d0, q0, r0, m65415, 'REQ/CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/DB//7e53365d-1062-4314-c321-231ec2df2473/C/stat', ... (1724 bytes))
Thu Jul 29 20:32:42 2021 daemon.info cpeagent[1212]: Mosquitto: 16 Client 3015be6a-5ca8-ff1a-3655-44d1fa9db36e received PUBLISH (d0, q0, r0, m0, 'RSP/DB//CPE/3015be6a-5ca8-ff1a-3655-44d1fa9db36e/7e53365d-1062-4314-c321-231ec2df2473', ... (32 bytes))
...
Настройки программ
Для хранения и управления настройками в OpenWRT используется подсистема UCI (Unified Configuration Interface). Файлы UCI хранятся в папке /etc/config.
Особенность UCI - возможность накатывать (commit) и откатывать (revert) изменение конфигураций.
UCI (Unified Configuration Interface)
Настройка любой подсистемы устройства производится при помощи интерфейса UCI. Управление этим интерфейсом производится при помощи утилиты uci
. Конфигурация UCI имеет трех уровненную иерархическую структуру:
Конфигурация
˪ Секция
˪ Поле
Конфигурации уникально именованы. В каждой конфигурации имеется несколько секций. У каждой секции есть тип и опционально - имя. Секция состоит из именованных полей со значениями. Значения могут быть строкой или списком из строк.
Основными командами утилиты uci являются:
uci show - выводит часть конфигурации
uci get - выводит значение поля
uci set - устанавливает значение поля или создает именованную секцию
uci add - создает безымянную секцию
uci delete - удаляет секцию или поле
uci commit - применяет введенные изменения в конфигурации
uci revert - сбразывает введенные изменения
После каждой серии внесения изменений конфигурации необходимо исполнить команду uci commit <config>
для применения изменений и перезапустить сервис, конфигурация которого была изменена.
Так, например, общие системные настройки хранятся в /etc/config/system, что соответствует команде uci show system. Наглядный пример:
# cat /etc/config/system
config system
option ttylogin '0'
option log_size '64'
option urandom_seed '0'
option timezone 'MSK-3'
option zonename 'Europe/Moscow'
option hostname 'Some-Hostname'
option log_remote 'false'
config timeserver 'ntp'
option enable_server '0'
option enabled 'true'
list server 'pool.ntp.org'
config led 'led_wlan2g'
option name 'WLAN2G'
option sysfs 'xd3200:blue:wlan2g'
option trigger 'phy1tpt'
# uci show system
system.@system[0]=system
system.@system[0].ttylogin='0'
system.@system[0].log_size='64'
system.@system[0].urandom_seed='0'
system.@system[0].timezone='MSK-3'
system.@system[0].zonename='Europe/Moscow'
system.@system[0].hostname='Some-Hostame'
system.@system[0].log_remote='false'
system.ntp=timeserver
system.ntp.enable_server='0'
system.ntp.enabled='true'
system.ntp.server='pool.ntp.org'
system.led_wlan2g=led
system.led_wlan2g.name='WLAN2G'
system.led_wlan2g.sysfs='xd3200:blue:wlan2g'
system.led_wlan2g.trigger='phy1tpt'
Любое поле можно поменять с помощью текстового редактора VIM / Nano (в файлах /etc/config/*), либо с помощью выставления параметра в uci. Пример второго:
uci set system.@system[0].hostname='Some-Hostame-2'
uci commit system
# uci show system.@system[0].hostname
system.cfg01e48a.hostname='Some-Hostame-2'
Состояние сети
Имеется стандартный набор сетевых утилит Linux, а именно:
- ifconfig
- iproute2
- brctl
- lldpd
- и так далее
Пример состояния сети:
# ifconfig
br-lan Link encap:Ethernet HWaddr 44:D1:FA:9D:B3:6E
inet addr:10.30.40.154 Bcast:10.30.40.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3577370 errors:0 dropped:9 overruns:0 frame:0
TX packets:548889 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2024102205 (1.8 GiB) TX bytes:232928498 (222.1 MiB)
# ip r
default via 10.30.40.1 dev br-lan proto static metric 1
10.11.0.0/22 dev br-man proto static scope link metric 20
10.30.40.0/24 dev br-lan proto static scope link metric 1
# brctl show
bridge name bridge id STP enabled interfaces
br-lan 7fff.44d1fa9db36e no eth0.2
wlan0-1
Важно, что как и для system настроек, для сети используется секция /файл network наряду с uci show network
:
# cat /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd73:cd01:4cf0::/48'
config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'
...
Сетевые настройки
По-умолчанию CPE использует wan интерфейс для подключения к сети. Этот интерфейс используется с политикой lan (то есть неограниченный доступ к устройству через этот интерфейс). При включении на интерфейсе выставляется адрес 192.168.1.1 с маской подсети 255.255.255.0 и запускается DHCP-клиент. Если устройство не получило адрес по протоколу DHCP, доступ к ней можно получить по статическому адресу 192.168.1.1. Для изменения адресации по-умолчанию, выполните следующие команды:
uci set network.alan.ipaddr=<address> # укажите нужный адрес
uci set network.alan.netmask=<netmask> # укажите нужную маску подсети
uci set network.alan.gateway=<gw> # укажите адрес шлюза, если нужно
uci add_list network.alan.dns=<dns1> # укажите адрес dns, если нужно
uci add_list network.alan.dns=<dns2> # укажите вспомогательный адрес dns,
# если нужно
uci commit
/etc/init.d/network reload
Для отключения DHCP клиента, введите следующие команды:
uci set network.alan.disabled=1
uci set network.lan.proto=static
uci set network.lan.ipaddr=<address> # укажите нужный адрес
uci set network.lan.netmask=<netmask> # укажите нужную маску подсети
uci set network.alan.gateway=<gw> # укажите адрес шлюза, если нужно
uci add_list network.alan.dns=<dns1> # укажите адрес dns, если нужно
uci add_list network.alan.dns=<dns2> # укажите вспомогательный адрес dns,
# если нужно
uci commit
/etc/init.d/network reload
Настройка SNMP
SNMP (англ. Simple Network Management Protocol — простой протокол сетевого управления) — стандартный интернет-протокол для управления устройствами в IP-сетях на основе архитектур TCP/UDP. К поддерживающим SNMP устройствам относятся маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры, модемные стойки и другие. Протокол обычно используется в системах сетевого управления для контроля подключённых к сети устройств на предмет условий, которые требуют внимания администратора.
На точках от Wimark установлен демон wsnmpd. В базовом виде исполнении он полностью готов к работе.
Конфигурационный файл находится в /etc/config/wmsnmpd:
root@qwp320-ac-vc:~# cat /etc/config/wmsnmpd
# you may add more than the 'default' mini_snmpd instances provided they all bind to different ports/interfaces
# to get around max 4 interface or mountpoint limit constrained by mini_snmpd's mib
config wmsnmpd 'default'
option enabled 1
option ipv6 0
# Verbose flag given to mini_snmpd, extra verbose is only possible with compile time config flags
option debug 0
# Turn on community authentication (snmp agent must use community name)
option auth 0
option community 'public'
option contact 'WiMark router <info@wimark.com>'
option location 'Undisclosed'
# to listen on all interfaces you need to set option listen_interface ''
option listen_interface 'lan'
#option udp_port '161'
#option tcp_port '161'
#option vendor_oid ''
option mib_timeout 1
# enable basic disk usage statistics on specified mountpoint
list disks '/overlay'
list disks '/tmp'
# enable basic network statistics on specified interface
# 4 interfaces maximum per instance, as named in /etc/config/network and luci
# not physical device names
list interfaces 'lan'
list interfaces 'wan'
# load lua extensions from folder
list lua_folders '/lib/snmpd'
# load lua extensions from file
# list lua_files '/path/to/script.lua'
После изменения конфигурации следует выполнить /etc/init.d/wmsnmpd restart
Примеры
- .1.3.6.1.4.1.52400.2.1.3.4.1.0 - показывает подключена ли точка к контроллеру.
- .1.3.6.1.4.1.52400.2.3.2.1.0 - собраны данные по Wi-Fi.
Также можно загрузить более подробный файл с примерами, по ссылке.
MIBs
MIB для загрузки в MIB Browser следует скачать отсюда (предварительно распаковав ZIP архив).
Настройки LLDP
Настройки LLDP хранятся в файле /etc/config/lldpd
# cat /etc/config/lldpd
config lldpd config
option enable_cdp 1
option enable_fdp 1
option enable_sonmp 1
option enable_edp 1
option lldp_class 4
option lldp_location "2:FR:6:Commercial Rd:3:Roseville:19:4"
# if empty, the distribution description is sent
#option lldp_description "OpenWrt System"
#option lldp_hostname "Modified Hostname"
# interfaces to listen on
list interface "loopback"
list interface "lan"
Для использования lldp рекомендуется переключить интерфейс lan на реальный физический интерфейс eth0 (eth0.2 в случае использования switch_vlan):
uci set lldpd.config.interface='eth0.2'; uci commit; /etc/init.d/lldpd restart
После этого список соседей можно просмотреть командой lldpctl:
# lldpctl
-------------------------------------------------------------------------------
LLDP neighbors:
-------------------------------------------------------------------------------
Interface: eth0.2, via: LLDP, RID: 1, Time: 0 day, 00:00:40
Chassis:
ChassisID: mac f8:5e:3c:24:69:c4
SysName: net-zbt-we1326-f85e3c2469c4
SysDescr: OpenWrt SNAPSHOT @ net-zbt-we1326-f85e3c2469c4
MgmtIP: 10.30.40.144
MgmtIP: fdc1:ccd4:ef7f::1
Capability: Bridge, on
Capability: Router, on
Capability: Wlan, on
Capability: Station, off
Port:
PortID: mac f8:5e:3c:24:69:c5
PortDescr: wan
TTL: 120
PMD autoneg: supported: yes, enabled: yes
Adv: 10Base-T, HD: yes, FD: yes
Adv: 100Base-TX, HD: yes, FD: yes
Adv: 1000Base-T, HD: no, FD: yes
MAU oper type: 1000BaseTFD - Four-pair Category 5 UTP, full duplex mode
LLDP-MED:
Device Type: Network Connectivity Device
Capability: Capabilities, yes
Capability: Policy, yes
Capability: Location, yes
Capability: MDI/PSE, yes
Capability: MDI/PD, yes
Capability: Inventory, yes
Inventory:
Software Revision: 5.4.155
Состояние Wi-Fi сетей
Хранятся в /etc/config/wireless. Для просмотра состояния можно использовать iw / iwinfo / iwconfig:
# iw dev
phy#0
Interface wlan0-1
ifindex 9
wdev 0x3
addr 46:d1:fa:9d:b3:70
ssid work-5g
type AP
channel 149 (5745 MHz), width: 40 MHz, center1: 5755 MHz
txpower 30.00 dBm
# iwinfo
mesh0 ESSID: "_mesh_network_name"
Access Point: 44:D1:FA:9D:B3:70
Mode: Mesh Point Channel: 149 (5.745 GHz)
Tx-Power: 30 dBm Link Quality: 45/70
Signal: -65 dBm Noise: -98 dBm
Bit Rate: 6.0 MBit/s
Encryption: unknown
Type: nl80211 HW Mode(s): 802.11nac
Hardware: 168C:003C 0000:0000 [Qualcomm Atheros QCA9880]
TX power offset: none
Frequency offset: none
Supports VAPs: yes PHY name: phy0
Посмотреть список клиентов на конкретном wlan интерфейсе можно с помощью опять же iw:
# iw dev wlan0-1 station dump
Station 28:16:ad:c9:c2:37 (on wlan0-1)
inactive time: 13820 ms
rx bytes: 2794237
rx packets: 32767
tx bytes: 530123537
tx packets: 349846
tx retries: 0
tx failed: 268
rx drop misc: 34
signal: -28 [-32, -30] dBm
signal avg: -27 [-31, -30] dBm
tx bitrate: 6.0 MBit/s
rx bitrate: 6.0 MBit/s
rx duration: 2084480 us
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: no
TDLS peer: no
DTIM period: 2
beacon interval:100
short slot time:yes
connected time: 14594 seconds
Настройка Wi-Fi
Из консоли доступно полное управление Wi-Fi интерфейсами на точке. Настройка возможно как через интерфейс UCI (uci show wireless), так и напрямую через файл /etc/config/wireless.
Настройки Wi-Fi делятся на 2 сущности:
- настройка wifi-device - radio - физического интерфейса
- настройка wifi-iface - конкретного логического интерфейса (по сути, каждого экземпляра Access Point, либо Mesh, либо Station-Client и тп)
В первом (wifi-device) мы настраиваем канал, режим работы всего физического интерфейса - важно понимать, что эти настройки привязаны к реальному физическому интерфейсу и для каждого физического может быть только одна секция wi-fi device, пример:
config wifi-device 'radio0'
option type 'mac80211'
option channel '36' # канал
option hwmode '11a' # режим работы
option path 'pci0000:00/0000:00:00.0'
option log_level '0' # уровень логирования
option txpower '4' # сила сигнала, максимум 20, 23 или 30 (от драйвера зависит)
option htmode 'VHT40' # ширина и режим работы - HT/VHT
option country 'RU' # страна регулаторики
option legacy_rates '0' # поддержка 802.11b фреймов выключена
Для каждого wifi-device может быть до 8 (или до 16 в случае AC wave 2) логических интерфейсов wifi-iface. При этом настройка с одним SSID может быть только 1 на каждый wifi-device! Пример конфига:
config wifi-iface 'radio05bb4031e_6392_4b1f_b598_fb58b739d613'
option auth_cache 'false'
option maxassoc '10' # максимальное число одновременно ассоциированных
option hidden 'false' # скрытая ли сеть
option macaddr '46:d1:f0:a5:0b:98' # BSSID (если выставляем руками)
option ownip '10.30.40.153' # NAS IP
option encryption 'psk2+aes' # шифрование
option acct_interval '600' # период посылки аккаунтинга на платформу
option isolate 'false' # AP isolate
option mode 'ap' # режим точки доступа
option ieee80211v 'true' # включен 802.11v
option bss_transition 'true' # включено BSS transition
option nasid '46d1f1a50b98' # NAS ID
option ieee80211r 'true' # включен 802.11r
option mobility_domain '574d' # домен для 802.11r
option key '87654321' # пароль PSK
option ft_psk_generate_local '0'
option band_steering 'true'
option device 'radio0' # имя wifi-device
option ft_over_ds 'true'
option pmk_r1_push '1'
option max_inactivity '180'
option wnm_sleep_mode 'true'
option network 'lan' # имя сети
option ieee80211k 'true' # включен 802.11k
list r0kh 'ff:ff:ff:ff:ff:ff,*,e5b4febea6dadd5f1325236adf2eacfb12ce91baacd36cb3d2e3fb4e9393aaec'
option uapsd 'false'
list r1kh '00:00:00:00:00:00,00:00:00:00:00:00,e5b4febea6dadd5f1325236adf2eacfb12ce91baacd36cb3d2e3fb4e9393aaec'
option ubus_acct_interval '60'
option wmm 'true'
option ssid 'wm_roam' # SSID
option rrm_beacon_report 'true'
option rrm_neighbor_report 'true'
option macfilter 'disable'
Меняя какие-то опции и сохраняем файл, после чего выполняем wifi и новый SSID может быть увиден в эфире с обновленными настройками.
Полная информация по настройкам содержится в первоисточнике - в документации по ссылке.
Настройка CPEagent
Просмотр состояния агента
Wimark FW содержит утилиту cpeagent, которая служит для связи с платформой управления Wimark One, а также для управления, мониторинга точки доступа.
Состояние cpeagent можно посмотреть с помощью выполнения команды
cpeagent status
:
# cpeagent status
{
"state": "connected",
"tunnel_broker": {
"host": "10.9.0.1",
"port": "1883"
},
"conninfo": {
"remote": {
"family": "ipv4",
"port": 1883,
"address": "10.9.0.1"
},
"local": {
"family": "ipv4",
"port": 44326,
"address": "10.9.142.244"
}
},
"broker": {
"host": "nmstest.wimark.tk",
"port": "4500"
},
"id": "3015be6a-5ca8-ff1a-3655-44d1fa9db36e",
"version": "1.1.25",
"tunnel": "IPSEC"
}
В статусе обозначен тип подключения (поле Tunnel), адрес подключения, id точки доступа, версия агента, а также внутренный адрес точки на платформе (если подключение через IPSec).
Состояние IPSec (management туннеля)
Понять, работает ли туннель, можно выполнение команды ipsec status
:
# ipsec status
Security Associations (2 up, 0 connecting):
wimark-1[48989]: ESTABLISHED 6 seconds ago, 10.30.40.154[3015be6a-5ca8-ff1a-3655-44d1fa9db36e]...104.199.97.26[aaa]
wimark-1{49015}: INSTALLED, TUNNEL, reqid 17, ESP in UDP SPIs: cbfa9335_i c194a62a_o
wimark-1{49015}: 10.9.142.244/32 === 10.9.0.1/32
wimark-1[48988]: ESTABLISHED 16 seconds ago, 10.30.40.154[3015be6a-5ca8-ff1a-3655-44d1fa9db36e]...104.199.97.26[aaa]
wimark-1{49014}: INSTALLED, TUNNEL, reqid 17, ESP in UDP SPIs: ce1828b9_i c02c374f_o
wimark-1{49014}: 10.9.142.244/32 === 10.9.0.1/32
И тут видно, что правая сторона (сервер) имеет адрес 10.9.0.1. С помощью ping можно проверить, доступен ли сервер. Если нет, то рекомендуем сделать ipsec restart
. Иногда эта проблема затрагивает подключение cpeagent к платформе (тогда в cpeagent status мы можем увидеть статус disconnected или connecting...).
Изменение адреса плафтормы
В конфигурации агента может быть указано несколько адресов NMS. Он будет использовать один из них для подключения (первый доступный).
Если вы уверены, что ранее был указан один адрес (по-умолчанию это так и зачастую не меняется), то для изменения адреса NMS на
достаточно выполнить следующие команды:
uci set wimark.@broker[0].host=<address> # замените <address> на нужное вам
# значение
uci commit wimark
cpeagent restart
Если вам нужно указать несколько адресов или ранее было указано несколько, воспользуйтесь следующей последовательностью команд:
# удаление ранее сконфигурированных адресов
while uci delete wimark.@broker[0] 2> /dev/null; do :; done;
uci add wimark broker
uci set wimark.@broker[0].host=<address0>
# повторить для каждого адреса, обратите внимание на индекс секции
uci add wimark broker
uci set wimark.@broker[1].host=<address1>
# ...
uci commit wimark
cpeagent restart
Настройка типа подключения CPE Agent поддерживает два типа подключения к nms: с использованием шифрованного тоннеля ipsec и без. По-умолчанию используется ipsec.
Для отключения тоннеля ipsec выполните следующие команды:
uci set wimark.@cpeagent[0].tunnel=none
uci commit
cpeagent restart
Для включения:
uci set wimark.@cpeagent[0].tunnel=ipsec
uci commit
cpeagent restart
Отключение CPE Agent Watchdog Программный Watchdog для CPE Agent предназначен для самостоятельной перезагрузки устройства в случае, если оно в течении долго время offline. По-умолчанию, он включен.
Для того, чтобы отключить такое поведение достаточно выполнить следующие команды:
uci set wimark.@cpeagent[0].watcher_disabled=1; uci commit wimark
для включения:
uci set wimark.@cpeagent[0].watcher_disabled=0; uci commit wimark
Ссылки
Для более сложной конфигурации обратитесь к документации openwrt, или в службу поддержки.