LINUX.ORG.RU

Как настроить автоматическое переподключение роутера-репитера на OpenWrt при разрывах?

 , , , ,


0

1

Есть в наличии роутер TP-LINK с прошивкой OpenWrt который работает в режиме репитера. Всё бы хорошо, да вот только связь по WI-FI примерно раз в несколько часов обрывается, после чего этот роутер на OpenWrt сам не переподключается к точке доступа. После каждого разрыва нужно или в админке роутера нажимать кнопку переподключения интерфейса или просто выключить и включить этот роутер после чего все работает еще несколько часов. Вопрос из выше описанного следующий: Реально ли заставить роутер на данной прошивке автоматически переподключатся к точке доступа сразу же после обрыва соединения? Если это вообще реально, то как это сделать? Прошу не предлагать поставить супер мощные антенны и задействовать передатчики более 100 мВт и т.д. Антенны направленные уже стоят, из них выжат максимум, скорость передачи данных хорошая, но регулярные разрывы портят всю малину.


Ответ на: комментарий от Prosto_user

Да, написать скрипт, который будет перезапускать интерфейс при разрыве соединения.

Дело в том что я не программист. Если бы в готовый скрипт вписать названия своих интерфесов, то так я бы пропробовал, а написать скрипт с нуля сам не смогу.

MRX256
() автор топика
Ответ на: комментарий от MRX256

Взял здесь.

#!/bin/sh
echo --------------- --------------- --------------- --
echo WAN CONTROLL RESTART
echo --------------- --------------- --------------- --
PINGRESORCE1="ya.ru"
PINGRESORCE3="google.com"
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
reboot
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi

Замени reboot на нужную команду.

Prosto_user ★★★
()
Ответ на: комментарий от Prosto_user

Пинговать как минимум второй раз лучше ip, чтобы исключить проблемы с dns. И вообще, отсутствие пинга бывает не показательно. Могут резать из-за перегруженности каких-то узлов.

anonymous
()
Ответ на: комментарий от Prosto_user

Замени reboot на нужную команду.

Я решил для начала протестировать конкретно этот скрипт без изменений для того чтобы понять будет ли он работать или другими словами правильно ли я все делаю. Делал так:

  1. Создал на компе текстовый файл и назвал его ping.sh скопировал в этот файл скрипт и сохранил изменения в файле.
  2. Скопировал файл ping.sh по ssh в роутер в каталог /root
  3. Перезапустил роутер, затем отключил антенну чтобы соединение упало, соответственно ожидал перезагрузки роутера но этого не произошло.
  4. Далее вспомнил такую команду chmod +x /путь к файлу в моем случае /root/ping.sh выполнил эту команду, заново перезагрузился, отключил антенну, соединение упало, но роутер снова не перезагрузился.

Что я не так делаю для того чтобы этот скрипт срабатывал? И еще, вместо reboot мне надо переподымать интерфейс WWAN или radio1. Какую команду написать вместо reboot в моем случае?

MRX256
() автор топика
Последнее исправление: MRX256 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Пинговать как минимум второй раз лучше ip, чтобы исключить проблемы с dns. И вообще, отсутствие пинга бывает не показательно. Могут резать из-за перегруженности каких-то узлов.

Позволь пару вопросов на этот счет:

  1. Обязательно ли пинговать второй раз вообще если конкретно меня интересует соединение с роутером а не наличие в нем интернет соединения?
  2. Какие IP ты имеешь виду, ip сайтов, например того же гугла или что? В моем случае, можно ли ограничится только пингом стандартного ip роутера 192.168.0.1 ?
MRX256
() автор топика
Ответ на: комментарий от anonymous

Думаешь, что сам скрипт запускать не нужно?

Будь добр, подскажи как его правильно запускать?

MRX256
() автор топика
Ответ на: комментарий от MRX256

Что значит «правильно»? Антенну отрубай и запускай ./ping.sh из директории, где скрипт лежит.

anonymous
()
Ответ на: комментарий от anonymous

Что значит «правильно»? Антенну отрубай и запускай ./ping.sh из директории, где скрипт лежит.

Сделал так, скрипт работает, роутер перезагружает, но мне надо чтобы скрипт перезапускал интерфейс WWAN или radio1 вместо команды reboot. Что именно мне нужно прописать вместо reboot чтобы перезапускался нужный мне интерфейс?

MRX256
() автор топика

Короче поковырялся я и решил этот вопрос. Оставлю здесь инструкцию как я это сделал, может быть кому то пригодится. Сначала создал текстовый файл, который назвал ping.sh в него вписал этот скрипт:

#!/bin/sh
echo --------------- --------------- --------------- --
echo WWAN CONTROLL RESTART
echo --------------- --------------- --------------- --
PINGRESORCE1="192.168.0.1"
PINGRESORCE3="178.248.233.6"
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
ifdown wwan
ifup wwan
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi

далее создал новый текстовый файл с названием root в который вписал строку */1 * * * * /etc/ping.sh Затем подключился к роутеру по SSH и скопировал созданные файлы в роутер. Файл ping.sh скопировал в каталог /etc а файл root в каталог /etc/crontabs затем выполнил команду chmod +x /etc/ping.sh и перезагрузил роутер. Теперь WI-FI переподключается автоматически при разрывах. Каждый разрыв теперь может длится не больше 1 минуты. Спасибо тем кто пытался мне помочь, без вас я бы вообще не разобрался.

MRX256
() автор топика
Последнее исправление: MRX256 (всего исправлений: 2)
Ответ на: комментарий от MRX256

Спасибо тем кто пытался пытался

Вот и помогай после этого людям.

anonymous
()
Ответ на: комментарий от anonymous

А это норм? PINGRESORCE3=«178.248.233.6» ${PINGRESORCE2} Кнопкотыки херовы.

Заметил косяк. И что, при таком раскладе IP адрес 178.248.233.6 не пингуется?

MRX256
() автор топика
Ответ на: комментарий от anonymous

Исправил скрипт, теперь он выглядит вот так и тоже работает.

#!/bin/sh
echo --------------- --------------- --------------- --
echo WWAN CONTROLL RESTART
echo --------------- --------------- --------------- --
PINGRESORCE1="192.168.0.1"
PINGRESORCE2="178.248.233.6"
if (! ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
ifdown wwan
ifup wwan
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
MRX256
() автор топика
19 февраля 2022 г.
Ответ на: комментарий от MRX256

Ставьте Watchcat - network watchdog utility и никаких танцы с бубоном

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.