Как стать автором
Обновить

Надежная связь при использовании модема «Yota Street»

Время на прочтение4 мин
Количество просмотров7.5K
В условиях загородного дома тоже хочется иметь качественный и быстрый доступ в интернет.

К сожалению, проводной интернет за городом не всегда возможен ввиду отсутствия проводов (телефонных и/или сетевых от провайдера интернета). А даже при наличии телефонных проводов в доме и установленного на АТС оборудования ADSL, состояние «последней мили» таково, что передача данных по технологии ADSL невозможна (или возможна на таких низких скоростях, что провайдеру ADSL это совершенно не интересно).

В такой ситуации на выручку приходит беспроводной доступ в интернет.

Но и с ним не так все оказывается просто, как того бы хотелось.

Некоторое время назад в нескольких километрах от моего загородного дома Yota установила свою базовую станцию и, судя по карте охвата, мой дом оказался в «зоне уверенного приема» этой сети.

Попытки использования USB-модема от Yota показали неудовлетворительный результат: даже на балконе третьего этажа обращенного к базовой станции уровень сигнала чрезвычайно мал, скорости обмена данными 100-200 килобит в секунду (то есть меньше 25 килобайт в секунду).

Как раз в это время Yota начала продажи своего нового устройства — уличного модема «Yota Street».

Плюсы этого устройства:
  1. Направленная антенна — высокий коэффициент усиления и чувствительность на порядки превосходящие USB-модем (зимой, когда листва на деревьях не встает на пути радиоволн, скорость на прием бывает до 5-6 мегабит в секунду, а на передачу чуть меньнее того, летом стабильно держится 2 мегабита в обе стороны).
  2. Уличное исполнение — то есть можно и нужно вынести антенну на мачту высоко над крышей.
  3. Питание «Power Over Ethernet» — всего один провод для данных и питания.
  4. Подключается в порт WAN любого роутера, роутер по DHCP получает всю необходимо информацию о внешней сети.

Казалось бы, просто сказка. Включил и наслаждайся. Но, коротким было счастье.

Как только устройство появилось в продаже, оно было приобретено и водружено на крышу дома.
Новое устройство показало себя не с самой лучшей стороны: соединение с сетью Yota периодически обрывалось и для его восстановления приходилось лезть в вэб-интерфейс роутера и до остервенения кликать по кнопке «Подключиться». Иногда соединение возобновлялось, иногда нет. Приходилось на 15-30 минут отключать питание и модему и роутеру.

Все обращения в техподдержку Yota заканчивались предложением показать модем в сервис. Некоторые владельцы соглашались и им иногда даже меняли устройство целиком. Однако, потом выяснялось, что и совершенно новое устройство ведет себя в точности так же.

Потом стали появляться слухи о том, что Yota готовит обновление прошивки «Yota Street», однако, этому так никогда и не суждено было сбыться. Yota просто свернула продажи «Yota Street» и владельцы сего чудесного устройства остались наедине со своими проблемами.

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

Мой опыт использования «Yota Street» и обсуждения на форуме YotaTester привели меня к следующим 2-м заключениям:
  1. Нужно периодически, например раз в сутки, перезагружать модем чтобы у него не образовывался слишком большой uptime в результате которого устройство переставало адекватно работать.
  2. Нужно заставить роутер обнаруживать обрыв связи и пытаться восстановить соединение (как ранее я делал это руками из вэб-интерфейса роутера).


Первая задача решается просто: покупаем электрический таймер и программируем его на отключение питание ночью с 3-00 до 3-15.
Вторая задача решается несколько сложнее. К счастью роутер у меня оказался не простой, а хорошо известный в узких кругах Asus Wl-500gp. Уже некоторое время он работал под управлением «прошивки от энтузиастов».

Поиски в интернете показали, что в данной прошивке (впрочем, как и во многих других альтернативных прошивках) возможно подключение скриптов для набора событий:
  • pre-boot — выполняется до начала загрузки
  • post-boot — выполняется после окончания загрузки
  • … и так далее...

Мне как раз и была нужна возможность запускать свой скрипт после полного «нормального» старта роутера.

Осталось написать скрипт, следящий за соединением.

И снова поиски в интернете принесли результат: скрипт «always_on» с сайта DD-WRT оказался именно тем, что я искал.
Роутер пингует default gateway и в случае отсутствия ответа, посылает новые запросы discovery от DHCP клиента.

Однако, я немного доработал скрипт с тем, чтобы случайные потери пакетов пинга не приводили к сбросу соединения: только N подряд неудачных пинга ведут к переподключению.

Результат оказался весьма обнадеживающим — доступ в интернет есть практически всегда, лишь порой соединение пропадает с тем чтобы через пару минут восстановиться.

Ну и уж коли я занялся скриптописательством, я добавил еще 2 простых, но весьма полезных скрипта:
  1. Установка MTU равное рекомендованному Yota 1400 байт. Сложно сказать, повлияло ли это и как сильно на скорость и стабильность работы, но хочется верить, что хуже не стало.
  2. Проброс вэб-интерфейса Yota-street в локальную сеть. Дело в том, что этот самый веб-интерфейс изначально доступен при непосредственном подключении к устройству по фиксированному адресу: 192.168.1.1. При этом по DHCP роутер от модема получает адрес в совершенно другой подсети (внутренней подсети Yota), то есть из локальной сети за роутером вэб-интерфейс модема недоступен. Однако, iptables позволяют решить и эту проблему.
  3. И в довершение для своего удобства я оформил в виде скрипта команды для сохранения изменений файловой системы во внутреннюю flash-память.

Итак, у меня получилось 3 «боевых» скрипта и один сервисный.

Для большей гибкости и возможности в дальнейшем модифицировать набор запускаемых скриптов, я реализовал систему наподобие обычных стартовых скриптов в Linux: сложил все скрипты для запуска после загрузки в одну папку "/usr/local/sbin", назвал их с префиксами «SXX» и еще одним скриптом запускаю их в порядке возрастания индекса в префиксе.

Если коротко, то теперь настройка роутера сводится к следующему:
  1. Логинимся на роутер через telnet и переходим в папку "/usr/local/sbin"
  2. Кладем в папку "/usr/local/sbin/" «боевые скрипты»: S10setmtu, S20alwayson и S30yotadmin
  3. Туда же кладем 2 сервисных скрипта: post-boot, который и запускает «боевые скрипты»; и flash.sh, при помощи которого мы сохраняем изменения файловой системы во flash-память роутера.
  4. Запускаем flash.sh: ./flash.sh
  5. Перезагружаем роутер: либо командой reboot в терминале, либо передергиваем питание.


Вуаля, интернет работает и радует пользователей!
Теги:
Хабы:
+33
Комментарии13

Публикации

Изменить настройки темы

Истории

Ближайшие события

PG Bootcamp 2024
Дата16 апреля
Время09:30 – 21:00
Место
МинскОнлайн
EvaConf 2024
Дата16 апреля
Время11:00 – 16:00
Место
МоскваОнлайн
Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн