четверг, 12 ноября 2015 г.

О Greylist и спаме.

Намедни переносил свой почтовый сервер на обновленную ОСь. Всвязи с этим надо было проверить работу спам-фильтров. Их у меня двое - spamassassin & DSpam. Вспомнил, что пару лет назад "прикручивал" к серверу greylist, но по каким-то причинам забраковал. Решил, что надо бы освежить воспоминания о том, что это и как оно работает. Итак, Greylist работает следующим образом - каждому вновь пришедшему клиенту сервер довольно грубо говорит что-то типа "приходи через час", выставляя к примеру такую ошибку:
451 4.7.1 Please try again later
или
451 4.7.1 Greylisting in action, come back in x minutes (where x is a number)
Делается это в надежде, что спамеры не станут дожидаться "x minutes" и больше не придут.
В этом алгоритме налицо хамоватый подход. Нормальный клиентский MTA конечно же повторит попытку через запланированное время, но письмо на это время задержится в его очереди. Так же и чуть более грамотный спамер - скормит свою рассылку какому-нибудь нормальному MTA и спам таки будет доставлен невзирая на нашу хамоватость...

Написал скриптик, который с логов достает статистику по всей проходящей через сервер почте. По входящим SMTP сессиям получилась следующая картина:
Здесь мы видим, что 72% входящих сессий зарубаются сервером без всяких greylis'ов, просто "за нарушение протокола". Чаще всего это попытки отправить почту на несуществующие адреса (и почему-то через мой сервер) и попытки "поторопить" сервер. Здесь "поторопить" - это начать протокольное общение не дожидаясь выдачи приглашения к общению. Ну и 21% входящей почты отправился в спам-хранилище, для дальнейшего обучения фильтров.
И вот после такого исследования подумалось, что не нужен мне на сервере greylist для 28% оставшихся после отсеивания нарушителей правил. Пусть лучше фильтры учатся.

Да, снимая статы так же посчитал как работают фильтры. Получил следующий чарт:
На этой картинке за 100% приняты те сессии, которые сервер принял для доставки, те два куска на верхней диаграмме, которые не дропнулись из-за нарушения протокола, т.е. оставшиеся 28%. Поскольку DSpam работает пошустрее, он стоит в обработчиках первым, письма помеченные им как спам на вход spamassassin'а не попадают. Discarded - это когда spamassassin ставит 25 и более баллов.

Глядя на следущую диаграмму можно однозначно говорить, что спамом занимается полная "пионерия", которая не в курсе, как работает SMTP-протокол:
Здесь мы наблюдаем (как пакман пожирает правилных спамеров), что 77% спамеров - пионэры, не читающие документации по SMTP-протоколу. Полагаю, что и оставшиеся 23% не особо умудренные, просто пользуются более дорогим способом - нормальным MTA, который написан грамотными программистами и обязан соблюдать правила. Эти 23%, видимо, доросли до комсомольского возраста. А когда совсем повзрослеют - пойдут оплачивать нормальную рекламу.


воскресенье, 27 сентября 2015 г.

StrongSWAN и авторизация по сертификату

Решил таки добить конфигурацию "лебедя" так, чтобы не требовалось ввода логинов/паролей, что предусмотрено по документации. Сгенерил новый сертификат, установил на свою Windows 8.1. При создании не забыл добавить флаг --flag clientAuth, чтобы винда предлагала данный сертификат для авторизации. Перенастроил конфиг лебедя. Сперва сделал неправильно - указал rightauth=pubkey, в результате чего получил в логе следующее:
charon: 13[IKE] peer requested EAP, config inacceptable
charon: 13[CFG] no alternative config found

Поменял настройку на rightauth=eap-tls, ситуация сильно улучшилась, но как-то совсем неожиданно выскочила ошибка следующего содержания:
charon: 04[TLS] no trusted certificate found for 'CertName' to verify TLS peer

здесь, CertName - это CN из сертификата. Это очень удивило, т.к. сертификат "подписывался" корневым для сервера.
Поиск в гугле привел на эту страницу, где всё объяснено:
The peer must either use the full DN of the certificate or one of the subjectAltNames as identity.
И точно, после указания полного DN из выписанного сертификата как eap_identity - связь установилась!
Позже, выписал еще один сертификат в котором указал subjectAltName как vpnclients и его же вставил в eap_identity - всё сработало.

пятница, 25 сентября 2015 г.

StrongSWAN & DHCP

