Проблема: не могу зайти на WB ни через web-interface ни через SSH

Через некоторое время (примерно ~4 дня, точнее не скажу) эксплуатации WB 6 перестаёт быть доступным по сети.

  • Собственно %subj%. В бразуере, например, получаю ERR_CONNECTION_TIMED_OUT
  • Помогает только физическое отключение и включение питания
  • Отключение и подключение кабеля к роутеру не спасают

Как это продиагностировать и исправить?

При этом

  • Он явно продолжает функционировать и правила продолжают выполняться
  • Никакой модификапцию OS я не делал, кроме разве что отключения wifi точки доступа через отключение демона hostapd
  • всё остальное штатное + пару очень простых скриптов с правилами (без записей в лог вида log("log message");)

p.s. в теме Welcome to Wiren Board Support Portal не нашёл какую диагностическую инф-ию я мог бы прикрепить сюда типа версии пакетов или что-то ещё. В линукс я чайник.

Добрый день. Собственно - для начала нужно больше информации. Если wi-fi отключен - то контроллер подключен по ethernet. В какой порт? Состояние светодиодов порта? Как настроен адрес на порту (динамика/статика)? если динамика - то кто адреса раздает? В какой роутер/свитч включено кнтроллер?

  • Если wi-fi отключен - то контроллер подключен по ethernet. В какой порт? => eth1
  • Состояние светодиодов порта? => оранжевый светится, зелёный помаргивает
  • Как настроен адрес на порту (динамика/статика)? => на WB настроена динамика, но на роутере установлен резерв ip 10.124.9.238 для MACa 54:10:EC:34:A6:D3
  • если динамика - то кто адреса раздает? => Роутер
  • В какой роутер/свитч включено кнтроллер? => Mikrotik hEX S (RouterOS v6.44.5 (long-term))

Дополнительно:

  • пинги не ходят, пробовал утилитами роутера TCP/IP пинг и ARP пинг.
  • но такое ощущение, что сам WB куда-то вполне себе успешно ходит. Например при запуске утилиты роутера torch на порту, куда подключён WB, вижу такую картинку

Пока писал, там ещё добавилось сетевой активности. 10.124.9.2 - это отдельная файфай точка доступа. Для меня чутка загадка зачем она ломится на WB, особенно на 80-ый порт…


p.s. отключил пока wifi точку доступа на всякий случай, подключил компьютер по проводу

Хм. Arping тоже не работает?
Screenshot from 2020-11-04 12-21-39

Запускал ARP ping с роутера. Не проходит – таймаут.

Тогда самый информативный вариант - подключиться к контроллеру через Debug порт и посмотреть - что ж там с сетью. (самый банальный - поменять провод между контроллером и роутером - уже делали?).

Ну поменять его так просто не получится, он замурован :slight_smile: А ещё один кинуть как-нибудь не смогу потому что нет провода такой длины. Но просто если не касаясь провода, перезагрузить WB, то всё возвращается на круги своя.
Может после перезагрузки можно что-то в каких-то логах на самом WB найти? Куда смотреть, что искать по какому ключевому слову фильтровать?

Принудительно перегрузил его. Снова могу зайти.
В /var/log/messages много записей такого вида

    Nov  4 08:36:12 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:17: Serial protocol error: request timed out
    Nov  4 08:38:08 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 39 of device modbus:53: Serial protocol error: request timed out
    Nov  4 08:43:28 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:12: Serial protocol error: request timed out
    Nov  4 08:45:41 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:12: Serial protocol error: request timed out
    Nov  4 08:47:34 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 2 holding(s) @ 270 of device modbus:125: Serial protocol error: request timed out
    Nov  4 09:01:49 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 3 holding(s) @ 6 of device modbus:125: Serial protocol error: request timed out
    Nov  4 09:03:10 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 holding(s) @ 8 of device modbus:17: Serial protocol error: request timed out
    Nov  4 09:03:46 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:12: Serial protocol error: request timed out

Ещё очень много таких записей

    Nov  4 09:41:38 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:41:49 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:42:00 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:42:11 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:42:23 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:42:41 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:42:59 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
    Nov  4 09:43:14 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67

Вот небольшой кусок логов прямо перед выключением питания (выше в общем-то тоже самое)

