Показаны сообщения с ярлыком сеть. Показать все сообщения
Показаны сообщения с ярлыком сеть. Показать все сообщения

понедельник, 4 марта 2019 г.

Перехват пароля к FTP серверу с помощью роутера Mikrotik

Вводная: Есть программа с "захардкорженным" в коде паролем с доступом к FTP. Необходимо узнать пароль.

Решение: Так как в качестве роутера у нас Mikrotik RB951Ui-2HnD, то будем использовать его. Заходим в winbox. В меню выбираем Tools - Packet Sniffer. Если стоит галочка "Only Headers" снимаем её.

На вкладке Filter выставляем Port - 21.


Далее нажимаем "Start". Пробуем получить обновления через программу. Если пакеты пошли хорошо, есть нет, то вариант чуть сложнее - убираем порт и смотрим все пакеты от данного компьютера - вероятно (если мы уверены, что используется FTP) используется не стандартный порт.
Узнать порт также можно простым запросом у техподдержки вашей программы - объяснив, что "системный администратор не открывает доступ по всем портам, а только по списку".
Далее нажимаем "Packets" и смотрим все пакеты подряд (Нас интересует вкладка "Packet") - в каком-нибудь из них, будет строка "PASS" и далее пароль который нам нужен.


Как вариант можем сделать сохранение в файл - на вкладке General. И сделать поиск по подстроке "PASS"



среда, 23 сентября 2015 г.

Получение внешнего IP-адреса на C#

Вводная: В одной программе было необходимо получить внешний адрес компьютера. Для решения предварительно погуглил и выяснил, что достаточно известная функция и реализуется просто. Если что искать по запросу в гугл - "C# get public ip external". Первые же ссылки ведут на http://www.codeproject.com/Tips/452024/Getting-the-External-IP-Address и http://stackoverflow.com/questions/3253701/get-public-external-ip-address где и показывается как это можно сделать. В данных примерах получение адреса делается через сервисы checkip.dyndns.org и whatismyip.com. Первоначально с ними и начал работать, но возникло куча осложнений - порой дикие задержки и проблемы с соединением. Постоянная ошибка "System.Net.WebException: Время ожидания операции истекло   в System.Net.HttpWebRequest.GetResponse()"

Решил сделать тоже самое, но с оглядкой на Российскую действительность. Первоначально рассматривал https://2ip.ru но там достаточно тяжелая страница и в итоге выбор пал на Яндекс, а конкретно - http://yandex.ru/internet

Решение:
public class PublicIP
{
  public string Get()
  {
    try
    {
      using (var client = new WebClient())
      {
        var uri = new Uri("http://yandex.ru/internet/");
 
        client.Encoding = Encoding.UTF8;
        client.Proxy = null;
 
        var downloadString = client.DownloadString(uri);
        var first = downloadString.IndexOf("<strong>IP-адрес</strong>: ", StringComparison.Ordinal) + 27;
        var last = downloadString.IndexOf("<strong>Регион по IP-адресу</strong>", StringComparison.Ordinal);
 
        downloadString = downloadString.Substring(first, last - first);
 
        return downloadString;
      }
    }
    catch (Exception msg)
    {
      Console.WriteLine(msg);
      return "";
    }
  }
}

PS: Используется простой разбор строк не потому, что я не знаю о парсерах HTML (Html Agility Pack, Fizzler и тп), а просто потому, что

  • а) в данном случае они избыточны 
  • б) удлиняют выполнение функции примерно на 1-2 секунды
  • в) Ради одного единственного места в программе тащить ещё мегабайт библиотекой ИМХО не корректно
  • г) в итоге кода получается больше :)


PS2: Замеры по сравнению с точно такой же функцией, только которая обращается к CheckIP.dyndns.org

Stopwatch stopWatch = new Stopwatch();
 
stopWatch.Start();
 
var gip = new PublicIP();
Console.WriteLine(gip.Get());
 
stopWatch.Stop();
 
Console.WriteLine("Checkip:  " + stopWatch2.Elapsed);

Методика тестирования - запускается программа. Значение записывается отдельно и так по 5 раз для каждого варианта (CheckIP и Yandex)
checkIP
00:00:01.9662763
00:00:02.1180682
00:00:03.0694474
00:00:02.0939421
00:00:02.1191459
Yandex
00:00:00.3286215
00:00:00.3752536
00:00:00.3639731
00:00:00.3458052
00:00:00.3535228

Комментарии излишни.

PS3: Если вам требуется получать в пределах одного города или провайдера, то проще поднять у себя web-сервер и отдавать от себя. Скорость может быть ещё выше.

вторник, 4 августа 2015 г.

Полная очистка логов Mikrotik RouterOS

Вводная: Нужно было почистить следы выполнения некоторых команд на роутерах Mikrotik, так чтобы не было видно, что кто-то что-то делал.