Несколько лет тому назад установил и настроил StrongSWAN, для попадания в свой маленький дата-центрик. Настроил под Windows 7. Но с Windows 8.1 и с тем же сертификатом пойти на VPN не получилось - восьмерка не предлагает сертификат к авторизации, поскольку в нем действительно нет опции clientAuth. Как оно работало на 7-ке - уже и не упомню, но точно работало.
Решил обновить всё - версию StrongSwan, сертификаты и сам линукс тоже, чтобы освежить в памяти мутные процедуры, связанные с выпиской сертификатов. Обновился до StrongSwan 5.3.3, сгенерил ключи и сертификаты, после некоторых разборок - установил соединение с Windows 8.1. Однако получилось установить соединение только при фиксированном адресе клиента, т.е. винды - если указать в конфигурации "лебедя"
rightsourceip=%dhcp
клиентская винда не получает IP. В логах charon имеем следующее:
...
Sep 25 01:52:11 securegw charon: 14[CFG] sending DHCP DISCOVER to 255.255.255.255
Sep 25 01:52:12 securegw charon: 09[MGR] ignoring request with ID 5, already processing
...
DHCP-сервер в логах ничего не пишет...
Покопался в гугле, нашел вот такую страничку. Проверил tcpdump-ом, действительно, "bad udp cksum". Таргет у iptables не был собран, пришлось дособрать. После добавления приведенного на страничке правила VPN чудесным образом заработал без дополнительных настроек на стороне клиента - всякие там роутинги/маскарадинги не надо конфигурить.
Вестимо, чтобы сия прелесть вообще могла работать, надо собрать strongswan с опциями --enable-dhcp --enable-farp.

среда, 29 апреля 2015 г.

Виниловые времена

Давно мечтаю приобрести себе вертушку для виниловых дисков. Изучая данный вопрос наткнулся на хорошую статейку, кою привожу без изменений. Оригинал был тут

Звукосниматели MM и MC для проигрывателей винила

10/2009, Николай ЕФРЕМОВ

Стирание граней

Самый больной вопрос у любителей винила, судя по дискуссиям в Сети: какую головку выбрать — ММ или MC? Считается, что в наиболее популярном сегменте, т.е. при цене 250 — 300 долларов, картриджи с подвижным магнитом предпочтительнее, поскольку они звучат лучше и не требуют дополнительных устройств для согласования с фонокорректорами — повышающих трансформаторов или пре-предусилителей.

Отчасти это правда, поскольку за такие деньги большинство производителей предлагают MC-головки начального уровня (а вообще их цена может достигать $5000 и выше), в то время как для ММ это крепкий средний, а у некоторых марок даже элитный класс. Это понятно — конструкция с подвижной катушкой намного сложнее в реализации и, как правило, подразумевает ручную сборку. Но ситуация постепенно меняется, поскольку начинает работать причинно-следственная цепочка: рост интереса к винилу — повышение спроса на картриджи — увеличение объемов производства — снижение себестоимости. Кроме того, некоторые конструктивные и технологические решения переносятся из верхнего ценового сегмента в нижние, поэтому качественная разница между ММ и МС-звукоснимателями одинаковой стоимости уже не столь очевидна. Значит, единственным аргументом против MC становится малое выходное напряжение и, как следствие, неспособность работать с большинством бюджетных фонокорректоров? И здесь не все так однозначно. Применение сверхэффективных магнитов на основе сплавов самария, кобальта и неодима позволило увеличить отдачу MC-головок до 2 — 4 мВ без наращивания витков катушки и, стало быть, без ухудшения динамических свойств. Всегда считалось, что MC лучше передают нюансы и микроконтрасты именно за счет меньшей массы подвижной системы, но ее удалось радикально снизить и в современных ММ-конструкциях — за счет применения тех же редкоземельных магнитов. Так есть ли разница в звучании головок разных типов при одинаковой стоимости? Это мы сегодня и попытаемся выяснить. Соревноваться будут ММ и МС-головки как с высоким, так и с низким выходом, но сравнивать их мы будем не между собой, а с выбранным заранее эталоном — картриджем Ortofon Valencia за 762 евро. Такой ход мне подсказали неоднократно слышанные из разных уст сентенции типа: «Мой усилитель (проигрыватель, акустика, головка) стоит 500, а играет на 1000». Вот и посмотрим, который из участников сможет по звучанию максимально приблизиться к «Валенсии». Этот 10-граммовый MC-картридж с низким выходом, довольно жесткой подвижной системой и иглой FineLine отличается детальным, сбалансированным звучанием, прекрасно проработанным нижним диапазоном и прозрачным верхом.

В качестве фонокорректора использовался студийный модуль ATI P100, в котором предусмотрен выбор входного сопротивления 47/100 кОм и емкости 100/200 пФ. Соответствие стандартной кривой RIAA ±0,2 дБ во всем диапазоне частот, быстродействие 30 В/мкс. Изменение чувствительности Low/High позволило подключать MC-головки Ortofon с низкой отдачей без повышающего трансформатора.

