Прошивка NETSHe(OpenWRT) на TL-WR1043ND

TL-WR1043ND
Месяца 3 назад приобрел себе указанный роутер. Прошивку его сперва не менял, только обновил на последнюю на тот момент. Мне даже понравилась фишка “из коробки”, что можно 3 и 4 LAN порты соединить бриджом с WAN, что позволило без лишних телодвижений подключить IPTV приставку. Интернет тогда был от Ростелекома через ADSL и, соответственно PPPoE. Линк держался, роутер не перезагружался и не глючил.

И тут угораздило меня попробовать интернет от Билайна. Сказано – сделано. Через 2 дня пришли ребята, вручили билайновскую IPTV приставку и прикольный 5 портовый свич :) Настраивать мой роутер отказались, подняли VPN на ноуте и ушли.

Стал настраивать роутер. Настроил. Правда сразу все как-то не так пошло. То сам после включения линк не поднимал, то переподключался по паре минут. С горем пополам линк подняли, сеть появилась.

Прошла неделя. Вечером заметил, что как-то плохо инет работает. Сайты через раз грузятся. В танчиках вообще ужас – как будто через GPRS вылез. Лезу в админку роутера – не тут то было. Не отзывается. Пришлось перезагружать физически. Так продолжалось чуть больше месяца.

И тут терпение мое лопнуло, стал искать альтернативу заводской прошивке.

  1. dd wrt – отклонено из-за проблем с производительностью wi-fi на чипах atheros.
  2. open wrt и gargoyle – с удивлением узнал, что не поддерживают L2TP “из коробки”. А лезть через консоль на домашний роутер? Да ну нафик, не царское это дело.
  3. на русском форуме tp-link узнал о существовании прошивки на основе open wrt от NETSHe Lab. Заинтересовался. Первое впечатление было положительным, L2TP поддерживает. Ставим.

Поставилось ну очень просто. Идем по ссылке http://www.netshe.ru/files/NETSHe-1.2/ и качаем файл …..tl-wr1043nd-sysupgrade.bin.

Внимание!
Файл sysupgrade нужен в случае установки на заводскую прошивку! В случае обновления предыдущей версии NETSHe или установки поверх OpenWRT нужен файл …tl-wr1043nd.bin

На форумах рекомендуют перед заливкой новой прошивки отключить кабель от WAN, сбросить настройки на дефолтные и перезагрузить роутер (хотя после сброса он и так перезагрузится). Я так и сделал.

Так вот залил я значит прошивку и давай ее настраивать. Вроде бы настроил, а линка нет (ну, то что я после заливки забыл WAN обратно воткнуть – опустим :) ). В логах –  daemon.warn xl2tpd[3428]: Host name lookup failed for tp.internet.beeline.ru . Думал. Долго думал, минут 10. Пошел еще раз кабели проверять. А линка то на WAN как не было так и нет! Пробовал переподключать, перезагружать – ничего не помогает. В LAN портах линк есть, а в WAN – нет. Что-то стало проясняться.

Оказалось, что на этой модели роутера это известный баг/фича. В конце 2011 года китайцы выпустили прошивку, которая устраняла такую проблему: при включении роутера на WAN интерфейсе “светились” MAC адреса LAN устройств. За что некоторые провайдеры банили порт. А исправили они своеобразно: загрузчик роутера просто выключает WAN порт. А прошивка, стало быть, после полной загрузки – включает.

Но OpenWRT о таких причудах ничего не знает, и ожидает, что все порты будут рабочими. Поэтому нам нужен загрузчик, который не будет отключать WAN. Взять его можно от старой прошивки. Но тут главное не торопиться.

Дело в том, что если из интерфейса OpenWRT/NETSHe залить прошивку с загрузчиком, то получим “кирпич”. Почему – не знаю. Но сообщения на форумах подтверждают это. А заливать надо родную прошивку с “отрезанным” загрузчиком. Тут написано как получить такую из любой. Мне это показалось как-то не надежно. Поэтому нашел готовые прошивки без загрузчика и с загрузчиком, не отключающим WAN. Итак:

  1. Если вы уже сменили стандартную прошивку на OpenWRT/NETSHe, то качаем эту прошивку. Если прошивку еще не меняли, то переходите к п. 3.
  2. Заливаете прошивку через пункт “Утилиты/Установка новой прошивки”.
  3. Заходите на адрес http://192.168.1.1/ и заливаете уже вот эту прошивку.
  4. После этого уже со спокойной совестью еще раз заливаете NETSHe и радуетесь работающему WAN.

Через пару недель отпишусь что у нас со стабильностью L2TP.

upd.:через 11 суток аптайма заметил до боли похожие проблемы. Правда исключительно с youtube. После перезагрузки сабжа (админка работала как часы, никаких проблем) – все стало намного лучше. То ли показалось, то ли Open WRT не помогает – не знаю. Очень хотелось бы первое. Если нет – то придется возвращаться обратно на Ростелеком.
Кстати! Кто-нибудь знает способ подключиться с Билайну без VPN? Локалка мне их даром не нужна, обычный DHCP был бы идеален :)