Решение: Решение описано много где в интернетах и сводится к двум вещам - очистке логов и очистке истории введённых команд консоли (к примеру https://aacable.wordpress.com/2013/12/19/howto-clear-mikrotik-loghistory/).
Однако есть команда /system history print которая выводит список изменений конфигурации и который стандартными средствами не удаляется!

Для полного удаления следов пребывания можно использовать метод создания и последующего восстановления резервной копии, который выполняется за 2 команды
system backup save name=test 
system backup load name=test

Плюсы данного решения в том, что чистится всё - и логи, и история консоли, и system history.

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

Примечание - Также будет оставлен файл бэкапа (для маскировки можно назвать файл auto-before-reset.backup и поставить ему время Jan/01/1970 00:05:51 - параметры автоматически создаваемого файла при сбросе конфигурации system reset-configuration)



четверг, 23 апреля 2015 г.

Mikrotik, WiFi и продукция apple

Вводная: После установки точки доступа фирмы Mikrotik через wifi работает все, кроме продукции уважаемой фирмы Apple (iphone, ipad, appleTV, iPod и прочего)

Решение: Так как проблем может быть несколько, то проверяйте по пунктам -
  • Включенный TKIP в настройках профиля безопасности - самая распространённая ошибка, так как на роутерах Mikrotik он включён по умолчанию. Проявляется при одновременной работе 802.11n и включенном TKIP. Тут всё просто - снимаем галочку с TKIP, оставляем AES.
  • Отключена поддержка WMM (Wi-Fi Multimedia) - если она отключена, то работать ничего не будет. Подробнее - https://support.apple.com/ru-ru/TS3727 (по умолчанию включена)
  • Запрет доступа на сайты + доступ по белому списку. Ошибка возникает при запрете доступа в частности к адресу www.apple.com/library/test/success.html
  • В устройствах apple не поддерживаются широкие каналы (40MHz) в сетях 2.4 - так что здесь всё просто, если вы используете диапазон 2.4Ghz, то не включайте широкие каналы 40Mhz. Используйте только 20Mhz
  • Возможны проблемы при ненастроенном (или неверно настроенном) времени на обеих устройствах - всё просто, на роутере включаете синхронизацию (через NTP или IP-Cloud), на apple-device либо выставляете нужное время, либо берёте с оператора
  • отключенный режим скорости в 11mb/s (и соответственно режима 802.11b) - неизвестно почему, но порой возникают проблемы при его отключении
После этих всех настроек всё равно не подключается? Попробуйте
1) "Забыть" настройки сетей на iphone,
2) Создать Virtual-AP и настроить её заново (желательно с новым профилем безопасности, но можете попробовать и старый) и добавить в один бридж с неработающей.