Проигрыватель Micro Seiki DD7 был выбран в качестве испытательного стенда из-за тонарма MA-505, позволяющего оперативно менять вертикальный уровень VTA, а также подстраивать на лету антискейтинг. Прижимная сила выставлялась с помощью электронных весов Arm Load Meter, имеющих точность 0,002 г.

Способность «держать канавку» (чаще употребляют термин «трекабилити») оценивалась по измерительной пластинке «Vinyl Essentials». Именно этот параметр определяет, будет ли игла перескакивать с дорожки на дорожку при наличии царапин или иных дефектов пластинки. Кроме того, я заметил, что головки с более уверенным трекингом лучше воспроизводят нижние частоты. Мы будем приводить два значения, например, 70/80 (такой результат показала эталонная Ortofon Valencia) означает, что первые признаки потери контакта проявляются при амплитуде записи 70 микрон, а явно этот эффект заметен на 80. Резонансная частота системы «тонарм — головка» не измерялась, поскольку она редко отличается от расчетного значения. Как ее определить для конкретной связки, см. раздел «Посчитаем резонанс».

Производители рекомендуют разминать головки около 30 часов, я же для экономии времени использовал «прогревочный» диск с сигналами специальной формы.

Посчитаем резонанс

Как и любая механическая система, подвес кантилевера вкупе с коромыслом тонарма имеет собственную резонансную частоту. Чтобы не влиять на звучание проигрывателя, она должна быть в инфранизкой, не слышимой ухом области, лучше в пределах 10 — 14 Гц. Более низкие значения опасны тем, что при проигрывании коробленых пластинок система пойдет вразнос, т.е. игла будет вылетать из звуковой канавки. Высокий резонанс приближается к нижней границе рабочего диапазона, и проблемы с трекингом могут возникнуть при прослушивании, например, органных произведений (Fн ~ 20 Гц).

Как же определить резонансную частоту сиcтемы? Существует эмпирическая формула, дающая довольно точные (±1 Гц) результаты:

Fр = 159/v((Mэф + Mг + Mк ) * С, где:

  • Fр — искомая частота в герцах;
  • Mэф — эффективная масса тонарма в граммах. Как правило, приводится в его спецификациях;
  • Mг — масса головки в граммах. Всегда указывается производителем.
  • Mк — масса крепежа, т.е. винтов и гаек, которыми головка крепится к шеллу. Обычно принимается 0,5 г;
  • С — податливость кантилевера (compliance), измеряемая в см/дин х 10-6. Всегда указывается производителем головок. Из формулы можно вывести главное правило: легкие тонармы лучше сочетаются с мягкими головками (высокое значение compliance), а тяжелые, наоборот, с жесткими.
  • Для примера рассчитаем резонанс тонарма MA-505 и эталонной головки Ortofon Valencia.

Дано: Эффективная масса тонарма 14,5.
Масса головки 10 г.
Крепеж в расчет не принимаем, это два крошечных алюминиевых винтика. Податливость 12 * 10-6 см/дин.

Считаем:

  1. (14,5 + 10) * 12 = 294.
  2. v294 = 17,14.
  3. 159/18,4391 = 9, 27 Гц.

Музыкальный материал:

Deep Purple, «Fireball».WB, USA, 1971.

Оригинал, ранний американский пресс с невероятно мощным, напористым звучанием. Запись, как никакая другая, передает дух того времени.

Charlie Byrd, «Latin Bird».

Milestone, USA, 1973. Двойной альбом известного акустического гитариста, на котором он исполняет латиноамериканские мелодии. Обилие перкуссий и народных инструментов. А уж головки Ortofon Samba и Salsa сам бог велел испытывать на одноименных жанрах.

Cassandra Wilson, «New Moon Daughter». Blue Note, 1995.

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

Lift up

Признаться, результаты проведенного исследования оказались слишком неожиданными. Хотя в начале я и упоминал, что современные технологии позволяют делать недорогие MC-головки, сравнимые по качеству с очень приличными ММ, но такого равенства, конечно, предвидеть не мог. Однако соперники у MC-представителей оказались очень сильные — честно говоря, звукосниматели Nagaoka перевернули мои представления о том, как могут звучать относительно недорогие звукосниматели с подвижным магнитом. Старшая модель, MP-200, безусловный «Выбор эксперта», хотя и MP-150 может служить образцом идеального соотношения качество/цена, особенно если шелл для нее у вас уже есть. Динамичное, сбалансированное по частотному диапазону звучание и жанровая универсальность плюс высокое выходное напряжение — безусловно, редкие качества в выбранном нами ценовом диапазоне. Должен заметить, что близкие по цене Ortofon Samba и Salsa обладают все же лучшей микродинамикой и немного более музыкальны, но не забывайте, что для согласования с бюджетным фонокорректором вам потребуется либо трансформатор, либо MC-предусилитель, а это дополнительные расходы. Тем не менее Samba, самая недорогая головка в нашем обзоре, очень «Удачная покупка». Еще пару лет назад за эти деньги, даже с учетом девальвации рубля, о МС-картридже с таким звучанием можно было только мечтать.

Но настоящим откровением для меня стало знакомство с Benz Micro MC-Silver. Как правило, MC с высоким выходом не столь музыкальны, как обычные, поскольку ради повышения эффективности приходится идти на различные компромиссы. Но MC-Silver звучит как высококлассная MC-головка с низким выходом, однако не требует дорогого повышающего трансформатора. По глубине контрастов, проработке нюансов и передача энергетики она лишь чуть-чуть недотягивает до эталона Ortofon Valencia, зато по информативности середины и трекингу (рекорд, 100 микрон!) даже превосходит его. Это как раз тот самый случай, когда говорят: «Вещь стоит 350 долларов, а играет на 700». Еще один «Выбор эксперта», без вопросов.

Эту награду могла бы получить и великолепная по звучанию головка Rondo Red, но она дороже MC-Silver и работает только с фонокорректором, имеющим МС-вход.

А вот новинка Goldring GL2400 — совсем другое дело. Выходное напряжение 6,5 мВ гарантирует отличное отношение сигнал/шум, а по звучанию хотя и заметно отличается от эталона, но может считаться идеальным выбором для любителя симфонической музыки, оперы и джаза. По совокупности качеств она также заслуживает звания «Выбор эксперта».

Pro-Ject MC-1H при всех преимуществах конструкции с подвижной катушкой — быстрой реакцией, прозрачным верхним диапазоном и слитным звучанием — может работать с любым предусилителем. Но эта головка не очень уверенно держит дорожку (первые признаки потери контакта проявляются уже при амплитуде записи 60 мкм) и имеет слегка ослабленный нижний бас. Но я не считаю это серьезными недостатками — в конце концов, коробленые пластинки в наше время редкость, а что касается баса, то его во многих корректорах специально режут сабсоник-фильтром.

Обновленная версия AT440MLa от Audio-Technica склонна слегка упрощать звуковую картину, зато бережно относится к пластикам (прижимная сила 1,4 г), прекрасно передает микроконтрасты и отличается удивительно приятным звучанием в среднечастотном диапазоне. Для любителей этой марки — а их среди меломанов немало — отличный подарок.

МОДЕЛЬ Audio-Technica AT440MLa Benz-Micro MC-Silver Goldring GL2400 Nagaoka MP-150 Nagaoka MP-200 Ortofon Rondo Red Ortofon Salsa Ortofon Samba Pro-Ject Pick it MC-1H
Тип MM МС ММ ММ ММ MC MC MC MC
Выходное напряжение (1 кГц, 5 см/с), мВ 4 2 (3,54 см/с) 6,5 ±1,5 дБ 4,5 4 0,5 0,38 0,3 2,2
Диапазон, Гц 20 — 20000 20 — 25000 20 — 20000 20 — 20000 20 — 23000 20 — 30000 20 — 35000 20 — 30000 20 — 22000
Разделение каналов
(1 кГц), дБ
27 >30 >20 >24 >25 22 >25 >25 23
Разбаланс каналов
(1 кГц), дБ
0,8 1,5 2 1,5 1,5 2 <1 <1 Н.д.
Оптимальная прижимная сила, г 1,4 2,0 1,7 1,5 — 2,0 1,5 — 2,0 2,3 2,2 1,5 2,5
Сопротивление катушки, Ом 3200 120 550 Н.д. Н.д. 6 7 6 Н.д.
Индуктивность катушки, мГ 490 Н.д. 720 Н.д. Н.д. Н.д. Н.д. Н.д. Н.д.
Оптимальное сопротивление нагрузки, Ом 47000 200 — 47000 47000 47000 47000 100 >20 >10 4700
Оптимальная ёмкость
нагрузки, пФ
Н.д. Н.д. 100 — 200 Н.д. Н.д. Н.д. Н.д. Н.д. Н.д.
Динамическая податливость,
(х10-6 см/дин)
10 15 20 6 7,2 15 15 14 12
Статическая податливость,
(х10-6 см/дин)
40 Н.д. Н.д. 18 20 Н.д. Н.д. Н.д. Н.д.
Масса, г 6,5 5,7 8,2 6,5 6,5 10,5 7 7 10
Кантилевер Al Al Н.д. Al B Al Al Al Н.д.
Форма иглы MicroLine Эллипс
0,4 х 0,7 мм
Vital Эллипс
0,4 х 0,7 мм
Эллипс
0,4 х 0,7 мм
Эллипс,
R 80 мкм
Super Fine Line Эллипс,
R 18 мкм
Эллипс
Вертикальный угол, град. 20 20 24 Н.д. Н.д. 20 20 20 Н.д.
Трекинг, мкм* 60/70 100 80/90 80/90 70/80 80/90 90/100 80/90 60/70
Возможность замены иглы Да Нет Да Да Да Нет Нет Нет Нет
Цена, руб.** 9200 11165 11380 9200/ 12200 11200/ 14200 13950 9980 8000 9030

* Измеренное значение. ** Для головок Nagaoka также указана с шеллом.

среда, 15 апреля 2015 г.

Миграция с BIOS/MBR на GPT/UEFI

Захотелось перевести уже существующую инсталляцию Windows 8.1 на GPT/UEFI. В GPT есть прекрасная возможность создавать до 128 партиций супротив четырех на MBR-дисках. Для мультибут-систем типа Windows + Linux - самое то. Благо, грузиться с UEFI/GPT умеют обе платформы.

Поиск привел на сайт Microsoft, где кратко и доходчиво описана процедура такой трансформации. Вот она. Вместе с созданием USB Repair Key заняло около 40 минут. Желающим - настоятельно рекомендую.

воскресенье, 22 марта 2015 г.

Percentile & awk

Намедни понадобилось посчитать процентиль из некоего текстового файла. По сути, необходимо сделать следующее - расположить все встречаемые значения по возрастанию и выбрать элемент, который будет соответствовать нужному %. К примеру - есть 100 отсортированных значений, процентиль 95% в этом случае будет 95-й элемент. Соответственно, скрипт примерно такой:

{ array[NR] = $1 }
END { print "Percentile 95%: " array[int(NR*.95-0.5)] }
Такой сценарий часто встречается в инете. Однако есть сложность - данные в $1 должны быть заранее отсортированы. А если надо посчитать процентиль для нескольких столбцов, то приведенный способ совсем не подойдет.

Тут на выручку приходит встроенная в awk функция asort():

{ array1[NR] = $2; array2[NR] = $4 }
END { n=asort(array1); n=asort(array2);
      print "Percentile 95%: " array1[int(NR*.95-0.5)], array2[int(NR*.95-0.5)]
}
Здесь n - размер массива. Полезно, в случае, когда не все строки участвуют в подсчете, т.е. NR > n.

вторник, 10 марта 2015 г.

TP-Link WDR4300 + snmpd, очередная версия.

Собрал последнюю EN-версию с включенным snmpd: 3.14.1 Build 141113 Rel.41164n. Установил на свой домашний роутер. Из нововведений - переделан вход в web-админку, и нет совместимости со старыми бинарными конфигами. Уже не раз писал об "удобвстве" бинарных конфигов. Пришлось небольшую базу из резервированных MAC вручную добавлять.

Вот. Повторюсь - шьете на свой страх и риск. Однако замечу, что этот риск нисколько не выше, чем шить "фирменную" 3.14.1-en, поскольку в моей добавлены только snmpd, необходимые ему библиотеки и подправлен rcS, для автозапуска.

Обратил внимание на то, что в новой прошивке встроен dropbear, который нормально запускается вместе с роутером, но залогиниться на него невозможно: root-овый пароль не принимает, а admin-ский прокатывает, но на стороне клиента пишется следующее:

PTY allocation request failed on channel 0
shell request failed on channel 0

т.е. похоже ребята забыли создать соответствующие консоли. А рута не логинит наверняка в связи с тем, что его консоль не прописана в securetty. Имхо.

TP-Link WDR4300 GPL 2.6.31

Намедни попытался собрать прошивку "по следам" последней версии en. Вставить snmpd, добавить функционала в busybox и пересобрать ядро. Всё собралось прекрасно, только вот виснет после распаковки ядра.

Пришлось вспоминать, как дебрикать роутер. Вкратце: необходимо иметь хост с адресом 192.168.0.100 на котором должен работать tftp-сервер. В корень этого сервера необходимо разместить прошивку с отрезанным u-boot. Такую можно получить из любой стоковой путем "отрезания" от нее 257 блоков по 512 байт:

dd if=stock-fw-with-boot.bin of=stock-fw-wo-boot.bin skip=257 bs=512
Назвать ее надо по особому - 6F01A8C0.img. После этого подключиться консолью к роутеру - обресетить его и в момент, когда он скажет "Autobooting in 1 seconds" быстро ввести ему tpl и нажать Enter(у меня никак не получалось, пока я в буфер обмена сие не запихал и в нужный момент правой кнопкой мыши в окне putty не кликнул;)). В появившемся приглашении - сказать tftboot. Если tftp-сервер настроен верно - начнется загрузка фёрма. После загрузки его надо "прошить" и "обресетить" роутер:
db12x> erase 0x9f020000 +7c0000

