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

Make Sysadmins Great Again

Почему за EoIP over OpenVPN нужно отрубать руки. И почему обе.

У роутерной ОС RouterOS (каламбур получился =)) есть уникальная возможность создавать Ethernet туннели между удаленными точками. Технология проприентарная и никем больше не реализованная (такой же результат можно получить с помощью VPLS, но это совсем другой уровень). Функция интересная и даже рабочая. С помощью неё мы можем соединить несколько удаленных точек в один широковещательный домен с одним DHCP сервером и связью на L2.

Технология эта применяется… А вот тут тупик. Давайте подумаем, где же она может применяться и чем может не устроить старый добрый роутинг. Связь между любым оборудованием, знакомым с IP (а такого оборудования с Ethernet интерфейсами сейчас чуть менее 100%) возможна с помощью маршрутизации - это основа протокола. На ум приходят лишь видеорегистраторы, способные видеть камеры лишь в пределах своего сегмента сети. 


Динамическая маршрутизация в Mikrotik RouterOS


Хорошая презентация о настройке фаервола в RouterOS


Сравнение туннелей в RouterOS

http://rickfreyconsulting.com/mikrotik-vpns/


Сегментация сети с использованием оборудования Mikrotik и D-Link

Рост компании - неминуемый процесс, рано или поздно приходящий ко всем. Увеличение количества клиентов, открытие новых отделов, слияния, поглощения - всё это увеличивает количество компьютеров, принтеров и других устройств в сети.

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

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


Yet another RouterOS script

Скрипт ищет интерфейс sstp клиента, имя которого содержит в себе строку video, копирует имя интерфейса, имя пользователя и пароль для подключения, а так же адрес vpn сервера. Удаляет упоминание об этом интерфейсе в настройках OSPF (т.к. после удаления появится интерфейс unknown, а без удаления интерфейса новый не создастся - имена одинаковые), создает нешифрованное соединение pptp с аналогичными настройками и вписывает его в параметры OSPF.#!Ищет sstp-интерфейс с именем, содержащим video#! копирует его настройки, убирает номер порта и#! создает pptp интерфейс с подобными настройками#! Copyright Dmitry Bubnov http://bubnovd.net/interface sstp-client:local name [get [find name~“video”] name]:local srv [get [find name~“video”] connect-to]:local conto [:pick $srv 0 ([:len $srv]-4)]:local user [get [find name~“video”] user]:local pwd [get [find name~“video”] password]/routing ospf interface remove [find interface=$name]remove $name/interface pptp-client add connect-to=$conto user=$user password=$pwd name=$name allow=mschap2 disabled=no profile=default/routing ospf interface add interface=$name cost=9 network-type=point-to-point Он же в Python для пакетного изменения:#!/usr/bin/env pythonfrom RosAPI import Coremas = []with open(“list.txt”) as f: mas = f.read().splitlines()for i in range(len(mas)): try: a = Core(mas[i]) except: print “No Connection” else: a.login(“user”, “password”) print i a.talk(["/system/script/add", “=name=” + “temp”, “=source=” + ‘#! Copyright Dmitry Bubnov http://bubnovd.net\r\n/interface sstp-client\r\n:local name [get [find name~"video"] name]\r\n:local srv [get [find name~"video"] connect-to]\r\n:local conto [:pick $srv 0 ([:len $srv]-4)]\r\n:local user [get [find name~"video"] user]\r\n:local pwd [get [find name~"video"] password]\r\n/routing ospf interface remove [find interface=$name]\r\nremove $name\r\n/interface pptp-client add connect-to=$conto user=$user password=$pwd name=$name allow=mschap2 disabled=no profile=default\r\n/routing ospf interface add interface=$name cost=9 network-type=point-to-point’]) a.talk(["/system/script/run", “=.id=” + “temp”]) a.talk(["/system/script/remove", “=.id=” + “temp”]) print mas[i]  


DHCP, Option 82

Встала задача: определять на каком порту какого свитча находится конкретный IP-адрес. На самом деле задача глобальнее, но сейчас имеет смысл именно это. В ходе гугления вышел на DHCP Option 82. Инфы много, но кроме теории важно это.
Суть в том, что коммутатор в запрос DHCP добавляет два поля: Agent Remote ID (идентификатор коммутатора) и Agent Circuit ID (идентификатор порта). Казалось бы, всё просто. Но я столкнулся с некоторыми трудностями.

Дело в том, что сеть поделена на сегменты для улучшения безопасности, выделения потоков трафика и уменьшения широковещательного трафика. Каждый сегмент имеет свою адресацию и, соответственно, свой DHCP-сервер.
Чтобы настроить работу Option 82, коммутатор необходимо настроить как DHCP-relay. Это значит, что при получении DHCP request’a коммутатор просто отправит этот запрос DHCP серверу, указанному в настройках релея. Таким образом можно уменьшить количество широковещательного трафика в пределах сегмента и иметь один DHCP сервер на несколько подсетей. Но, DHCP-relay может работать только с одним DHCP-сервером (указанным в настройках релея), соответственно, все наши сегменты получат адреса из одной подсети, что
нас совсем не устраивает.


Моя сертифицированный консультант Mikrotik

Теперь я сертифицированный консультант Mikrotik. Единственный на Урале, между прочим. Жду ваших вопросов.Страница с консультантами тут


Режимы бондинга в RouterOS. И не только в RouterOS

В вики микротика не совсем понятно описано. На хабре об этом сказали лучше:mode=0 (balance-rr)Последовательно кидает пакеты, с первого по последний интерфейс. mode=1 (active-backup)Один из интерфейсов активен. Если активный интерфейс выходит из строя (link down и т.д.), другой интерфейс заменяет активный. Не требует дополнительной настройки коммутатораmode=2 (balance-xor)Передачи распределяются между интерфейсами на основе формулы ((MAC-адрес источника) XOR (MAC-адрес получателя)) % число интерфейсов. Один и тот же интерфейс работает с определённым получателем. Режим даёт балансировку нагрузки и отказоустойчивость.mode=3 (broadcast)Все пакеты на все интерфейсыmode=4 (802.3ad)Link Agregation — IEEE 802.3ad, требует от коммутатора настройки. mode=5 (balance-tlb)Входящие пакеты принимаются только активным сетевым интерфейсом, исходящий распределяется в зависимости от текущей загрузки каждого интерфейса. Не требует настройки коммутатора.mode=6 (balance-alb)Тоже самое что 5, только входящий трафик тоже распределяется между интерфейсами. Не требует настройки коммутатора, но интерфейсы должны уметь изменять MAC.


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

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