gladilov.org.ru gladilov.org.ua

15 заметок с тегом

роутер

Позднее Ctrl + ↑

Настройка NUT в режиме master + slave

Приобретя ИБП Powercom BNT-1000AP Schuko, поставил себе задачу обеспечить гарантированное питание и корректное завершение работы на важных системах. Имелся в виду мой компьютер (естессно!) и роутер D-Link DIR-320/A2E с установленным там DebWRT (носит гордое имя hive, о нём я уже писал).

Показать

Так как ИБП я выбирал с буквой P в конце названия модели, то он имеет порт для связи с компьютером. В моём случае это был USB-порт (RS-232 и другую экзотику уже в них и не используют давно). В комплекте с ИБП прилагался кабель USB(A)male — USB(B)female. Но им я дотянулся только до компьютера.

На компе поставил пакет NUT (Network UPS Tools). Он состоит из сервера upsd, клиента upsmon и вспомогательных программ:

  • upsc — программа общения с сервером вручную
  • upsdrvctl — программа запуска драйвера ИБП вручную
  • upscmd — программа посылки команд в ИБП вручную
  • upssched — скрипт обработки событий от ИБП

Серверный процесс upsd поддерживает связь с ИБП и отвечает на запросы клиентов.
Клиентский процесс upsmon отвечает за своевременное обнаружение проблем с питанием и принятие необходимых решений.

Поскольку к одному ИБП может быть подключено несколько устройств, то клиентов тоже может быть много. Среди многих клиентов выделен один, запущенный на машине с подключённым ИБП, он называется master, остальные клиенты называются slave. Клиент master сообщает при необходимости slave-клиентам о том, что им надо отключиться и завершить работу машин, на которых они работают. Это обычно происходит перед выключением ИБП из-за пониженного заряда батареи.

В моём случае конфигурация свелась к ебле с созданием файла /dev/ttyUSB0 настройке линка через USB-кабель и редактированию конфигурационных файлов:

  • /etc/nut/nut.conf — указывает тип работы nut
MODE=standalone
UPSD_OPTIONS="-u root"
UPSMON_OPTIONS="-u root"
  • /etc/nut/ups.conf — конфигурация драйвера и способа подключения к ИБП
user=root
[bnt-1000]
driver=usbhid-ups
port=auto
productid=0004
desc="Powercom BNT-100AP Schuko"
  • /etc/nut/upsd.conf — конфигурация сервера
LISTEN 127.0.0.1 3493
LISTEN [адрес в моей домашней IP-сети] 3493

Можно просто указать

LISTEN 0.0.0.0 3493

для того, чтобы сервер слушал запросы на всех интерфейсах.

  • /etc/nut/upsd.user — описание клиентов и пользователей
[soul]
password=<пароль>
action=SET
instcmds=ALL
upsmon=master
[hive]
password=<пароль>
upsmon=slave
  • /etc/nut/upsmon.conf — конфигурация клиента, строка соединения с сервером
RUN_AS_USER root
MONITOR bnt-1000@localhost 1 soul <пароль> master

Также

chown -R nut. /var/run/nut/

На сервере hive настройка была более тривиальной и свелась к установке пакетов nut и nut-cgi и редактированию файла /etc/nut/upsmon.conf:

MONITOR bnt-1000@soul 1 soul <пароль> slave

После этого процесс upsmon на сервере hive смог общаться с процессом upsd на моей машине soul.

Итоговая схема выглядит так:

Стандартный вывод nut-cgi меня не очень устроил:

поэтому я нарисовал свой сайтик с бэкджеком и шлю визуализацией данных от ИБП:

Ссылки:
http://www.ignix.ru/book/freebsd/daemon/network_ups_tools
https://sites.google.com/site/plan0metr/home/nut
http://www.linux.kiev.ua/materials/How-to-use-UPS-with-nut.html

DIR-320. Обратное питание по USB

У меня дома есть маршрутизатор D-Link DIR-320/A2E с изменённой прошивкой (сначала я скомпилировал для него OpenWRT по мануалу от dipcore (архивная ссылка), затем мне понадобился на этом роутере php, т. к. я его ещё и как сервер использую, и теперь на нём живёт практически полноценный Debian с шахматами и поэтессами).

Показать

Выглядит это так:

Приведу необходимые пояснения (на схеме и по тексту):