First 0x2 last 0x7d sector size 0x10000                                                                                                                                                                                                  125
Erased 124 sectors

db12x> cp.b 0x81000000 0x9f020000 0x7c0000

Copy to Flash... write addr: 9f020000
done

db12x> reset

После этих пассов роутер обязан "взлететь". Проверено дважды. Первый раз - пытался вернуться на сток после OpenWRT: процесс прошивки прошел криво - ядро грузилось, а корневая ФС не могла, из-за чего роутер вошел в циклический ребут. Понятное дело, в этом состоянии он не пытался грузить файл с tftp. Второй раз - сегодня из-за того, что самосборное ядро работать не схотело. Вопрос - почему? Вроде всё по фирменному мануалу собирал...

пятница, 6 марта 2015 г.

TP-Link WDR4300 snmpd. Part4

После сборки прошивки со встроенным snmpd месяц наблюдал за трафиком. Что-то в графиках не так. Есть у меня серверочек, который торренты сидирует. С него вылетает ~200Кбайт/с. А роутер говорит, что в сторону прова от меня скорость ~50Кбит/с. Думал, что snmp собрался неверно.

Однако, когда что-то скачивается через wifi - трафик наблюдается во всех местах, где ему положено быть. И в ожидаемых объемах. А по эзернету - ~50Kbit/s даже в том случае, когда качается файло со скоростью 8Мбайт/с! Если snmp умеет показывать правильные результаты - значит, он не виноват.

