В связи с постоянно растущим давлением по сохранению пространства IP-адресов на Интернет, могут быть внедрены в практику для повышения эффективности нумерации. Смысл заключается в сокращении вдвое использование адресного диапазона, назначаемого для соединений точка-точка.
В большинстве кейсов пронумерованные подсети Интернета не используют больше, чем 30-битную маску подсетей (/30). Для которой требуется четыре адреса на стык – два адреса хоста, один адрес сети и один широковещательный. Это плохо для соединений точка-точка, поскольку имеют только два полезных адреса из четырех.
Но что мешает нам использовать префикс /31? Давайте попробуем в этом разобраться.
/31 Маска разрешает использовать 2 адреса. Первый будет адресом сети, последний бродкастовым, ну а для соединения узлов используем все те же адреса.
Ограничения при использовании префикса /31:
1. Перестают работать протоколы использующие L3 brodcast.
На самом деле на текущий момент протоколов использующих в своей работе L3 brodcast практически не осталось. Основные актуальные на сегодняшний день протоколы такие как OSPF, IS-IS, EIGRP, BGP используют в работе multicast или unicast адреса.
Вообще это ограничение можно даже записать в плюс, потому что повышается устойчивость к DoS атакам основанных на рассылке бродкаст трафика.
2. Не все устройства поддерживают префиксы /31
На Juniper и Cisco вы можете смело использовать маску /31, хотя cisco при этом выдает предупреждение (% Warning: use /31 mask on non point-to-point interface cautiously).
А вот ZyXEL уже не дает выбрать маску /31.
Mikrotik официально так же не поддерживает /31, но на практике иногда получается использовать /31 с некоторыми ухищрениями.
В итоге накладываются дополнительные ограничения на эксплуатацию сети, использования оборудования разных производителей и даже на использование оборудования одного вендора но с разными версиями прошивок.
Если вас не пугают приведенные ограничения то смело экономьте адреса используя префикс /30
Использование префикса /31 детально описано в RFC 3021 Using 31-Bit Prefixes on IPv4 Point-to-Point Links.
У нас встает вопрос безопасности нашей локальной сети, ведь китайские боты не спят и постоянно сканируют доступное сетевое пространство на наличие дыр и уязвимостей.
Имея статический IP мы подвержены риску быть взломанными. Т.к. наш статический IP доступен в интернете, он может подвергаться различного рода «атакам из вне».
Поэтому нам нужно сделать так, чтобы только мы могли подключаться к нашим роутерам и другим сервисам в локальной сети. Читать →
Данная статья будет небольшой и она будет посвящена Спискам интерфейсов в MikroTik RouterOS. В ней я постараюсь рассказать, что такое “Списки интерфейсов” и для чего они нужны.
Все действия производились на прошивке 6.42.9 (Long-Term)
Описание на MikroTik WIki: Manual:Interface/List [ENG]
Сами списки интерфейсов в RouterOS V6 (на 10.10.2018) присутствуют довольно давно, тогда они еще были очень простыми. Читать →
При эксплуатации IPSEC и балансировке каналов выяснился интересный факт: при установке IPSEC не получается обменяться всеми ключами. IPSEC вроде бы как и поднимается, но работать не работает. Если посмотреть IP → IPsec → Installed SAs — можно увидеть что счетчик «Current Bytes» для одного из ключей равен 0, т.е. обмен ключами все-таки не прошел. Для правильной работы необходимо добавить еще два правила:
К подключению резервного интернет канала дома каждый приходит по своим причинам, но некоторые устройства в умном доме требуют постоянного подключения к сети интернет, оперативность получения важных уведомлений напрямую зависит от стабильности подключения к тому же, как же мы узнаем, что интернет пропал, не имея резервного канала 🙂
Какой тип подключения выбрать в качестве резервного зависит только от желания, финансовой и технической возможности. Требования к скорости не большие и зависит от того, каким устройствам необходим постоянный доступ к сети. Если не использовать постоянный доступ для торрент обмена, то в качестве резервного канала можно использовать USB LTE модем с лимитированным трафиком.
Входные данные
Имеется MikroTik RB4011 с настройками:
Основной интернет канал 100МБит, внешний IP, интерфейс ether1
Резервный интернет канал 10МБит, интерфейс ether2
OpenVPN подключение к внешней VPS, интерфейс vpn-ovpn
Туннель 6to4 для IPv6 трафика, v6to4-tunnel
Необходимо при разрыве основного канала пустить весь трафик по резервному, переподключить VPN, погасить туннель 6to4 и прислать уведомление в телеграмм.
Настройка
Для удобства переименовываем названия портов ether1 и ether2 в ether1-wan-main и ether2-wan-reserv
/interface ethernet set ether1 name="ether1-wan-main"
/interface ethernet set ether2 name="ether2-wan-reserv"
Если IP адреса для основного и/или резервного канала прилетают по DHCP, то в настройках DHCP Сlient’а необходимо для каждого интерфейса выставить параметр Add Default Route — no.
Добавляем маршруты по умолчанию, маршрут основного канала будет иметь дистанцию (distance) 1, резервного 2:
где: gateway=100.99.88.1 — шлюз для основного канала, gateway=10.9.8.1 — шлюз для резервного канала. Неактивный маршрут резервного канала будет выделен синим цветом.
Для мониторинга состояния каналов будет задействована утилита Netwatch (Tools -> Netwatch), в качестве хостов наблюдения будут использованы DNS сервера Яндекс, адрес 77.88.8.8 будет использоваться для проверки работоспособности основного канала, 77.88.8.1 — для резервного.
Добавляем отдельные маршруты для проверяемых адресов, что бы проверка шла четко по определенному интернет каналу не зависимо от того через какой канал идет маршрут по умолчанию.
/ip route add dst-address=77.88.8.8 gateway=100.99.88.1 distance=1 comment="Yandex DNS - Check main internet channel"
/ip route add dst-address=77.88.8.1 gateway=10.9.8.1 distance=1 comment="Yandex DNS - Check reserv internet channel"
В Firewall (IP -> Firewall) добавляем запрещающие правила на прохождение пакетов к проверяемым адресам не через свой канал, на случай, если канал отсохнет, то маршрут использующий этот канал станет не активным и будет задействован текущий маршрут по умолчанию. Эти правила необходимо расположить выше правил разрешающих доступ в интернет.
Как говорилось выше, в качестве мониторинга будет использоваться утилита Netwatch. Настройка этой утилиты крайне проста, задается хост наблюдения и интервал через какое время необходимо выполнять проверку, при переходе наблюдаемого хоста из состояния Down в состояние Up выполняются скрипты с вкладки UP, при переходе из состояния Up в состояние Down выполняются скрипты с вкладки DOWN.
Для отправки уведомлений в Telegram ботом будет задействована утилита fetch. Как известно боту может быть отправлено сообщение через URL вида https://api.telegram.org/bot[API_KEY]/sendMessage?chat_id=[CHAT_ID]&text=[TEXT]. Подробнее как настроить бота в Telegram описано здесь.
[API_KEY] — токен для доступа к HTTP API
[CHAT_ID] — ID вашего с ботом чата
[TEXT] — отправляемое сообщение
Для проверки основного канала в Netwatch добавляем (Tools -> Netwatch -> +).
Каждую минуту происходит проверка хоста с IP адресом 77.88.8.8, как только происходит смена состояния из доступен в недоступен, то начинается обработка скрипта, описанного на вкладке DOWN. Комментарии:
В таблице маршрутизации отключается маршрут с комментарием MAIN_CHAN, это наш основной маршрут с distance=1. Т.к. основной маршрут отключен, то активным становится маршрут с distance=2, у нас он отмечен комментарием RESERV_CHAN, весь трафик пойдет в резервный канал.
Отключается туннель 6to4 т.к. он завязан на внешний IP адрес основного канала.
Сбрасывается DNS cache, т.к. помимо IPv4 трафика используется IPv6 канал и на какие-то ресурсы в кэше будут записи на IPv6 адреса.
Отключается и через 3 секунды включается OpenVPN соединение, перезагрузка сделана на случай более быстрого переключения и избежания подвисаний.
Отправка сообщения в Telegram
После отправки в папке Files создается файл, удаляем его
Аналогичная ситуация происходит на вкладке UP при переходе хоста с IP адресом 77.88.8.8 из состояния Down в состояние Up.
Для проверки резервного канала в Netwatch добавляем (Tools -> Netwatch -> +).
В моей домашней сети все устройства, относящиеся к умному дому отселены в отдельную сеть, это не только шлюзы и лампы Xiaomi, а также телевизор, медиа проигрыватель, ресивер, различные Wi-Fi реле и розетки, и, конечно сервер Home Assistant. Это повышает безопасность, устройства локальной сети, кроме избранных, не будут иметь доступ к ресурсам умного дома и соответственно вероятность того, что кто-то случайно или специально выкрутит громкость ресивера на максимум со своего телефона не велика, а беря в руки пульт или прикасаясь к ручке громкости можно получить в лоб этим самым пультом.
Собственно, есть два устройства MikroTik, RB4011 и RB962, оба маршрутизаторы, первый работает как шлюз для доступа в интернет и switch, второй как switch и Wi-Fi точка доступа. В устройствах собрано по два бриджа, для домашней локальной сети и сети умного дома, Wi-Fi точка доступа домашней сети работает в диапазонах 2.4G и 5G, Wi-Fi точка для подключения устройств УД только в 2.4G. Устройства находятся в разных помещениях квартиры и соединены проводом. Что бы не тянуть второй провод и обеспечения передачи трафика обоих сетей между устройствами будут использоваться VLAN’ы, питание на второе устройство будет подаваться по этому же проводу посредствам PoE.
Наверно здесь должно быть описание что такое VLAN’ы, для чего они нужны и как это работает, но этого не будет, считаем, что читатель уже знает, что это такое. Единственное замечание, это то, что описанный ниже способ, является программной реализацией обработки VLAN и вся нагрузка ложится на ЦП.
Настройка первого роутера
Устройство RB4011 имеет десять ethernet портов плюс порт SFP-SFP+. Порт SFP мы рассматривать не будем, в итоге мы должны будем получить следующую конфигурацию:
Порт ether1 — интернет (WAN порт), считаем, что интернет на устройстве уже настроен
Bridge 18, IP адрес 192.168.18.1, ethernet порты 6 — 9, vlan18 untagged — сеть умного дома
Bridge 22, IP адрес 192.168.22.1, ethernet порты 2 — 5, vlan22 untagged — домашняя локальная сеть
Порт ether10 — trunk порт на второе устройство, vlan18 tagged, vlan22 tagged
Переименовываем порт ether10 в ether10-trunk, что бы было понятнее:
/interface ethernet set ether10 name="ether10-trunk"
Создаем vlan18 и vlan22 с соответствующими VLAN ID, оба вешаем на порт ether10-trunk, трафик на этом порту будет Tagged.
Создаем бриджи для двух сетей и назначаем им адреса, добавляем порты и VLAN’ы в соответствующие бриджи, трафик на портах бриджа будет Untagged.
/interface bridge add name="bridge18"
/interface bridge add name="bridge22"
/ip address add address=192.168.18.1 interface=bridge18
/ip address add address=192.168.22.1 interface=bridge22
/interface bridge port add bridge=bridge18 interface=ether6
/interface bridge port add bridge=bridge18 interface=ether7
/interface bridge port add bridge=bridge18 interface=ether8
/interface bridge port add bridge=bridge18 interface=ether9
/interface bridge port add bridge=bridge18 interface=vlan18
/interface bridge port add bridge=bridge22 interface=ether2
/interface bridge port add bridge=bridge22 interface=ether3
/interface bridge port add bridge=bridge22 interface=ether4
/interface bridge port add bridge=bridge22 interface=ether5
/interface bridge port add bridge=bridge22 interface=vlan22
Настройка второго роутера
Устройство RB962 имеет пять ethernet портов плюс порт SFP, два WLAN интерфейса, на wlan1 работает 2.4G, wlan2 на 5G, оба задействованы для локальной домашней сети, для сети УД создан дополнительный виртуальный WLAN интерфейс wlan-smarthome работающий на 2.4G. Порт SFP мы, как и ранее, рассматривать не будем, но по необходимости его можно задействовать в своих нуждах. В конечном итоге конфигурация должна быть следующей:
Порт ether1 — trunk порт на первое устройство, vlan18 tagged, vlan22 tagged
Bridge 18, IP адрес 192.168.18.2, ethernet порты 2 — 5, виртуальный интерфейс wlan 2.4G, vlan18 untagged — сеть умного дома
Bridge 22, IP адрес 192.168.22.2, основные wlan интерфейсы 2.4G и 5G, vlan22 untagged — домашняя локальная сеть
Переименовываем порт ether1 в ether1-trunk, что бы было понятнее:
/interface ethernet set ether1 name="ether1-trunk"
Создаем vlan18 и vlan22 с соответствующими VLAN ID, оба вешаем на порт ether1-trunk, трафик на этом порту будет Tagged.
Создаем бриджи для двух сетей и назначаем им адреса, добавляем порты и VLAN’ы в соответствующие бриджи, трафик на портах бриджа будет Untagged.
/interface bridge add name="bridge18"
/interface bridge add name="bridge22"
/ip address add address=192.168.18.2 interface=bridge18
/ip address add address=192.168.22.2 interface=bridge22
/interface bridge port add bridge=bridge18 interface=ether2
/interface bridge port add bridge=bridge18 interface=ether3
/interface bridge port add bridge=bridge18 interface=ether4
/interface bridge port add bridge=bridge18 interface=ether5
/interface bridge port add bridge=bridge18 interface=wlan-smarthome
/interface bridge port add bridge=bridge18 interface=vlan18
/interface bridge port add bridge=bridge22 interface=wlan1
/interface bridge port add bridge=bridge22 interface=wlan2
/interface bridge port add bridge=bridge22 interface=vlan22
Теперь весь трафик, исходящий с устройства подключенного к RB962 направленный на устройство, подключенное к RB4011 сначала попадает в бридж, далее в порт ether1-trunk, тегируется соответствующим VLAN ID, попадает в порт ether10-trunk на RB4011, снимается тег VLAN ID, попадает в соответствующий бридж и затем в устройство назначения.
Настройка Firewall описана не будет, т.к. это уже материал для отдельной статьи.