В этой статье описывается, как обнаружить устройства с помощью UNMS и что делать, если Вы столкнулись с проблемами.
Важно понимать, как работает обнаружение, чтобы знать, с какими проблемами можно столкнутся. В этой статье объясняется, как происходит процесс обнаружения и что делать, если Вы не можете обнаружить устройство, либо можете его обнаружить, но не получается его подключить. В случае, если Вы не хотите, чтобы Ваше устройство было обнаружено по какой-либо причине, эта статья также содержит сведения о том, как предотвратить обнаружение.
Как работает обнаружение
UNMS отправляет пакеты обнаружения на каждый IP-адрес в указанном диапазоне и ждет ответа устройства. Устройство отправляет обратно базовую информацию, указанную в Discovery Manager: имя, SSID, модель, версию прошивки, MAC-адрес и список всех интерфейсов. Пакет обнаружения отправляется с использованием UDP на порт 10001, он состоит из четырех байтов 0x1 0x0 0x0 0x0.
Блокировка обнаружения
Если вы хотите, чтобы Ваше устройство не было обнаружено, выполните следующие действия:
airMAX: перейдите по пути "SETTINGS > Services > Device Discovery"установите флажок в положение OFF и нажмите "Save Settings"
EdgeRouter: В настоящее время это можно сделать только через правило брандмауэра. Чтобы настроить правило, выполните следующие команды:
configure edit firewall name disable-discover set default-action accept set rule 100 action 'drop' set rule 100 description 'Drop discovery packets' set rule 100 protocol 'udp' set rule 100 destination port 10001 exit # apply rule to the interface that is connected to the Internet set interfaces ethernet eth0 firewall local name 'disable-discover' commit save show interfaces
Чтобы отключить правило, выполните следующие действия:
configure delete interfaces ethernet eth0 firewall local name 'disable-discover' commit save
Исправление проблем
Ниже указаны три возможных типа неполадок и способы их решения.
Проблема. Я не вижу никаких устройств или некоторых устройств.
Известные проблемы:
- Обнаружение не работает на Debian 8. Рекомендуется обновить до Debian 9, которая официально поддерживается.
- Обнаружение не работает с UNMS, работающем в контейнере LXC. Есть проблемы с контейнерами LXC - поэтому они официально не поддерживаются.
- Текущая версия (0.12.0) обнаружения UNMS не может найти устройства с IP-адресами в общедоступных диапазонах(она может работать со старым FW, но не с новым). Будет измененно в версии 0.13.0.
- Убедитесь, что на Вашем устройстве включено обнаружение:
airMAX: в разделе "SETTINGS > Services > Device Discovery". Если флажок установлен в положение "OFF", измените его на "ON" и нажмите "Save Settings".
EdgeRouter: в разделе "SETTINGS > System > UBNT Discovery". Если флажок установлен в положение "OFF", измените его на "ON" и нажмите "Save". Кроме того, Вам нужно проверить, нет ли активной записи брандмауэра для блокировки UDP-пакетов на порту 10001, как показано в разделе "Блокировка обнаружения". - Проверьте traceroute/ping/curl с Вашего сервера UNMS на IP-адрес устройства.
ping 192.168.x.x traceroute -n 192.168.x.x
- Проверьте traceroute/ping/curl с Вашего сервера UNMS на IP-адрес устройства.
ping 192.168.x.x traceroute -n 192.168.x.x
- Проверьте коллизии виртуальной подсети Docker.
IP-адрес контейнера может "столкнуться" с реальным IP-адресом в Вашей сети. Запустите ifconfig на своем сервере UNMS, чтобы увидеть IP-адрес Docker:
$ ifconfig br-6805a10e2e92 Link encap:Ethernet HWaddr 02:42:d3:f8:f1:64 inet addr:172.18.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:d3ff:fef8:f164/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:196618 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5506244 (5.5 MB) TX bytes:764 (764.0 B) docker0 Link encap:Ethernet HWaddr 02:42:dd:1c:c3:57 inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:ddff:fe1c:c357/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:536 (536.0 B) TX bytes:648 (648.0 B)
Если такой IP существует в Вашей сети, Вам придется изменить подсеть Docker следующим образом:
cd /home/unms/app docker-compose -p unms down docker network create unms_default --subnet 172.30.0.1/24 docker-compose -p unms up -d
- Проверьте с помощью tcpdump, что Ваше устройство получает пакет UDP из Вашего UNMS и отправляет ответ.
- Убедитесь, что Вы используете только 24 диапазона для общедоступных IP-адресов.
- Подумайте, поддерживается ли ваше устройство UNMS, вот список поддерживаемых устройств: EdgeRouter (since UNMS 0.11.0) EdgeSwitch (since UNMS 0.11.0) UFiber OLT (since UNMS 0.11.0) airMAX (AC/M) (since UNMS 0.11.0) airCube (since UNMS 0.11.0) airFiber OLT (since UNMS 0.12.0) EdgeSwitch XP (since UNMS 0.12.0) EdgePower (since UNMS 0.12.0)
- EdgeSwitch старше 1.7.3. (если они старше 1.4.0, Вам необходимо обновить их вручную)
- UFiber OLT без ограничний
- airMAX M старше 8.4.3
- airMAX AC старше 6.1.3
- airCube без ограничний
- AirFiber LTU старше 1.1.1
- EdgeSwitch XP старше 1.4.0
- EdgePower старше 1.2.0
Проблема. Я могу обнаружить устройство, но соединение с UNMS не работает.
- Проверьте traceroute/ping/curl с устройства на Ваш сервер UNMS. IP/доменное имя:
ping unms-server.com traceroute -n 192.168.x.x curl --insecure https://192.168.x.x:443/v2.1/nms/version
- Проверьте обновление HTTPS на WebSocket:
curl --insecure --include --no-buffer --header "Connection: Upgrade" --header "Upgrade: websocket" --header "Host: example.com:80" --header "Origin: http://example.com:80" --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" --header "Sec-WebSocket-Version: 13" https://192.168.x.x:443/
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: qGHgK3En71di5rrssAZTmtRTyFk= db332780afad264425162cb11d19ffd1ac9ad3658f63cb56968a8a2592054a39aac950bcdae301e39eea75f28c7d3e7dd32a568f0fcf67f25b692434c825ffc7d13b7f8bcec1fb649919d784723f039ef50deb939eeb2b1bd602f56339ac20b65b3
- Убедитесь, что устройство имеет правильное время и дату. Для подключения SSL требуется действительное время и дата. Это может быть проблемой для устройств, не подключенных к Интернету или с отключенной службой NTP.
- Если устройство было подключено ранее, попробуйте обновить его ключ UNMS, нажав "Refresh" в соответствующей строке в таблице "Devices". Если этого не произойдет - можно вручную вставить универсальный ключ UNMS через пользовательский интерфейс устройства.
Проблема: проблемы с разрешением имен доменов
- В некоторых сценариях Docker будет использовать только первый сервер имен, настроенный на хост-системе, и если это произойдет с ошибкой - читам https://github.com/moby/moby/issues/20494.
- Docker также по умолчанию имеет значение 8.8.8.8, если DNS не настроен - https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/
Авторский перевод UNMS - Device Discovery