Вспомнил, что на WDR4300 имеется Hardware NAT. Отключил. Трафик появился. Странно. И непонятно, стоит ли включать HW NAT назад. Скорость без него не упала ни на чуть. Нагрузки на проц как не было, так и нет. Да и со включенным HW NAT чип, который посвящен эзернетам греется так, что палец не терпит. Наверное месяцок поюзаю роутер с выключенным HW NAT.

среда, 4 марта 2015 г.

Мысль про роутеры.

Как я писал в предыдущей статье, после перешивки нетгирьки загрузка процессора на нем серьезно упала. Подумалось - чем же занимался процессор роутера, который использовался как АР, т.е. ему даже NAT выполнять было не надо? Ответ прост - выполнял какие-то задачи производителя.

И вот, собственно, мысль: почему бы производителю роутера не написать софт, который будет исполнять распределенную задачу. К примеру, взламывать пароли. John The Ripper у нас вполне себе умеет OpenMP. Т.е. производитель firmware, который не предоставляет исходных кодов (или предоставляет не полностью) вполне может встроить в прошивку какую-нибудь распределенную задачу, а роутер будет периодически ходить на определенный сайт, чтобы слить то, что уже порешал и обновить задачи.

Таким образом производитель получает деньги с продажи устройств, и бесплатный кластер в придачу. Даже за электричество платить не надо.

вторник, 3 марта 2015 г.

Netgear WNR3500Lv2 Router, part 2

В выходные пересобрал фирменную прошивку для старенького WNR3500Lv2. Оказалось, что периодически встроенный туда snmpd падает. А поскольку логи в стоковой прошивке написаны непонять как - причины невозможно выяснить. Кроме того, на роутере зачем-то крутится java-приложение, которое периодически лазает "на родину" и что-то пытается выкачать.

В общем, подумал, почитал и плюнул на сток. Прошил EntWare, которая от vampik'а. Стало полное заглядение - в данной прошивке можно выбрать роутеру режим AP, тогда все Ethernet-порты отдаются под свитч, а интернет ожидается откуда-то из внутренней сети. Что в моем случае и нужно - роутером у меня трудится TP-Link WDR4300, а нетгиря - дополнитьельный спот и свитч.

Два выходных потратил на сборку. Впрочем, нельзя сказать, чтобы совсем в пустую - потренировался собирать под mipsel-linux, Теперь можно прошивку vampik'а "покрутить" самому. Вот только зачем? В прошивке предусмотрено всё, что хотелось. Кстати, загрузка процессора на стоковой была 40-90% (java прожорливая), а на EntWare - изредка поднимается до 20% на пару мгновений.

При перешивке таки "закирпичил" роутер - после переходной прошивки прошил не для того роутера. Воспользовался советами отсюда, описано понятно. Потратил на раскирпичивание минут 10-15.

воскресенье, 1 марта 2015 г.

TP-Link WDR4300: httpd, который рулит всем, дубль два

Который день пытаюсь найти исходники типилинковского httpd, для чего рассматриваю строковые значения. Похоже, что даного сервиса в сырцах в открытом доступе нет. Однако софтописатели, которые его писали таки обладают толикой юмора - встретил среди строк такую:

Ahhhh! call 911!

Встречается она два раза, первый - в связи с dyndns, а второй - в непонятном контексте.

Вообще, в бинарнике, размером 1.5Мб встречено 200Кб строк, большинство из которых посвящены конфигурации системы. Совершенно неясно, почему разработчики tp-link не вынесли конфиги в отдельный файл. Как, впрочем, неясна причина, по которой httpd в GPL source не отдается в сырцах.