Также из раздела шаманства могут помочь следующие вещи -
  • Смена канала wifi
  • Обновление прошивки (и роутера, и устройства apple - для примера разница в работе 5 и 6 версии IOS очень существенна)
  • Сброс и настройка "с нуля"
  • Проверить, что включена галочка "Default Authenticate" и нет фильтрации по MAC`у
  • Проверить, что в вашем DHCP-пуле есть свободные адреса
  • Проверить уровень сигнала - если у вас он очень низкий, точка доступа находиться за тремя бетонными стенами или в 100 метрах от вас, то у меня плохие новости - может ВООБЩЕ не получится настроить
  • Иногда помогает установить disconnect-timeout=15s (по умолчанию идет 3сек)
  • Включить логи system logging add topics=wireless и посмотреть, что творится

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

Генерация списка MAC адресов в C#

Вводная: Необходимо генерировать определённое количество MAC адресов, начиная с заданного.

Решение: Была написана функция alMacList(string first, decimal count, string separatorChar, bool up). Данная функция получает в качестве параметра первый MAC в диапозоне, получает количество нужных адресов, символ разделитель (MAC может быть как цельным числом, так и разделяться. К примеру - "AABBCCDDEEFF" и "AA:BB:CC:DD:EE:FF"). Нужно ли отдавать в верхнем или нижнем регистре. Возвращает ArrayList. Проверок на корректность входных параметров НЕТ!

Собственно сама функция -

private ArrayList alMacList(string first, decimal count, string separatorChar, bool up)
        {
            ArrayList mac = new ArrayList();
 
            long value = long.Parse(first, NumberStyles.HexNumber, CultureInfo.CurrentCulture.NumberFormat);
 
            for (int i = 0; i < count; i++)
            {
                string s = (value + i).ToString("X12");
                s = String.Format("{0}{6}{1}{6}{2}{6}{3}{6}{4}{6}{5}", s.Substring(0,2), 
                                                                       s.Substring(2,2), 
                                                                       s.Substring(4,2), 
                                                                       s.Substring(6,2), 
                                                                       s.Substring(8,2), 
                                                                       s.Substring(10,2), 
                                                                       separatorChar);
 
                if (up) {s = s.ToUpper(); }
                else s = s.ToLower();
 
                mac.Add(s);
            }
 
            return mac;
        }

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

Набор для трассировки линий XQ-350

Потребовалась мне достаточно специфичная штука - "Набор для трассировки линий". Обычно состоит он из тонального генератора и индуктивного щупа. Служит для поиска нужного провода в пучке кабелей и трассировки линий внутри зданий. То есть, к примеру, есть у вас розетка (или даже просто торчащий провод) в каком-либо здании и вам надо отследить какой это провод в пучке с другой стороны (или какой это порт на неподписанной патч-панели).

После гугления опять же понял, что цены на фирменные начинаются от 5-6 тысяч и пошел по привычке на aliexpress. После очень тщательного поиска остановился на модели  XQ-350 http://www.aliexpress.com/item/Wire-Tracker-XQ-350-RJ45-RJ11-Finder-for-Telephone-Network-Wire-Lan-Cable-New-g/1527454524.html

Плюсы:

  1. Помимо щупа может работать, как кабельный тестер, что сразу даёт кучу плюсов (меньше оборудования и прочее)
  2. Работает как "поисковик" проводки в стене
  3. Фонарик ))) (Это очень существенный плюс так, как далеко не всегда там, где расположена проводка, есть нормальный свет)
  4. Он реально работает! Не смотря на то, что стоит раз в 10 фирменных аналогов.
  5. Чехол в комплекте с разделёнными разделами под разную комплектуху (провода, тестер, наушники)
  6. Разъём для наушников и возможность управлять громкостью. Что даёт возможность отслеживать даже в очень громком помещении :)


Минусы:

  1. Есть у крутых Fluke`овских приборов такой функционал как цифровой тоногенератор - "Цифровой сигнал прибора IntelliTone легче определяется на расстоянии, чем аналоговые сигналы, а их частота и кодирование исключают риск неправильной идентификации кабеля в тех случаях, когда сигнал ослаблен или присутствует внешний шум или наводки". Но я в 3-этажном здании при одновременной работе народа в сети + в некоторых местах пересекается с электрическими, проблемы не увидел. Наводок не было.
  2. Нерегулируемая чувствительность - проблема возникает, если вам надо проверить или очень небольшой отрезок (к примеру, от патч-панели, до маршрутизатора) - будут звенеть не только нужные, но и те, что рядом, или очень большой - может просто не определить (на моём куске полёвки в 500 метров не смог), но тут надо помнить, что служит для проверки СКС, где длинна линка на более 90 метров (хотя телефония может и до км быть)
  3. Пускает сигнал по центральной паре! (бело-синий-синий). То есть если он разорван вы можете его не найти. Либо надо делать переходники, либо цепляться крокодилами к другим. 
Фото:






По традиции ссылка на онлайн магазин с ценами для сравнения http://www.alas-nt.ru/passivnoe-oborudovanie/testery-kabelnye-analizatory-skanery/tonalnye-generatory-i-induktivnye-shchupy/

понедельник, 2 февраля 2015 г.

Трубка телефониста Senter ST220B

Умерла у меня перед новогодними праздниками любимая трубка. Обычный китайский телефонный аппарат, без каких-либо спец функций - просто обычный телефон. А так как периодически занимаюсь монтажом АТС, то и инструмент мне нужен. Вначале посмотрел на разные трубки в наличии. Потом решил, что нужна мне так называемая "трубка телефониста". Главное её отличие от обычного аппарата в том, что она сама может выдавать тон в линию. Это позволяет проверить телефонный аппарат без линии, просто соединив её с трубкой или проверить линию без городской линии или линии с АТС.

Пошел в гугол искать по интернет магазинам и прочим ебеям. На фирмовые трубки всё печально - качественные, много функций, но дорогие. Решил обратиться к братьям-китайцам. Нашел много достаточно, но для начала решил взять самый дешевый Senter ST220B http://ru.aliexpress.com/item/SENTER-ST220B-Mini-Telephone-Line-Tester/1974449317.html