К стенке  стола привинчены два маршрутизатора, D-Link DIR-615/B2G и D-Link DIR-320/A2E. DIR-615 со штатной прошивкой служит шлюзом в сеть провайдера и интернет. DIR-320 с дебианом на борту связан со шлюзом по беспроводной сети и работает домашним DNS-, NTP-, принт-, файл-сервером эт цетера. На этом-же устройстве настроен apache с несколькими сайтами. Для обеспечения загрузки ОС используется накопитель USB-флеш LG UB2GVMNPB объёмом 2 ГБ, включённый в активный 10-портовый USB-хаб CBR CH 310. Для питания роутера с дебианом использовался стандартный блок питания D-Link номиналом 5 В 2,5 А. Для USB-хаба — его родной БП 5 В 2 А.
Вчера возникла необходимость перегрузить дебиан-маршрутизатор по питанию — поставил на нём vsftpd для складирования изображений с камеры на локальный FTP, но привинченный phpAlbum.net подвис, пытаясь вычитать со всех фоток EXIF-данные сразу. В сетевой удлинитель у меня было воткнуто 3 блока питания — для DIR-615, для DIR-320 и для USB-хаба. Вытащил соответствующий БП, смотрю — роутер остался включённым. Я слегка охренел. Вставил его БП обратно, вытащил другой (USB-хаб). (DIR-320 остался работать).

Ладно, вставил на место, вытащил третий (от DIR-615). Результат не поменялся. При всех выключенных БП он наконец-то погас. Я попробовал включить только его БП, роутер стал загружаться, но без доступа к хабу и, соответственно, к флехе с системой он бы не загрузился. Я вытащил его питание (роутер погас), включил питание USB-хаба и увидел, что DIR-320 опять загружается! Теперь у меня такая итоговая схема соединения железок:

И маршрутизатор вполне себе функционирует нормально:

Принцип прямого соединения внешнего питания с цепью +5 В питания USB-хоста мне уже знаком, но то, что это реализовали в DIR-320 — для меня было открытием. Подобную ситуацию нагуглил только в одном месте — на cxem.net.

Кстати, при такой схеме подключения есть опасность повреждения контроллера USB при отключении хоста от сети и включенном питании хаба (хотя изменение скважности у импульстого БП никто не отменял). У этой железки устраняется удалением элемента с обозначением 000 возле гнезда питания при снятой задней крышке хаба. Для работы без внешнего питания потребуется установить на это место диод Шоттки.

P. S. Справедливости ради нужно сказать, что мне пришлось вернуть старую схему питания устройств, т. к. питания от USB-хаба оказалось недостаточно (роутер перезагружался при load average больше 0,5).

(вторая серия) Восстановление маршрутизатора TP-Link TL-WR841ND v8.1

Часть вторая.


Так уж получилось, что небезивестный маршрутизатор, данный мне на восстановление, опять попал ко мне. Знакомый (который админ) умудрился в свойствах сети интерфейса LAN выставить тип соединения PPPoE вместо Static IP, а затем ещё я его попытался сбросить кнопной Reset во время загрузки. Соответственно на рутер не попасть — нет IP, в FailSafe-режим он не попадает, вернее попадает, но не доступен по IP (кстати — хз почему).

Показать

Я опять вскрыл железку, припаял кабель, и попал в нормальную консоль OpenWRT.
После команд

mtd -r erase rootfs_data

(стирание настроек)
и

reboot

(ребут )
маршрутизатор загрузился, запинговался и начал делать всё, что положено свежепрошитому на OpenWRT роутеру без root-пароля.

Затем в WEB-морде роутера настроил VLAN 1 и 2 (по старому мануалу). Но при установке во вкладке Physical settings окна свойств LAN (раздел Network->Interfaces) значения eth1.2 после нажатия кнопки «Применить» роутер переставал отвечать на ICMP и вообще прекращал всю IP-деятельность. Помогла команда перезагрузки сети в консоли:

/etc/init.d/network restart

Путём несложных манипуляций (перетыкания конца пач-корда в разные порты рутера) я выяснил, что у данной модели порт LAN1 соответствует порту 2, LAN2 — порту 3, LAN3 — порту 4, LAN4 — порту 1. Порт 0 — это непосредственно ETH-контроллер на SoC (eth1).

К этому моменту у меня в голове сложилась такая картина распределения сетевых обработок:

После моей настройки стало вот так:

При выполнении команды

swconfig dev eth1 show

выводится вот такой результат:

Global attributes:
        enable_vlan: 1
Port 0:
        pvid: 0
        link: port:0 link:up speed:1000baseT full-duplex txflow rxflow
Port 1:
        pvid: 2
        link: port:1 link:down
Port 2:
        pvid: 0
        link: port:2 link:down
Port 3:
        pvid: 1
        link: port:3 link:up speed:100baseT full-duplex auto
Port 4:
        pvid: 2
        link: port:4 link:down
VLAN 0:
        vid: 0
        ports: 0t 2
VLAN 1:
        vid: 1
        ports: 0t 3
VLAN 2:
        vid: 2
        ports: 0t 1 4

Небольшое лирическое отступление.
Хочу сказать, почему нельзя шить файл родной прошивки без слова "boot" в имени.

Это связано с ее большим размером. Если длина файла прошивки больше, чем 0x7c0000, то, скорее всего, это означает наличие кода загрузчика в его начале.

Можно для уверенности файл стоковой прошивки открыть в Hex-редакторе и если увидим:

0x00000000

... нечитаемые кракозябры ...

0x00019000

... нечитаемые кракозябры ...

0x00020000

01 00 00 00 54 50 2D 4C 49 4E 4B 20 54 65 63 68

TP-LINK Tech

0x00020010

6E 6F 6C 6F 67 69 65 73 00 00 00 00 76 65 72 2E

nologies ver.

0x00020020

20 31 2E 30 00 00 00 00 00 00 00 00 00 00 00 00

1.0

то этим файлом не стоит шить железку (по крайней мере — не через программатор).

А если наблюдаемая картина похожа вот на эту:

0x00000000

01 00 00 00 54 50 2D 4C 49 4E 4B 20 54 65 63 68

TP-LINK Tech

0x00000010

6E 6F 6C 6F 67 69 65 73 00 00 00 00 76 65 72 2E

nologies ver.

0x00000020

20 31 2E 30 00 00 00 00 00 00 00 00 00 00 00 00

1.0

то (скорее всего) — можно.

Как видно, прошивка во флеш-памяти ТP-Link начинается с адреса 0x00020000, а до этого располагается загрузчик.

Источник
Конец лирики

Для теста настроил роутер как PPTP-клиент (провайдер в моём районе пока не ввёл DHCP), результаты теста скорости:

Симферополь

Москва

Барселона

Киев

Лейпциг

Манчестер

Скорость доступа по кабельной сети к локальным ресурсам провайдера — 56 (загрузка) и 79 (отдача) Мбит/сек.

Справедливости ради хочу отметить, что устойчивость и качество соединения до провайдера по моим органолептическим ощущениям было в целом хуже, чем у предыдущей используемоей мною модели — D-Link DIR-615 аппаратной ревизии B2 со стоковой прошивкой версии 2.27RU. Возможно — это связано с повреждением аппаратуры роутера молнией и/или моими экспериментами 

Восстановление маршрутизатора TP-Link TL-WR841ND v8.1 [debrick]

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

Показать

Принёс мне знакомый админ роутер  TP-Link TL-WR841ND v8.1, вот такой:


Во время грозы у него выбило порты WAN и LAN1. Знакомым железка была прошита на DD-WRT с целью переназначения WAN-порта на какой-нибудь LAN. Я решил поставить на маршрутизаторе прошивку Open-WRT и благополучно превратил устройство в кирпич:

  • при включении горит только индикатор питания,
  • остальные индикаторы одновременно загораются и тухнут через 1 секунду,
  • при подключении роутера к компьютеру интерфейс линк не поднимает и роутер по сети не доступен.

Ясно, что роутер теперь с полностью стертой или поврежденной прошивкой. При вскрытии устройства на плате обнаружен нераспаянный последовательный порт JP1:

После этого в загашниках был найден USB-кабель DCA-510 на микросхеме CP2101 с уровнями напряжения 3,3В, вот такой:

Я отрезал Lumberg-разъём: 

В интернете нашёл электрическую схему кабеля:


Прозвонил разъём и узнал цвета проводов Vcc, GND, Tx и Rx (в моём случае они были такие: жёлтый, красный, синий и белый соответственно). Полная распиновка разъёма:

На плате роутера к последовательному порту подпаялся так, как указано на рисунке (последовательно слева направо — не подключен, красный, белый, синий):

Пач-корд от компьютера вставил в живой LAN-порт (LAN3). На сетевом интерфейсе компьютера установил IP-адрес 192.168.0.2/30 и настроил демон tftpd, с помощью которого файл прошивки будет залит в устройство (пользователям Windows рекомендую воспользоваться программой  TFTPD32). С официального сайта TP-Link скачал прошивку. Причём (по указанию мануалов) скачивал файл без слова "boot" в имени. Положил скачанный файл прошивки в папку, настроенную в конфигурации tftpd, переименовав его в firmware.bin. Включил роутер и вставил USB-кабель в компьютер.