пятница, 27 февраля 2015 г.

TP-Link WDR4300: httpd, который рулит всем.

Во время подготовки образа со всключенным snmpd в данный роутер, обнаружил, что httpd-сервис этого роутера даже в GPL-коде вставлен бинарником, никаких сырцов не дадено. Поиск в интернетах ничего не дал.

Дальше стал искать, как включаются правила для iptables, для чего грепнул rootfs на предмет упоминания iptables. Очень удивился, когда в /etc упоминания оного были только о сбросе, зато в httpd встретилось упоминание. Посмотрел внутрь httpd и обнаружил все правила для запуска iptables. В бинарнике! Никак не понять мне скрытого смысла. Зачем помещать текстовые данные в текстовом виде внутрь бинарника? Причина только одна - спрятать бэкдоры и прочие вещи, о которых пользователю лучше не знать. Вот кусок вывода strings httpd:

iptables -F FORWARD_FILTER
iptables -F FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 1 -j FORWARD_ACCESSCTRL
sh /tmp/wr841n/parent.sh
iptables -I FORWARD_FILTER 1 -i %s -p udp --dport 53 -j FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 2 -i %s -p tcp --dport 80 -j FORWARD_PARENTCTRL
iptables -I FORWARD_FILTER 3 -i %s -p tcp ! --dport 80 -j DROP
iptables -I FORWARD_FILTER 4 -i %s -p udp ! --dport 53 -j DROP
iptables -I FORWARD_FILTER -m mark --mark %s -j FORWARD_ACCESSCTRL
iptables -I FORWARD_FILTER 1 -i %s -m mac --mac-source %s -j RETURN
iptables -A FORWARD_PARENTCTRL -i %s -j DROP
iptables -A FORWARD_ACCESSCTRL -i %s

Упоминание "/tmp/wr841n/parent.sh" наводит на мысль о том, что бинарный httpd особо извращенным способом читает данные из бинарного (!) пользовательского конфига, закидывает их во внешний шелл-скрипт, а потом запускает на исполнение. Считаю, что задумка хранить конфиг в бинарном виде - прекрасна, так же, как и хранение больших текстовых блоков внутри бинарника - даже если какой-то гад доберется до данного изврата, переизвратить не сможет!

Что же скрывает от нас TP-Link? Может быть он перехватывает данные, которые наши iPhone шлют в АНБ и шлет копию этих данных в китайские спецслужбы?

среда, 25 февраля 2015 г.

Netgear WNR3500Lv2 Router

Есть у меня в дому еще один старенький роутер означенной модели. Скорость на его wifi выше 130мбит/с не поднимается, но ethernet-порты у него гигабитные, и есть пачка устройств, которым быстрее чем 130 и не нать, типа телефонов да принтеров. А портов в дому не хватает. Потому - решил и его заюзать.

Проблема на нем та же, что и в tp-link'е - нет поддержки snmp, а хотелось бы, поскольку домосеть как-то неимоверно быстро растет - уже более 30 разных устройств - андроиды, яблоки, телевизоры и прочая хрень...

Нашел на их сайте GPL source, скачал, почитал инструкцию. Увидел в ней
You will need to use the 4.2.3 Linux 2.6 MIPS Cross Compiler and Tools (mipsel-uclibc toolchain), which should have also been posted to your account. If you still can't find it, please download the toolchain from the GPL source package WNR3500Lv2-V1.2.0.16_40.0.66_src.tar.zip, which also includes the toolchain.
но вот беда - нету тулчейна в комплекте... При чем инструкция в каждой из примерно 7 версий прошивок говорит, что есть!

Ну, в итоге, нашел нужный тулчейн, и собрал прошивку as-is. Далее - скачал готовый образ, отрезал от него rootfs и сравнил. Вроде все соответствует. Надо бы подрихтовать Makefile, чтобы snmpd встраивался. Не умею я это дело совсем. Придется изучать.

вторник, 24 февраля 2015 г.

make 3.82: mixed implicit and normal rules

При сборке образа для роутера Netgear WNR3500Lv2 наткнулся на ошибки Makefile. Кто бы мог подумать, что в версии make 3.82 возникнут проблемы со сборкой:

mixed implicit and normal rules
Откатился на 3.81 - make работает успешно.

воскресенье, 8 февраля 2015 г.

TP-Link WDR4300 snmpd. Part3

Оказалось, что отсутствующие модули, о которых я писал в предыдущем сообщении удалены не зря - после того, как был загружен xt_tcpudp.ko перестал работать форвардинг и перестали раздаваться адреса по dhcp. Не первый раз наблюдаю, что firmware пишется хреново - модули удалили, а почистить стартовый скрипт на предмет загрузки удаленных модулей - забыли. Всё равно ж никто не видит, что там, на консоли, происходит...

