Админская фамилия

Make Sysadmins Great Again

Почему нужно продумывать самые безумные варианты

Здесь  история о том, как один окурок разрушил город. Выводом ко всей этой истории напрашивается одно: продумывайте все варианты развития событий! Никто не может гарантировать вам такой сервис, какой вы ожидаете. И пусть даже в SLA все красиво. Относится не только к айтишному, но и ко всем сферам жизни. И под .“сервисом” я понимаю не только предоставление услуг для вас, но и работу любого вашего решения.


Параметры STP в D-Link

Мой вольный перевод параметров STP Reference Guide DGS-3120Edge Port - порт, напрямую подключенный к сегменту, где STP-петля заведомо не может существовать. Например, акцесс-порт до ПК.P2P Port - эти порты способны к быстрому переключению. Используются для соединения с другими бриджами (?). В RSTP/MSTP все порты, находящиеся в режиме full-duplex по дефолту становятся p2p портами. Можно изменить вручную.External Cost - метрика, показывающая относительную стоимость пересылки пакетов на порт. По дефолту коммутатор устанавливает 20000 для гигабитных линков и 200000 для 100 Мб. Чем меньше значение, тем более вероятно, что порт будет использоваться для форвардинга.Restricted Role - ограниченный порт. При значении True порт никогда не может быть Root.


А знали ли Вы, что...

Первые три бита в байте Type of Service в IP пакете было предназначено для специальных приложений Министерства обороны США (RFC 1122)


Интересные RFC

В этом посте буду собирать номера RFC, интересующие меня. Это сети и безопасность. Пост будет периодически дополняться.RFC 1180 - учебник по TCP/IP. Для маленькихRFC 1122 - Требования к хостам Internet - коммуникационные уровниRFC 1122 - Требования к хостам Internet - прикладные и служебные протоколы.RFC 1009 - Требования к маршрутизаторамRFC 1011 - Официальные протоколы ИнтернетаRFC 791 - протокол IPRFC 792 - протокол ICMPRFC 793 - протокол TCPRFC 826 - протокол ARPRFC 894 - стандарт передачи дейтаграмм IP в сетях EthernetRFC 1042 - стандарт передачи дейтаграмм IP в сетях IEEE 802RFC 950 - стандартные процедуры организации подсетей IPRFC 1112 - Расширение IP Multicasting (IGMP)


Список дешевых VPS

http://lowendstock.com/http://serverbear.com/compare?Sort=Monthly+Cost&Order=asc&Server+Type=VPS&Monthly+Cost=-&HDD=-&RAM=-&Virtualization=http://httpzoom.com/http://lowendbox.com/http://vds.menu/


Mikrotik RouterOS. Winbox грузит CPU на 100%

Обнаружил баг в RouterOS, установленной на x86 под QEMU. Процессор нагружается на 100%, винбоксом что-то делать нереально. Подключаюсь по ssh, открываю /tool profile и вижу, что проц грузится на 90-100% винбоксом. Смотрю в /user active print detail и вижу себя, подключенного по ssh и сессию винбокса с севера мониторинга The Dude. Хотя все винбоксы я уже закрыл. Видимо, дудка не всегда корректно закрывает винбоксы, запущенные в её интерфейсе и процесс остается крутиться на сервере. Захожу на сервер, перезапускаю службу The Dude и нагрузка падает.Но это всего лишь снятие нагрузки с проца, в следующий раз при запуске винбокса ситуация повторяется. В её корнях ещё предстоит разобраться.


Насколько тяжело шифрование

АТЭНШН!! Пост писался очень давно. Не доведен до логического завершения. Пощу просто для того, чтобы видеть графикиИзмерил пропускную способность на Mikrotik’ах.Условия тестирования:Mikrotik RB1100AHx2Mikrotik 751G-2HnDRouterOS на обоих версии 6.15 Между ними оптика пропускной способностью 100 Mbps.Было произведено 5 замеров скорости:Без VPN. От интерфейса до интерфейса по оптикеSSTP с шифрованиемSSTP без шифрованияPPTP с шифрованиемPPTP без шифрованияПервая картинка - роутер, измеряющий скорость. График скорости и загрузка системы.Вторая картинка - клиент. Загрузка системы и объем трафика на интерфейсе.Тест номер 1. Без VPN. Между интерфейсами оптика. Как видим по прямому соединению результаты великолепны: скорость порядка 100 Mbps в обоих направлениях, система отдыхает.Тест номер 2. SSTP с шифрованием.Тут всё намного хуже - процессор клиентского роутера загружен на 100%, благодаря шифрованию.Скорость на отдачу 13 Mbps, на прием 2 Mbps.


SMS оповещения из The Dude

Какой смысл в мониторинге ключевых устройств, если об их некорректной работе будет знать только сама система мониторинга? Именно поэтому система мониторинга должна оповещать админа о некорректной работе. Я работаю Mikrotik’ами, поэтому использую фирменную систему мониторинга The Dude. И сейчас мы научим её слать почту и смс.По умолчанию The Dude умеет отправлять email, но для этого ей нужен SMTP сервер без авторизации. Что нам поднимать конечно же не имеет смысла. В общем, разработчики поленились сделать кошерно.Пытливые умы же научились отправлять почту сторонним приложением.Качаем SMTP-клиент mailsendКладем его, допустим, сюда C:\Program Files (x86)\Dude\mailsend\mailsend.exe (не забудьте переименовать экзешник)Создаём файлик mailsend.cmd следующего содержания:  :: Send email notifications from Dude via Gmail:: set mailsenderdir=C:\Program Files (x86)\Dude\mailsendset mailsender=mailsend.exeset smtpsender=username@gmail.comset smtpsenderfullname=usernameset smtpserver=smtp.gmail.comset smtpport=465set smtpuser=username@gmail.comset smtppwd=passwordset mailto=username@gmail.com::::"%mailsenderdir%%mailsender%" -smtp %smtpserver% -port %smtpport% -ssl -auth -user %smtpuser% -pass %smtppwd% -t %mailto% -f %smtpsender% -name “%smtpsenderfullname%” +cc +bc -q -sub %1 -M %2::::pause::Эти параметры меняем на свои: smtpsender - ящик, с которого будут отправляться письма, smtpsenderfullname - имя пользователя этого ящика, smtpuser - опять ящик, smtppwd - пароль к нему, mailto - ящик админа (на который будем слать алерты)4. Создаем новое уведомление в The Dude:Имя: mailТип: execute on serverКоманда: “C:\Program Files (x86)\Dude\mailsend\mailsend.cmd” “Service [Probe.Name] on [Device.Name] is now [Service.Status]” “Service [Probe.Name] on [Device.Name] is now [Service.Status] ([Service.ProblemDescription])"После нажатия кнопки Test письмо должно упасть на почту.С почтой разобрались. Теперь нужно научить Дудку отправлять СМС. Саму мониторилку мы больше мучать не будем - СМС умеет отправлять гуглопочта.Итак, что нужно для начала: у вас должен быть привязан телефонный номер к Google Calendar, как это сделать написано вот тут — Регистрация мобильного телефона:support.google.com/calendar/bin/answer.py?hl=ru&hlrm=en&answer=45351Создайте новый ярлык в Gmail с именем, например, SMSnotify (или любым другим, по вашему усмотрению). Как это сделать написано вот тут – Использование ярлыков:support.google.com/mail/bin/answer.py?hl=ru&hlrm=ru&answer=118708#0Создайте фильтр, который будет применять ярлык SMSnotify к письмам от системы мониторинга ( From: username@gmail.com). Как это сделать, написано вот тут – Использование фильтров:support.google.com/mail/bin/answer.py?hl=ru&hlrm=ru&answer=6579#0Войдите в Google Drive и создайте новую электронную таблицу (Spreadsheet). Откройте созданную таблицу и в верхнем меню выберите Tools > Script Editor.Нужно создать доп. календарь и настроить SMS уведомления: установить по-умолчанию для всех новых встреч вот так:Настройки->Календари->Уведомления->По умолчанию->SMS->%% минВ этом примере имя календаря будет “email"Вставляем следующий код:function my_notification() { var calendar = CalendarApp.getOwnedCalendarsByName(‘email’)[0]; //открываем календарь с именем “email” var threads = GmailApp.getUserLabelByName(‘SMSnotify’).getThreads(); //переменная, в которой хранится коллекция цепочек с ярлыком SMSnotify var now = new Date(); if(threads == 0) return; // прекращение выполнения, если новых цепочек нет for(i in threads) // создаем события { calendar.createEvent(threads[i].getFirstMessageSubject(), new Date(now.getTime()+60000), new Date(now.getTime()+60000)); } GmailApp.getUserLabelByName(‘SMSnotify’).removeFromThreads(threads); //снимаем метки “SMSnotify” с цепочек}6.  После того, как вы ввели код, нужно создать триггер по которому и будет запускаться скрипт. Для этого кликаем на меню “Ресурсы”, а в нем на “Триггеры текущего скрипта”. 7.  Нам нужен time-driven триггер с частотой повторения одна минута.Этот скрипт будет проверять входящие от с ярлыком SMSnotify (от юзера username@gmail.com). И, в случае наличия новых писем создавать событие в календаре и снимать ярлык с уже обработанного письма. СМС будет слать сам календарь.Статья написана методом копипаста! Навеяно этим: отправка email уведомлений, отправка СМС из гуглопочты


RouterOS DNS failure

В RouterOS 6.27 добавили несколько фич в DNS резолвер. В некоторых ситуациях адреса просто не резолвятся (DNS failure). Выход простой - в IP-DNS вместо нулей в строках  Query Server Timeout и Query Total Timeout прописываем 2. И DNS снова в строю!


Объединение одинаковых подсетей в RouterOS

Имеем две сети с одинаковой адресацией и site-to-site VPN между ними. Необходимо обеспечить взаимодействие между сетями, не изменяя их внутренней адресации. Не спрашивайте почему нельзя сменить адресацию - просто нельзя. В обеих точках оборудование Mikrotik.Решение подсказала эта статья. Вся основная настройка будет проводиться только на роутере-клиенте. На втором роутере необходимо будет лишь прописать маршрут до фэйковой сети. Будем считать, что VPN уже функционирует. Я не буду расписывать детали прохождения пакетов, т.к. это описано в указанной статье. Просто код с хабра и как это делается в RouterOS.Итак, наша сеть - 192.168.0.0/16. Сеть, в которую нужно попасть - 192.168.15.0/24. Отличия моих адресов от хабра:1. там с обеих сторон 192.168.0.0/24. У меня 192.168.0.0/16 и 192.168.15.0/242. там фэйковые адреса 10.8.1.0/24, 10.8.2.0/24. У меня 10.9.0.0/16 и 172.25.25.0/24iptables -t mangle -A PREROUTING -i tun0 -d 10.8.1.0/24 -j MARK –set-mark 8chain=prerouting action=mark-connection new-connection-mark=in passthrough=yes dst-address=172.25.25.0/24 in-interface=vpnchain=output action=mark-routing new-routing-mark=in passthrough=yes connection-mark=in iptables -t nat -A PREROUTING -m mark –mark 8 -j NETMAP –to 192.168.0.0/24chain=dstnat action=netmap to-addresses=192.168.15.0/24 connection-mark=iniptables -t nat -A POSTROUTING -m mark –mark 8 -j NETMAP –to 10.8.2.0/24chain=srcnat action=netmap to-addresses=10.9.0.0/16 connection-mark=inip route add 192.168.0.0/24 dev eth1 table netmapdst-address=192.168.15.0/24 gateway=ether2-master-local routing-mark=inНу и приведу всю конфигурацию Mangle, NAT и Route./ip firewall mangle> printFlags: X - disabled, I - invalid, D - dynamic 0   chain=prerouting action=mark-connection new-connection-mark=in passthrough=yes     dst-address=172.25.25.0/24 in-interface=vpn 1   chain=output action=mark-routing new-routing-mark=in passthrough=yes     connection-mark=in 2   chain=prerouting action=mark-connection new-connection-mark=out passthrough=yes     dst-address=10.9.0.0/16 in-interface=ether2-master-local 3   chain=output action=mark-routing new-routing-mark=out passthrough=yes     connection-mark=out/ip firewall nat> print Flags: X - disabled, I - invalid, D - dynamic  0   ;;; default configuration     chain=srcnat action=masquerade out-interface=ether1-gateway  1   chain=dstnat action=netmap to-addresses=192.168.15.0/24 connection-mark=in  2   chain=srcnat action=netmap to-addresses=10.9.0.0/16 connection-mark=in  3   chain=dstnat action=netmap to-addresses=192.168.15.0/24 routing-mark=out  4   chain=srcnat action=netmap to-addresses=172.25.25.0/24 routing-mark=out  /ip> route print detail Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit  0 A S  dst-address=192.168.15.0/24 gateway=ether2-master-local         gateway-status=ether2-master-local reachable distance=1 scope=30         target-scope=10 routing-mark=in  1 A S  dst-address=192.168.0.0/16 gateway=vpn         gateway-status=vpn reachable distance=1 scope=30 target-scope=10         routing-mark=out  4 A S  dst-address=192.168.0.0/16 gateway=%vpn_serv_IP%         gateway-status=192.168.242.1 reachable via  vpn distance=1 scope=30         target-scope=10