В итоге после того как продавец отправил и выдал трек начал ждать. Трек не бился совершенно и по прошествии месяца начал уже нервничать, но за 5 дней до окончания защиты на али, трубка пришла. Могу отметить, что клипсы и батарейки в комплекте не было :(


Теперь перейдём к осмотру и тестированию

1. В первую очередь просто подключение к линии и проверка, что работает как обычный телефон. Всё работает хорошо и правильно. Из приятных фишек то, что кнопка подъёма сделана двухпозиционным переключателем On-Off (на обычных трубках просто кнопка разовое нажатие - подъём трубки, опять нажатие положить).

2. Далее подключаем напрямую к телефонному аппарату, и пробую подать зуммер. Работает! Так же у этой трубки есть режим "TALK", который позволяет переговариваться с телефоном, подключенным на другом конце. По паспорту китайцы обещают, что это работает на кабелях вплоть до 3Км, у меня таких не было, но на 500 метровой полёвке вполне можно поговорить.



3. Также у телефона есть режим тестирования сопротивления между линиями, также работает все нормально. Тестировалась в трёх положениях - линия не подключена вообще (показывает >10M), крокодилы замкнуты между собой (0М), подключена линия от АТС (2M-20К, по ГОСТу 300 кОм)

Плюсы:

  1. Цена! Фирменных аналогов дешевле 10к нет, для примера http://www.skomplekt.com/tovar/1/8/3/ (это я про нормальные - можно советскую найти за пару-тройку тысяч, но функционал будет на порядок меньше. Можно и самому сделать, но это надо делать :) )
  2. Лёгкость и компактность. Существенно легче того же PROKIT (понятно, что сделано за счёт того, что пластика более тонкий, нет металлических ребер жесткости). Для меня это плюс, для кого-то будет минусом.
  3. Наличие режима разговора. Мега вещь для проверки работы и корректности  проводки. Порой советская трубка зуммер выдать в линию может, но разговор не идёт.
  4. Провод подключается через разъём (на самом деле это правильно, так как любое другое подключение через некоторое время убивается, а этот тип позволяет заменить легко и быстро)
  5. Говорят есть защита от всплесков и подключений к 220 - но я не проверял :)


Из минусов:

  1. Нет громкой связи, приходиться при разговоре и тестах всегда подносить к уху. (Хотя динамики в корпусе есть, и они даже припаяны к плате!!! Но в инструкции ни слова, кнопки для включения тоже нет)
  2. Нет гнезда гарнитуры (на некоторых подобных трубках есть два гнезда микрофон-наушники), что существенно облегчает работу
  3. "Хлипкость" - хотя сделан без люфтов, но фактура пластмассы не вызывает доверия и есть ощущение, что пару падений и придётся обматывать изолентой.
  4. Отсутствие влагозащиты, как на большинстве дорогих трубках (но это уже вопрос экономии)
  5. Совершенно не удобный переключатель "Пульс-тон". Сделан так, что руками не переключить - утоплен в корпус, только отвёрткой. Если в Чите это ещё не так критично, то по районам очень много и пульса, и дикой смеси пульс-тон.
  6. Отсутствует в комплекте обещанная поясная клипса. 
  7. Отсутствует в комплекте чехол или бокс какой-нибудь. 


ИМХО Если вы занимаетесь АТС от случая, к случаю. И это у вас не основное занятие, то рекомендую именно такую трубку (или подобную). По соотношению цена-функционал она вполне подходит для начинающих и тех, кому функционал нужен не часто.

четверг, 25 сентября 2014 г.

Настройка синхронизации времени (NTP клиента) в роутерах Mikrotik

Установим нашу часовую зону (если у вас другая, то не забудьте поменять)
system clock set time-zone-name=Asia/Yakutsk
Включим NTP client и пропишем начальные адреса
system ntp client set enabled=yes primary-ntp=[:resolve 0.pool.ntp.org] secondary-ntp=[:resolve 1.pool.ntp.org]

Создадим скрипт который будет обновлять IP адреса серверов пула
/system scriptadd name=SetNTPServers policy=\    ftp,reboot,read,write,policy,test,password,sniff,sensitive source="/system n\    tp client set primary-ntp=[:resolve 0.pool.ntp.org]\r\    \n/system ntp client set secondary-ntp=[:resolve 1.pool.ntp.org]"


Включаем выполнение скрипта каждые 3 часа, для обновления IP адресов из пула.
/system scheduleradd interval=3h name=SetNTPServers on-event=SetNTPServers policy=\    ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=\    startup
Ссылки: https://ru.wikipedia.org/wiki/NTP
http://silyashevich.blogspot.ru/2014/08/ntp-poolntporg-mikrotik-routeros.html
http://wiki.mikrotik.com/wiki/Manual:System/Time

PS: Для работы клиента, пакет NTP не требуется, он требуется только чтобы микротик мог работать в качестве NTP сервера либо для нестандартной настройки клиента.

PS2: Начиная с 6.16 можно использовать функционал IP Cloud http://arxont.blogspot.ru/2014/07/homevpn-mikrotik.html для синхронизации часов.

PS3: Выбрать более близкие сервера можно на http://www.pool.ntp.org/zone/@ (к примеру для России - можно использовать 0.ru.pool.ntp.org и 1.ru.pool.ntp.org)

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

среда, 24 сентября 2014 г.

Переделка Mikrotik RB951G-2HnD (добавление внешних антенн)

Перепост с http://www.yaplakal.com/forum2/topic922857.html