Ну, короче, сделал я прошивку, в которую встроен snmpd, который запускается автоматически. Вот она. Сделана на базе 3.13.33 Build 140715 Rel.41693n. После перешивки весрию показывает ту же самую. Понятное дело, если кто-то станет шить - на свой страх и риск.

TP-Link WDR4300 snmpd и другое

Нашел на просторах инструмент для сборки-разборки стоковых имиджей TP-Link. Он входит в комплект firmware-mod-kit, что позволило разобрать-проверить-собрать правленый и дополненый имидж.

Пересобрал busybox и дополнил его полезными фичами, добавил net-snmp, прошил. Snmpd не запустился автоматически, но после изучения лога загрузки возникло понимание, что snmpd не смог понять с командной строки, кто такой daemon (-u daemon -g daemon), видимо надо цифровой id поставить.

Зато теперь есть netstat. Тут же выяснилось странное - на нескольких портах висят листенеры:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:33344           0.0.0.0:*               LISTEN
tcp        0      0 [local-net]:49152       0.0.0.0:*               LISTEN
tcp        0      0 [local-net]:49153       0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:20005           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1900            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:1041            0.0.0.0:*               LISTEN

Ну там 80-й и 1900-й порты еще понятны, но что делают остальные - неясно. Кроме того, обнаружилось, что в предоставляемом GPL Source Three нет исходников httpd, а как я понял, основные функции по работе с mtd производит он.

Да, вчитываясь в лог загрузки увидел совсем уже полное безобразие - отсутствуют модули ядра:

insmod: cannot open module `/lib/modules/2.6.31/kernel/x_tables.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/xt_tcpudp.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/iptable_raw.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/flashid.ko': No such file or directory
insmod: cannot open module `/lib/modules/2.6.31/kernel/harmony.ko': No such file or directory

И это в стоковой прошивке! Первые два были найдены в GPL sources после сборки ядра, но первый ставиться не захотел:

# insmod ./x_tables.ko
[41243.332000] x_tables: exports duplicate symbol xt_free_table_info (owned by kernel)
insmod: cannot insert `./x_tables.ko': Invalid module format (-1): Exec format error

Видимо забыли вычеркнуть из спискм загрузки. Второй нормально загрузился. Где взять остальные пока неясно...

четверг, 5 февраля 2015 г.

TP-Link WDR4300 и snmpd. Part 1

По каким-то неясным для меня причинам, в современных домашних маршрутизаторах не принято устанавливать демона snmpd, который сильно облегчает жизнь, если к маршрутизатору приходит не один-два клиента, а пара десятков или того больше. При таких нагрузках роутер периодически "впадает в задумчивость" или вовсе выпадает из работы.
Конечно, нетрудно нажать кнопку power и перегрузить роутер. Но это, на мой взгляд, неправильный путь. Правильный - получать статистику с маршрутизатора и скармливать ее какому-либо "кактусу". И в момент, когда роутер отказался работать - изучить показания оного кактуса. Но для этого на роутере должен работать snmpd, которого современные производители прошивок не вставляют, считая, что для SOHO-роутеров это не нужно. А если нужно конкретно вам, то нужно "занести" примерно вдвое большую сумму за enterprise-решение. Вот такие сложности, обусловленные видимо маркетологами.
Да, есть разного рода WRT-системы, но в них появляются иные проблемы, поскольку такие системы пишутся для некоего гипотетического роутера. Так например, мой WDR4300 на OpenWRT не смог "подружиться" с половиной оборудования через WIFI, поэтому данная система была отринута. Помимо прочего, при перешивке на сток роутер "завис" и "закирпичился", но был восстановлен с помощью tftp и консольного шнурка.
К счастью, фирма TP-Link выложила GPL sources для данного роутера. Сорцы сильно с издержками. К примеру:
5. After building code, you can get the uboot and linux kernel image, then you
can make rootfs with mksquashfs tool, 
but you can't upgrade these images to your
router through web management page.
И ни слова о том, как собирать образ, который can upgrade, нехорошо.
Что забавно, в сорцах net-snmp имеется. Видимо, мысль таки появлялась, но маркетологи не дали воплотить.
Пришлось изучить методы кросс-сборки. Сегодня удалось собрать и запустить на роутере. Первый раз при сборке указал ключик --enable-minimalist, так snmp-walk вывел всего 52 строки данных. После отключения оной опции была получена вполне нормальная статистика из полутора тысяч строк. Что не может не радовать.

Теперь встает вопрос, как поместить данного демона внутрь прошивки (пока что он работает с внешнего диска, библиотеки ищутся через LD_LIBRARY_PATH) и стартовать автоматически, желательно только на внутреннем интерфейсе. Точнее - как собрать прошивку, после помещения туда snmpd, нужных библиотек и куда вписать автозапуск.
"Будем искать" (с).