JSCoverage — что за зверь

Всем привет.

Дали на работе задачу прикрутить к нашему JavaScript проекту JSCoverage. Прикрутил :)  Правда потратил на это пару часов, в основном на изучение. Напишу несколько очевидных фактов, которые помогли бы мне сделать все быстрее, если бы я их знал раньше.
Итак, что вообще такое JSCoverage? Это JS библиотека для анализа покрытия JS кода тестами. Как она работает с точки зрения пользователя (т.е. нас, тех кто ее использует): «натравливаем» программу jscoverage.exe на папку со своими скриптами и тестами, получаем на выходе нечто + jscoverage.html, открыв который в браузере, видим собственно покрытие (поглядеть можно тут).
Теперь предположим, что страница с тестами вашего кода у вас уже есть. QUnit или нет — не важно. Как узнать процент покрытия вашего кода этими тестами с помощью JSCoverage? Чтобы это понять достаточно немного «заглянуть под капот» библиотеки, и понять как же она работает. А работает она так: после выполнения команды
jscoverage SOURCE-DIRECTORY DESTINATION-DIRECTORY
в DESTINATION-DIRECTORY получаем полную копию SOURCE-DIRECTORY, за исключением того, что все *.js файлы библиотека «переколбашивает» под себя. На основную функциональность кода это не влияет. Он по-прежнему делает то, что и задумано, но в добавок к этому еще ведется сбор статистики, необходимой для анализа покрытия. Теперь, если что-то вызывает методы из этого скрипта, магия JSCoverage начнет работать, процентики начнут считаться. Как же их (процентики) теперь увидеть? Для этого есть 2 варианта (точнее их, конечно, больше, но мы рассмотрим только вариант «ручного» анализа в браузере).

  1. Открыть в браузере файл jscoverage.html и уже в нем, в строке URL набрать адрес страницы с тестами.
    Главное, чтобы эти тесты инклудили не исходные JS файлы вашей библиотеки, а обработанные JSCoverage-ем.
  2. Еще более простой способ — сразу запустить свои тесты на выполнение (опять таки заинклудив преобразованные скрипты), а в конце вызвать
    window.open('path/to/jscoverage.html');
    это приведет к появлению окна с jscoverage.html сразу после прогона тестов.

Если вы ведете разработку в visual studio, то можно воспользоваться вот таким скриптом для автоматического запуска анализатора покрытия

Для других сред можно сделать аналогичную автоматизацию, хотя бы в виде *.cmd файла. Будут вопросы — спрашивайте.

Восстановление GRUB на soft RAID

В качестве вступления: на root серверах Hetzner по умолчанию (если ставить систему автоматом при заказе) используется софтовый RAID-1 из 2 винтов. И угораздило меня на днях эту машинку перезагрузить после 242 дней аптайма. После перезагрузки машина в онлайне так и не появилась. Отсюда и начнем.

  1. Сперва решил попробовать еще раз перезагрузиться, уже с помощью https://robot.your-server.de/serverНе помогло.
  2. Тогда идем и пишем слезное письмо в сапорт. Заодно узнаем, что поддержка по софту для root серверов не предусмотрена. Зато нам пришлют в письме примерно такое:
    we have connected a remote console to your server to solve the issue.Access details:http://lara03.rz13.hetzner.de

    user: ******
    pass: ******

    Please note that access can only be guaranteed for a maximum of two hours. If the
    Lara is not used after the ensured time period, we can use it elsewhere without
    providing further notice.

  3. Заходим по указанному адресу, вводим логин с паролем. И видим 
  4. Ага, сказал я, и полез в гугл с запросом «error: symbol not found: ‘grub_divmod64_full». Узнаем что мы такие не одни, и что скорее всего причиной было обновление системы.
  5. Загружаем сервер в аварийном режиме (обязательно выбираем 64 бита, если у вас соответствующая система стояла)

Долго не томя, решение оказалось таким:

  1. Делаем chroot окружение:
  2. Переустанавливаем GRUB:

И пара комментариев. Вроде бы ставит загрузчик надо на md1 (# grub-install /dev/md1), но этот вариант не взлетел с выдачей нескольких ошибок. Поэтому ставить пришлось на каждый из 2 дисков в зеркале по отдельности. Насколько это правильно — не знаю. Но в моем случае помогло.

Напоследок — пара ссылок на посты людей с похожими проблемами:

  1. http://www.ivanov2.ru/error-symbol-not-found-grub_divmod64_full.html
  2. http://blog.wolfspelz.de/2012/05/hetzner-root-server-does-not-boot-and.html

И снова здравствуйте!

Не зря говорят, что админы подразделяются на тех, кто делает бекапы, и тех, кто пока не делает. Я, как вы уже догадались, относился ко второй :) Но ничего, буду исправляться.

Если кому интересно, то случилось вот что: при очередной оптимизации сервера под нужды XVM было решено вынести базу MongoDB на отдельный раздел. И все бы хорошо, если бы не этот soft RAID. В общем сам бы я на такую операцию не решился, но sirmax был полон решимости…. Результат – полная переустановка системы. Зато макс теперь знает в чем было дело :)