Цель - увеличить дальность приема, без поднятия мощности на передатчике. Итак, начнем. Будет около 25 фотографий, как закончу сообщу. Не ломайте пожалуйста. 
Переделка Mikrotik RB951G-2HnD

среда, 11 июня 2014 г.

Функционал IP Cloud (DDNS+NTP) от Mikrotik (встроенное решение)

В RouterOS версии 6.14 появилась новая функция - собственная реализация DynDNS. Пока функционал в статусе бета-версии, но им уже можно пользоваться. Не используя внешние сервисы и скрипты (типа http://arxont.blogspot.ru/2013/02/dns-mikrotik.html).

Настройка происходит в разделе ip cloud. В данный момент настроить можно только два параметра - "Enabled" и "Update Time".

С параметром "Enabled" всё просто - включает данный функционал.

Параметр update-time - делает следующее - после перезагрузки маршрутизатора и во время каждого обновления DDNS (когда у маршрутизатора изменяется внешний IP-адрес или после команды /ip cloud force-update). Если установлено значение "Enabled", то время маршрутизатора будет установлено на время, сервера DDNS ЕСЛИ не установлены (или не включены) SNTP или NTP. Если установлено значение "нет", то облачный сервис не обновит часы маршрутизатора.

Работает функционал DDNS  следующим образом -
Маршрутизатор проверяет изменение IP-адреса каждую минуту
Маршрутизатор ожидает реакции сервера DDNS: 15 секунд
Длительность TTL записи на DDNS: 60 секунд

Так как в данный момент сервис в статусе беты, то мы не можем выбирать имя для сервера, вместо этого проставляется имя вида %СерийныйНомер%.sn.mynetname.net, но даже в данном режиме мы можем использовать данную настройку. Надеюсь в дальнейшем сделают использование своего имени и можно будет указывать произвольно.

Так же ОЧЕНЬ серьёзным ограничением в данный момент является, то что нельзя указать конкретный интерфейс (или IP), адрес которого надо привязывать к DDNS сервису - но если у вас один внешний линк, то проблема не особо существенна.

PS: Работает только с устройствам RouterBOARD. Если у вас RouterOS x86, то данный функционал у вас работать не будет. Пруф - http://forum.mikrotik.com/viewtopic.php?f=2&t=85906#p431877

PS2: Если вам нужно, красивое имя, то наиболее простое решение это прописать CNAME на свой домен. Правда для этого нужно иметь зарегистрированный домен и возможность редактирования его DNS настроек.



пятница, 17 января 2014 г.

Подключение к удалённой системе видеонаблюдения через 3G+микротик

Вводная: Есть удалённая система видеонаблюдения. Необходимо предоставить к ней доступ из офиса и интернета. Проблема в том, что есть ТОЛЬКО gsm, который предоставляет "серый" ip к которому нельзя обратиться напрямую (сервисы типа DynDNS и прочие не работают, так как им требуется динамический айпишник).

Решение: Будем использовать для работы роутер RB951G-2HnD - у него имеется USB порт для подключения 3G модема. В офисе установлен роутер RB2011.

Вначале прописываем параметры центрального узла.

Включаем pptp сервер
interface pptp-server server set enabled=yes keepalive-timeout=120

Создаём пользователя для подключения к pptp серверу
ppp secret add local-address=10.10.10.2 name=videotest password=TestPassword profile=default-encryption remote-address=10.10.10.3 service=pptp

Создаём подключение к pptp
interface pptp-server add name=videotest user=videotest

Создаём eoip туннель
interface eoip add mac-address=02:29:9F:25:31:B4 name=eoip-tunnel1 remote-address=10.10.10.3 tunnel-id=0

Создаём бридж между локальной сетью офиса и eoip туннелем
interface bridge add l2mtu=1598 name=bridge1
interface bridge port add bridge=bridge1 interface=ether6
interface bridge port add bridge=bridge1 interface=eoip-tunnel1


На этом настройка центрального узла закончена.

Далее перейдём к настройке удалённого роутера.
Прописываем подключение через модем (в нашем случае МТС).
interface ppp-client add apn=internet.mts.ru disabled=no info-channel=1 name=ppp-out1 password=mts port=usb2 user=mts

Создаём подключение к офису (pptp сервер, необходимо прописать его адрес, логин и пароль)
interface pptp-client add allow=mschap1,mschap2 connect-to=pptp.example.com disabled=no name=pptp-out1 password=TestPassword user=videotest

Здесь также создаём eoip тунель
interface eoip add mac-address=02:34:DB:C5:A5:03 name=eoip-tunnel1 remote-address=10.10.10.2 tunnel-id=0
и бридж между тунелем и интерфейсом на котором сидит видеорегистратор
interface bridge add l2mtu=1598 name=bridge1
interface bridge port add bridge=bridge1 interface=ether5
interface bridge port add bridge=bridge1 interface=eoip-tunnel1


Теперь можем проверять работу - видео теперь в одном широковещательном домене с сетью офиса и должен быть прямой доступ. 

PS: Ссылки на документацию
http://wiki.mikrotik.com/wiki/Manual:Interface/PPTP
http://wiki.mikrotik.com/wiki/Manual:Interface/EoIP
http://wiki.mikrotik.com/wiki/Russian/Построение_VPN_с_помощью_технологии_EoIP

PS2: Рекомендую сделать отдельную подсеть для видеонаблюдения (с отдельным широковещательным доменом) чтобы минимизировать широковещательный трафик через канал. 

четверг, 2 мая 2013 г.

IP/Neighbor в роутерах Mikrotik

IP/Neighbor discovery служит для "поиска" других устройств совместимых с MNDP (MikroTik Neighbor Discovery protocol) или CDP (Cisco Discovery Protocol). Поиск идёт в текущем широковещательном домене.

Neighbor дословно переводится - Соседи. Это список узлов (роутеров, точек доступа, поддерживающих протоколы MNDP или CDP), которые подключены к Микротику. Показывает версию прошивки, тип устройства, IP, MAC - адрес и ещё некоторые данные.
Посмотреть найденные устройства можно командой - ip neighbor print

Теперь по настройке. По умолчанию функция включена на всех интерфейсах. Моя рекомендация следующая - обязательно отключать на WAN интерфейсах. Рекомендую отключать и в локальной сети - зачем нужен лишний широковещательный трафик в локалке? Да и по соображениям безопасности - многие данные ИМХО не нужны для общего доступа.

Команда отключения на интерфейсе ether1 - ip neighbor discovery set ether1 disabled=yes

Минус данного решения в том, что перестают работать вещи завязанные на этот протокол. Из существенных вещей которые используют данный протокол можно отметить - автопоиск устройств через winbox, использование Packet Packer.

Ссылки -
http://www.wireshark.org/docs/dfref/m/mndp.html что можно вытянуть из микротика со включенным Neighbor. Хочу заметить, что всё это не требует какой-либо авторизации и знания IP адреса.
http://www.mikrotik.com/documentation/manual_2.6/IP/MNDP.html - официальная документация (весьма устаревшая, только как обзор протокола)
http://wiki.mikrotik.com/wiki/Manual:IP/Neighbor_discovery - официальная вики
http://ru.wikipedia.org/wiki/CDP - вики про Cisco Discovery Protocol - аналогичный (и поддерживаемый) протокол от Cisco

среда, 3 апреля 2013 г.

Технологии WatchDog и Netwatch в роутерах Mikrotik

Вначале расскажу про WatchDog
http://wiki.mikrotik.com/wiki/Manual:System/Watchdog
   system watchdog set no-ping-delay=10m watch-address=192.168.1.1
(вместо 192.168.1.1 указываете адрес самого микротика)

Watchdog в роутерах Mikrotik построенных на PowerPC и Mipsbe реализован аппаратно. В общем, если роутер зависнет и не сможет пинговать сам себя (или внешний адрес, если указали его), то он сам себя перезагрузит.

Но есть у него недостаток - при пропадании связи он тупо перезагружает роутер (что иногда не очень удобно, когда помимо подключения к внешней сети он поддерживает локальную) и проверка ограничена ОДНИМ адресом. Хотя главное его достоинство, что в роутерах микротик сделан аппаратно и не зависит от глюков системы (а может помочь от этого глюка избавиться). Проблема в том, что если вам нужно просто переключиться на другой канал или "рестартануть" интерфейс, то лучше использовать Netwatch -
http://wiki.mikrotik.com/wiki/Manual:Tools/Netwatch
http://wiki.mikrotik.com/wiki/Руководства:Инструменты_(Tools)/Netwatch
Для Netwatch требуется пакет Advanced Tools!!!

В чём плюсы Netwatch
  1. Если Watchdog при пропадании связи просто рестартит роутер, то netwatch позволяет делать произвольные действия с помощью встроенного скриптового языка (к примеру переключения основной-резервный каналы, если подключения не статические и их нельзя сделать через distance)
  2. Скриптов Netwatch может быть несколько на разные адреса, что к примеру позволяет делать на нём watchdog для другого сетевого железа (в частности при управлении питанием с помощью 750UP)
  3. Netwatch позволяет контролировать не только пропадание, но и поднятие определённого адреса (параметр up-script)
  4. Watchdog портит Uptime роутера :)
