Привет!
Указанный в заголовке роутер очень часто ставился Ростелекомом в качестве шлюза для домашнего интернета. Сейчас они уже считаются устаревшими и зачастую просто валяются без дела. У меня таких скопилось три штуки и один из них используется для раздачи интернета беспроводным клиентам в сети.
Меня не устраивало то, что в устройстве нет полноценной настройки dhcp и сейчас я расскажу, что с этим сделал.
Упрощённо интересующий нас сегмент сети можно проиллюстрировать изображением ниже, но суть статьи не в этом, а в том, как получить немного больше от роутера:
Естественно, сеть не статична, она время от времени меняется и главным источником изменений являются мобильные телефоны, которым подавай автоматическую настройку подключения. У роутера на вкладке Advanced Setup / LAN имеются следующие параметры dhcp-сервера:
И, как можно заметить, здесь нет настраиваемого параметра «основной шлюз», в качестве которого роутер просто передаёт свой собственный ip-адрес, чего в обычных условиях использования этого оборудования достаточно.
Долгое время dhcp-сервером работал маршрутизатор 192.168.1.101, но однажды мне мною же была поставлена задача исправить эту несуразицу и всё-таки настроить dhcp на роутере.
Перво-наперво был найден пароль администратора этой железяки. Это не секрет, информация размещена в открытом доступе, в том числе и на форуме производителя оборудования. user: admin, password: kW5i_1bYC6os
К сожалению, вход админом в веб-интерфейс проблему не решил — искомая настройка не появилась.
Зато этот же логин подходит к телнету:
Включить telnet можно в настройках роутера прямо из-под user-а в разделе Management / Access Control
Запускаем шелл (admin / eltexpon):
sh admin
На роутере используется сервер udhcpd, его конфигурационный файл находится в /var/udhcpd/udhcpd.conf. Изменяем конфиг так, как нужно нам:
vi /var/udhcpd/udhcpd.conf
decline_file /var/udhcpd.decline interface br1 start 192.168.1.230 end 192.168.1.254 option lease 86400 min_lease 30 option subnet 255.255.255.0 option router 192.168.1.101 option dns 8.8.8.8 option dns 8.8.8.8 option domain Home
перезапускаем сервер
/usr/bin/killall udhcpd /bin/udhcpd &
и видим, что теперь основной шлюз передаётся клиентам так, как нужно нам.
Всё это работает только до перезагрузки, т.к. конфиг udhcpd создаётся заново при включении устройства, однако, способ подсунуть настройки всё-таки есть.
ВНИМАНИЕ! Далее делайте всё аккуратно и только если понимаете, что происходит.
Всё, что будет сделано ниже НЕ отменится сбросом роутера на заводские настройки, соответственно шанс окирпичить роутер крайне высок!
Сначала перемонтируем корневую ФС для записи:
mount -o remount,rw /
Скопируем наш конфиг в корень (хотя можно и создать каталог для этих целей):
cp /var/udhcpd/udhcpd.conf /udhcpd.conf
и внесём в него необходимые изменения. Затем создадим скрипт, задачей которого будет перезапись конфига из корня в /var/udhcpd и перезапуск сервера.
#! /bin/sh # защитный интервал (устройство грузится долго и скрпит отрабатывает раньше, чем создаётся конфиг) sleep 60 # замена конфига rm /var/udhcpd/udhcpd.conf cp /udhcpd.conf /var/udhcpd/udhcpd.conf # перезапуск сервера /usr/bin/killall dhcpd /usr/bin/killall udhcpd /bin/udhcpd &
Автозапуск на роутере реализован с помощью /etc/init.d (а вот /etc/rc.local не работает), притом я не смог зарегистрировать запуск своего скрипта по неизвестной для меня причине, поэтому просто изменил уже имеющийся там скрипт rcS, добавив в него «/dhcp.sh &»
#! /bin/sh PATH=/sbin:/bin export PATH mount -t proc proc /proc /bin/mount -a /dhcp.sh &
Конечно, можно применить более изящное решение для исправления файла. Sed на устройстве отсутствует, но можно обойтись и без него, например, сделав скрипт /dhcp.sh таким:
#!/bin/sh #защитный интервал, т.к. устройство достаточно медленное sleep 60 # создание временного файла temp_file=$(mktemp) # чтение конфига while IFS= read -r line; do # если натыкаемся на строку, с option router, то записываем вместо неё option router 192.168.1.101 if [[ "$line" =~ ^option\ router ]]; then echo "option router 192.168.1.101" >> "$temp_file" else echo "$line" >> "$temp_file" fi done < "/var/udhcpd/udhcpd.conf" # заменяем оригинальный файл временным mv "$temp_file" "/var/udhcpd/udhcpd.conf" #перезапуск сервера /usr/bin/killall dhcpd /usr/bin/killall udhcpd /bin/udhcpd &
Главная цель статьи — рассказать, как заходить на роутер NTP-RG-1402G-W и расширять его сознание, а применение таким знаниям можно найти и за пределами описываемой задачи.
Удачи!
ссылка на оригинал статьи https://habr.com/ru/articles/872464/
Добавить комментарий