При включении кабеля в USB-порт компьютера он определился как новое устройство /dev/ttyUSB0 (у пользователей Windows появится новое устройство Serial Data Cable, создающее виртуальный COM-порт и требующее установки драйверов). После запуска команды

sudo minicom --device /dev/ttyUSB0

(пользователи Windows могут воспользоваться программой HyperTerminal, PuTTY или  KiTTY) и установки скорости обмена в 115200 бод 8N1 я увидел на экране диагностические сообщения и периодически появляющуюся надпись "Autobooting in 1 seconds ...". Сразу после очередного появления этого сообщения быстро набрал на клавиатуре tpl. Система перешла в режим ожидания команд, индикаторы роутера перестали мигать и сетевое подключение, не активное до этого, стало активным.

Затем я ввёл команды для заливки прошивки в железку:

setenv serverip 192.168.0.2

(установка IP-адреса, с которого будет залит файл прошивки в память)

setenv ipaddr 192.168.0.1

(установка IP-адреса оживляемого устройства)

tftpboot 0x81000000 firmware.bin

(скачивание файла прошивки с компьютера в память устройства (во временную область, начиная с адреса 0x81000000). Если при выполнении этой команды идет строчка Т Т Т Т Т Т, то это означает Timeout (нет ответа от 192.168.0.2). Должно быть заполнение экрана символами ##########.

erase 0x9f020000 +0x3c0000

(подготовка (очистка) блока памяти с адреса 0x9f020000 под прошивку длиной 0x3c0000 байт (3932160 в десятичной системе)

cp.b 0x81000000 0x9f020000 0x3c0000

(копирование блока памяти с адреса 0x81000000 в адрес 0x9f020000 длиной 0x3c0000 байт)

bootm 0x9f020000

(передача управления программе по адресу 0x9f020000)

Роутер перезагрузился и стал отвечать на ICMP-запросы с адресом 192.168.0.1. Половина дела сделано, железку я поднял с родной прошивкой, но с не рабочим WAN-портом.

Лог первой загрузки системы на реанимированном устройстве

Вторым этапом я скачал файл прошивки Open-WRT для данной модели и аппаратной ревизии роутера (Attitude Adjustment 12.09, r36088). В WEB-интерфейсе настройки зашел в пункт Система/Обновление ПО и выбрал скачанный файл. На сетевом интерфейсе компьютера поставил IP-адрес 192.168.1.2/30. После перезагрузки маршрутизатора он стал отвечать на ICMP-запросы с адреса 192.168.1.1. В терминальном окне я набрал telnet 192.168.1.1 и командой "passwd" установил пароль пользователя root. Скачанная прошивка идёт уже с WEB-интерфейсом LuCI, поэтому зайдя по адресу http://192.168.1.1 с браузера компьютера я увидел приглашение системы роутера для ввода логина и пароля.

В разделе Network -> Switch создал два влана:
VLAN1: CPU tagget и LAN2 untagget (это порт, который будет новым WAN-портом), остальные – off,
VLAN2: CPU tagget и LAN3 и LAN4 untagget, LAN1 off.
Сохранил и применил изменения.
В разделе Network -> Interfaces удалил старый интерфейс WAN и создал новый с именем NEWWAN, указав интерфейс VLAN eth1.1.
Сохранил и применил изменения.
В разделе Network -> Interfaces редактирую LAN (закладка Physical Settings), поставив галки напротив интерфейсов VLAN eth1.2 и Wireless Network: «OpenWrt».
Сохранил и применил изменения.
System -> Reboot — перегрузил роутер. Теперь у него роль WAN играет порт LAN2, а битый порт LAN1 отключён.

Лог загрузки маршрутизатора TP-Link TL-WR841ND v8.1 после сброса

Лог загрузки маршрутизатора TP-Link TL-WR841ND v8.1

Использованные ресурсы и ссылки:
Тема форума на dd-wrt.com
Инструкция по поднятию TL-WR1043ND с аналогичными симптомами
Тема форума на unixforum.org

P.S. — продолжение истории читайте тут: (вторая серия) Восстановление маршрутизатора TP-Link TL-WR841ND v8.1

D-Link DIR-300A/C1

С десяти часов утра до пяти вечера (с перерывом на обед) мучал D-Link DIR-300A/C1 на предмет корректного восстановления сессии при обрыве PPTP VPN-туннеля. В Debian — частично заработало, в Windows — нет. Грустно.

2013   D-Link   работа   роутер   сисадминство
Наверх