В чём минусы Netwatch
  1. Очевидный для меня минус по сути один - если завис сам роутер, то watchdog его перезагрузит, так как сделан отдельным модулем на аппаратном уровне. Поэтому используя netwatch не забывайте добавлять watchdog с адресом роутера.

Пример скрипта: который при отсутствии связи до гугловского DNS кладёт интерфейс на котором у нас интернет и через 10 секунд поднимает его снова. Проверка связи до гуглоднса идёт каждые 5 минут.
   /tool netwatch
   add down-script="/interface ethernet set ether5 disabled=yes\r\
   \ndelay 10\r\
   \n/interface ethernet set ether5 disabled=no" host=8.8.8.8 interval=5m \
   timeout=9s

среда, 20 марта 2013 г.

Mikrotik - bridge или Master-slave? И почему.

"Раньше я стирала обычным порошком"

Раньше все необходимые порты для объединения в локальную сеть закидывал в бридж. Так вот - это не правильно.
Грубо говоря, лучше делать так - возьмём стандартную ситуацию, по типу домашнего роутера, на примере 951-2n - один интернет, 4 лан-клиента + WiFi. Первый порт понятно WAN, второй мы соединяем бриджем с WiFi, а остальные подключаем слейвами ко второму.

То есть должно получиться, что-то подобное -

   /interface bridge
   add l2mtu=1598 name=bridge1
   /interface wireless
   set 0 disabled=no l2mtu=2290
   /interface ethernet
   set 0 comment=InterNet
   set 1 comment=LocalNet
   set 2 master-port=ether2
   set 3 master-port=ether2
   set 4 master-port=ether2
   /interface bridge port
   add bridge=bridge1 interface=ether2
   add bridge=bridge1 interface=wlan1