Nov  4 09:58:01 wirenboard-A6H3RETE cron.info CRON[18076]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 09:58:05 wirenboard-A6H3RETE authpriv.info CRON[18072]: pam_unix(cron:session): session closed for user root
Nov  4 09:59:01 wirenboard-A6H3RETE authpriv.info CRON[18147]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 09:59:01 wirenboard-A6H3RETE cron.info CRON[18151]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 09:59:06 wirenboard-A6H3RETE authpriv.info CRON[18147]: pam_unix(cron:session): session closed for user root
Nov  4 09:59:18 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:73: Serial protocol error: request timed out
Nov  4 09:59:25 wirenboard-A6H3RETE user.notice wb-mqtt-db[554]: 2020-11-04 09:59:25.932 NOTICE: Bulk processing took 174ms
Nov  4 09:59:48 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 09:59:52 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 09:59:56 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:00:00 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:00:01 wirenboard-A6H3RETE authpriv.info CRON[18227]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 10:00:01 wirenboard-A6H3RETE authpriv.info CRON[18226]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 10:00:01 wirenboard-A6H3RETE cron.info CRON[18234]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_wbrules.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 10:00:01 wirenboard-A6H3RETE cron.info CRON[18235]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 10:00:02 wirenboard-A6H3RETE authpriv.info CRON[18227]: pam_unix(cron:session): session closed for user root
Nov  4 10:00:05 wirenboard-A6H3RETE authpriv.info CRON[18226]: pam_unix(cron:session): session closed for user root
Nov  4 10:00:05 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:00:18 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:00:28 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:00:46 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:01:00 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:01:01 wirenboard-A6H3RETE authpriv.info CRON[18311]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 10:01:01 wirenboard-A6H3RETE cron.info CRON[18315]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 10:01:05 wirenboard-A6H3RETE authpriv.info CRON[18311]: pam_unix(cron:session): session closed for user root
Nov  4 10:01:18 wirenboard-A6H3RETE user.notice serial: ModbusRTU::ReadRegisterRange(): failed to read 1 input(s) @ 121 of device modbus:73: Serial protocol error: request timed out
Nov  4 10:01:21 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:01:25 wirenboard-A6H3RETE user.notice wb-mqtt-db[554]: 2020-11-04 10:01:25.912 NOTICE: Bulk processing took 154ms
Nov  4 10:01:30 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:01:42 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:01:49 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:02:01 wirenboard-A6H3RETE authpriv.info CRON[18382]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 10:02:01 wirenboard-A6H3RETE cron.info CRON[18386]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 10:02:06 wirenboard-A6H3RETE authpriv.info CRON[18382]: pam_unix(cron:session): session closed for user root
Nov  4 10:02:11 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:02:32 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:02:51 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:03:01 wirenboard-A6H3RETE authpriv.info CRON[18453]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  4 10:03:01 wirenboard-A6H3RETE cron.info CRON[18457]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Nov  4 10:03:05 wirenboard-A6H3RETE authpriv.info CRON[18453]: pam_unix(cron:session): session closed for user root
Nov  4 10:03:06 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:03:18 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:03:25 wirenboard-A6H3RETE user.notice wb-mqtt-db[554]: 2020-11-04 10:03:25.897 NOTICE: Bulk processing took 138ms
Nov  4 10:03:30 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:03:42 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 10.124.9.1 port 67
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPREQUEST of 10.124.9.238 on eth0 to 255.255.255.255 port 67
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dhclient[4055]: DHCPACK of 10.124.9.238 from 10.124.9.1
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dnsmasq[2705]: reading /etc/resolv.conf
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dnsmasq[2705]: using nameserver 80.254.108.194#53
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dnsmasq[2705]: using nameserver 80.254.108.202#53
Nov  4 10:03:55 wirenboard-A6H3RETE daemon.info dhclient[4055]: bound to 10.124.9.238 -- renewal in 250 seconds.
Nov  4 10:04:35 wirenboard-A6H3RETE syslog.info syslogd started: BusyBox v1.22.1
Nov  4 10:04:37 wirenboard-A6H3RETE user.notice kernel: klogd started: BusyBox v1.22.1 (Debian 1:1.22.0-19+b3)
Nov  4 10:04:37 wirenboard-A6H3RETE user.info kernel: [    0.000000] Booting Linux on physical CPU 0x0
Nov  4 10:04:37 wirenboard-A6H3RETE user.notice kernel: [    0.000000] Linux version 4.9.22-wb6 (root@wbdevenv) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #2 SMP Wed Jun 10 11:07:45 UTC 2020
Nov  4 10:04:37 wirenboard-A6H3RETE user.info kernel: [    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
Nov  4 10:04:37 wirenboard-A6H3RETE user.info kernel: [    0.000000] CPU: div instructions available: patching division code
Nov  4 10:04:37 wirenboard-A6H3RETE user.info kernel: [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Nov  4 10:04:37 wirenboard-A6H3RETE user.info kernel: [    0.000000] OF: fdt:Machine model: Wiren Board rev. 6.6.0 (i.MX6UL/ULL)

Очень похоже на то что адрес не выдается.
Ради эксперимента - советую поставить статический на контроллере. И проверить.

Сконфигурировал статический IP на 2-ом Ethernet порте, переключил туда шнур и ноль реакции. На порте светодиоды не загорелись и соответственно подключиться к нему я не смог.

После этого я вернул провод в 1-ый ethernet, светодиоды зажглись, но подключиться я к нему опять не смог (!)

Я думаю – ок. Переключил опять во второй порт и выключил питание и включил обратно. И тогда 2-ой Ethernet ожил и я смог к нему подключиться по статическому IP.

Похоже, что WB не любит подключаться к сетям “на живую”. В настройках есть некий hotplug, ну так он включён. Что можно ещё посмотреть/сделать, чтобы он на живую реагировал на подклчюения ethernet?

ifconfig & ip addr сейчас выдают вот такое

root@wirenboard-A6H3RETE:~# ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 54:10:ec:34:a6:d3  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.124.9.5  netmask 255.255.255.0  broadcast 10.124.9.255
        inet6 fe80::5610:ecff:fe34:9e86  prefixlen 64  scopeid 0x20<link>
        ether 54:10:ec:34:a6:d4  txqueuelen 1000  (Ethernet)
        RX packets 5348  bytes 408481 (398.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4651  bytes 3819306 (3.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 60034  bytes 4647946 (4.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 60034  bytes 4647946 (4.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@wirenboard-A6H3RETE:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 54:10:ec:34:a6:d4 brd ff:ff:ff:ff:ff:ff
    inet 10.124.9.5/24 brd 10.124.9.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::5610:ecff:fe34:9e86/64 scope link
       valid_lft forever preferred_lft forever
3: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 54:10:ec:34:a6:d3 brd ff:ff:ff:ff:ff:ff
4: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/sit 0.0.0.0 brd 0.0.0.0
5: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ac:5d:5c:e0:ec:7c brd ff:ff:ff:ff:ff:ff
6: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ae:5d:5c:e0:ec:7c brd ff:ff:ff:ff:ff:ff

Это очень похоже на проблемы с DHCP. Их можно долго и весело решать, но если есть возможность перейти на статику - это стоит сделать.

Кстати, есть возможность обратиться к контроллеру по link-local ipv6-адресу. Это помогает при отладке подобных сетевых проблем, когда линк есть, а по ipv4 связи нет.

В линуксе это работает примерно так:

ssh root@fe80::5610:ecff:fe32:bf1%enp0s31f6

где fe80::5610:ecff:fe32:bf1 - это link-local ipv6 адрес, он есть после inet6 в выводе ifconfig, его же можно посчитать онлайн-калькулятором из MAC-адреса.

enp0s31f6 - это название сетевого интерфейса компьютера, на котором выполняете команду. Без указания интерфейса к link-local адресам подключиться не получится.

1 лайк

Ок. попробую.

На статику ж я и перешёл. но всё равно оно на живую не любит восстанавливать связь при переключении кабеля.

Есть какой-нибудь старый-ненужный роутер (устройство, которое можно пинговать)? Предлагаю подключить его рядом с контроллером и контроллер как и приходящий ethernet включить в его порты. Связь часто теряется все же из-за UTP (коннекторы, плохой контакт).