Skip to main content

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, или в службу поддержки.