А теперь почему так - http://wiki.mikrotik.com/wiki/Руководства:Возможности_чипа_коммутации
"Коммутация позволяет достичь проводной скорости (wire speed) обмена данными между портами одной группы, как между портами в обычном Ethernet-коммутаторе"
"Пока пакет не достиг cpu-порта, его обработка полностью осуществляется логикой коммутатора, не требуя какого-либо участия центрального процессора, и эта обработка происходит с проводной скоростью при любом размере кадра."
В общем, при включении в бридж, не задействуются возможности чипа коммутации. И начинаются проблемы по скорости (и ещё некоторые другие, из-за которых я и полез туда). Особо это заметно на 2011 серии (и думаю на всех более старших), при работе с гигабитными портами.

PS: Немного добавлю про 2011 серию. В них установлено два чипа комутации Atheros 8327 (ether1-ether5+sfp1) и Atheros8227 (ether6-ether10). Так что надо создавать 2 группы свитч-портов при помощи указания Master-port на интерфейсах. А уже мастер-порты объединить в бридж. Снизит нагрузку на CPU при проходе трафика между портами одной группы.

четверг, 21 февраля 2013 г.

Мини FAQ по настройке DHCP-сервера на Cisco

По-умолчанию на маршрутизаторах Cisco включена функциональная возможность DHCP-сервера. Если же она не активирована, то это возможно сделать командой - service dhcp
Отключить - no service dhcp

создаем пул с именем LAN
   ip dhcp pool LAN 
Указываем подсеть (так же можно network 192.168.1.0/24)
   network 192.168.1.0 255.255.255.0  
Указываем днс-сервера (если несколько, то указываем, через пробел)
   dns-server 192.168.0.101  
Указываем имя домена
   domain-name domain.local  
Указываем шлюз по умолчанию (чаще всего сама цыска)
   default-router 192.168.1.1
Срок аренды (в днях), по умолчанию 1 день. infinite - означает, что срок аренды не истечет никогда)
   lease 35

Закрыть для выдачи два адреса 192.168.1.1 и 192.168.2.1
   ip dhcp excluded-address 192.168.1.1
   ip dhcp excluded-address 192.168.2.1

Закрыть для выдачи диапозон адресов 192.168.1.199 - 192.168.1.254
   ip dhcp excluded-address 192.168.1.199 192.168.1.254

Если сервер для протоколирования привязок DHCP-адресов не доступен, и команда ip dhcp
database
не конфигурируется, то необходимо отключить и функцию протоколирования DHCP-конфликтов.
   no ip dhcp conflict logging

Указываем, что у нас не используется DHCP для виртуальных маршрутизаторов
   no ip dhcp use vrf connected

Если присутствует два DHCP-сервера и необходимо, чтобы при поломке одного второй подхватывал раздачу адресов с того же места. Либо есть статические адреса которые по каким-то причинам не описаны в excluded-addresses используем примитивную проверку перед выдачей адреса. Вместо <0-10> подставьте количество тестовых пакетов.
   ip dhcp ping packets <0-10>
Для настройки тайм-аутов пакетов ping воспользуйтесь следующей командой:
   ip dhcp ping timeout milliseconds

Выданные адреса можно посмотреть -
   show ip dhcp binding
Статистику можно посмотреть -
   show ip dhcp server statistics

Очистки таблицы соответствия физических адресов и адресов выданных с пула DHCP-сервером:
   clear ip dhcp binding
Очистить привязку для конкретного IP-адреса:
   clear ip dhcp binding 10.84.168.181

Привязка IP к MAC
ip dhcp pool static-1
   host 192.168.1.2 255.255.255.0
   client-identifier 0100.xxxx.xxxx.xx
   client-name Static-1
   default-router 192.168.1.1
   dns-server 192.168.0.101
   lease infinite

Внимание! Очень внимательно посмотрите на строку client-identifier. MAC адрес на одно слово длиннее, чем должен быть. Впереди добавляеся "01" (на самом деле MAC выглядит 94:39:E5:C0:C2:A9). Дело в том, что во время запроса на Cisco прилетает MAC в таком вот виде, т.е. с "01" вначале. Прилетает он так с Windows, с Unix-систем вначале добавляется "00" вместо "01". Возможно, на других железках запрос прилетает еще по-своему. Лучше всего сначала не привязывать хост, а посмостреть через sh ip dhcp bind
Не забываем в конце сохранить конфигурацию командой wr (write).

воскресенье, 11 ноября 2012 г.

Смена MAC адреса на порту Mikrotik

Вводная: Провайдер в своей сети делает привязку по mac-адресу. Необходимо сменить MAC на порту. Через WinBox сменить MAC для ethernet невозможно - только через терминал

Заходим в терминал (New terminal)

Делаем interface print
Запоминаем параметр Name интерфейса на котором нам надо сменить MAC адреса

и делаем команду

interface ethernet set ether1 mac-address=00:11:22:33:44:77

Подставляя вместо "ether1" нужное имя. Также можно вместо имени указывать номер, который также узнаём через interface print

вторник, 18 октября 2011 г.

Методика проверки и восстановления работы почтового сервера

Статья посвящена, общим принципам поиска неисправностей почтовых систем. И будет перерабатывается и обновляться по мере появления (и вспоминания) разных возможных неисправностей

вторник, 11 октября 2011 г.

C# узнать скорость копирования

using System;
using System.IO;
using System.Diagnostics;
 
namespace SpeedTest
{
    public class testFileCopySpeed
    {
        public int Get(string sourceFile, string destinationFile)
        {
            Stopwatch testStopwatch = new Stopwatch();
            testStopwatch.Start();
 
            File.Copy(sourceFile, destinationFile, true);
 
            testStopwatch.Stop();
 
            FileInfo someFileInfo = new FileInfo(destinationFile);
            long fileByteSize = someFileInfo.Length;
 
            File.Delete(destinationFile);
 
            return (int)((Convert.ToDouble(someFileInfo.Length) /
                        (Convert.ToDouble(testStopwatch.ElapsedMilliseconds) / 1000))
                        / 1024);
        }
    }
}

воскресенье, 21 ноября 2010 г.

Разбор в C# URL адреса на составляющие

Вводная: Необходимо было получить адрес сайта из строки вида - http://example.com:8080/viewforum.php?f=1 . То есть разобрать адресную строку на составляющие - для этого можно использовать следующий код (строка задаётся в textbox txtDomain, ответ пишется в txtAnswer) -

    private void button1_Click(object sender, EventArgs e)
    {
      txtAnswer.Text += URL_razbor(txtDomain.Text) + Environment.NewLine + Environment.NewLine;
    }

    private string URL_razbor(string a)
    {
      //Если адрес введён без префикса протокола, то по умолчанию принимаем его как http
      if (a.IndexOf("://") == -1)
      {
        a = "http://" + a;
      }

      try
      {
        System.Uri uri = new System.Uri(a);

        // Получаем порт
        int port = uri.Port;

        // Получаем имя хоста
        string host = uri.Host;

        // Получаем имя протокола
        string protocol = uri.Scheme;

        // Получаем чистый URL 
        string cleanURL = uri.Scheme + "://" + uri.GetComponents(UriComponents.HostAndPort, UriFormat.UriEscaped);

        return "URL - " +a + Environment.NewLine + "Port - " + port.ToString() + ", Host - " + host + ", protocol - " + protocol + ", cleanURL - " + cleanURL;
      }
      catch (UriFormatException)
      {
        return "Адрес " + a + " неверен" + Environment.NewLine;
      }
    }


* This source code was highlighted with Source Code Highlighter.

Данный код выдаст следующие -


URL - http://example.com:8080/viewforum.php?f=1
Port - 8080, Host - example.com, protocol - http, cleanURL - http://example.com:8080


* This source code was highlighted with Source Code Highlighter.

суббота, 20 ноября 2010 г.

Пинг в .Net доменных адресов из зоны РФ

Вводная - есть программа пингер. Всё нормально работает, но вот с доменными адресами на кириллице работать не хочет (кстати стандартный ping тоже с ними не работает)

То есть код вида

Ping ping = new Ping();
PingReply pr = ping.Send(IPadress);


* This source code was highlighted with Source Code Highlighter.


Работать к сожалению не будет.

Вот пример, как это обойти и спокойно пинговать адреса .рф