Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik

  • Автор:

Mikrotik-VPN-BGP-000.pngСегодня интернет давно уже не то дикое и свободное место, которым он был на заре своего существования. Одной из характерных черт современной сети является ограничение доступа к контенту на основании региональной принадлежности клиента, ярким представителем такого подхода является Netflix. Для обхода подобных ограничений применяется выборочный доступ к подобным ресурсам через VPN с точкой выхода в нужной юрисдикции и ручным формированием списков. Но хорошо, если роутер один, а если много? Тогда придется автоматизировать данный процесс, и мы сегодня расскажем как.

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

О том как настроить выборочный доступ к сайтам через VPN мы рассказывали в нашей статье: Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik. Это простое и надежное решение, но имеющее один существенный недостаток - списки формируются локально на самом роутере. Если роутер у вас один, то это несущественно, а если несколько? Тогда вам придется последовательно вносить нужные адреса в списки на каждом роутере, что может быть не совсем удобно, либо совсем неудобно, если роутеров много. А реалии сегодняшнего дня предусматривают активную цифровизацию нашего быта: роутер дома, роутер на даче, роутер у пожилых родителей и т.д. и т.п., не говоря уже об организациях с филиалами и удаленными сотрудниками.

Да, есть от чего прийти в уныние, хотелось бы один раз добавить нужный сайт в список и получить результат сразу на всех устройствах. Но не будем унывать, такой способ есть и предоставляют нам его "взрослый" протокол динамической маршрутизации BGP и RouterOS, которая умеет с ним работать. Вопреки нашей традиции мы не будем в рамках данной статьи рассматривать работу BGP, так как это тема даже не отдельной статьи, а цикла, требующего серьезных теоретических основ. Но не следует пугаться раньше времени, ничего сложного в настройках нет, достаточно правильно и внимательно повторить все наши действия.

Будем считать, что у вас уже есть рабочий VPN-сервер с точкой выхода в нужной юрисдикции, мы будем использовать OpenVPN-сервер на базе Ubuntu 18.04 c точкой выхода в США, как его настроить мы писали в статьях:

Но это не является обязательным условием, вам подойдет любой Linux-сервер с любым типом VPN-доступа.

Установка и настройка службы маршрутизации

Для работы с BGP установим универсальный пакет для работы с динамической маршрутизацией bird:

apt update
apt install bird

Сразу остановим и отключим службу для протокола IPv6:

systemctl stop bird6
systemctl disable bird6

Затем откроем файл /etc/bird/bird.conf и приведем его к следующему виду:

router id 10.89.0.1;

protocol kernel {
metric 64;
import none;
#export all;
}

protocol device { scan time 60; }

protocol direct {
interface "tun*";
}

protocol static us_list {
import all;
include "iplist.txt";
}

Коротко пройдемся по нему. Router ID - идентификатор роутера, 32-битное число внешне похожее на IP-адрес, но им не являющееся. Хорошим тоном считается указывать здесь IP-адрес одного из интерфейсов роутера, мы будем использовать внутренний адрес VPN-сервера.

Секция protocol kernel отвечает за маршруты самой системы, здесь мы ничего не трогаем (ни импортируем, ни экспортируем), protocol device определяет с какой периодичностью будут опрашиваться сетевые устройства, а в protocol direct мы фактически указываем на каких интерфейсах будет работать служба, в нашем случае мы ограничим ее только VPN-подключениями, указав интерфейсы tun, если вы используете иные типы VPN, то вместо tun следует указать используемый тип интерфейса, скажем ppp*. Также можно перечислить требуемые типы интерфейсов через запятую:

interface "tun*", "ppp*";

И наконец, секция protocol static us_list отвечает за статические маршруты, которые будут импортироваться из файла iplist.txt, здесь us_list - наше собственное название секции, таких секций вы можете создать несколько, если хотите отдавать на разные устройства разные наборы списков, соответственно файлы тоже должны быть разные. Если нужно подключить несколько файлов, то добавляем несколько строк include.

Теперь начнем подключать наши роутеры, для каждого роутера добавим ниже секцию следующего содержания:

protocol bgp LanLab {
description "Mikrotik LAN LAB";
neighbor 10.89.0.2 as 65002;
import none;
export where proto = "us_list";
local as 65001;
next hop self;
passive off;
source address 10.89.0.1;
}

Где protocol bgp LanLab указывает что мы используем протокол BGP, а LanLab - наше название секции. Опция description не является обязательной, но мы рекомендуем обязательно заполнять ее понятным описанием, чтобы вы потом не путались в собственных устройствах. В опции neighbor мы указываем адрес роутера в VPN-сети и его номер автономной системы AS.

В BGP автономная система - это система IP-сетей и маршрутизаторов, управляемых одним или несколькими операторами, имеющими единую политику маршрутизации с Интернетом. В нашем случае мы реализуем схему eBGP и каждый роутер должен иметь собственный номер AS. Для частного использования выделяются номера AS от 64512 до 65534, из них диапазон 64496-64511 зарезервирован для примеров и документации. В принципе, так как наш сервис ограничен сугубо VPN-сетью, мы можем использовать любые адреса AS, но лучше придерживаться общепринятых соглашений.

Опция local as задает номер локальной автономной системы. В данном случае для нее мы выбрали значение 65001, а подключаемые роутеры будут получать номера AS от 65002 и далее. В export where proto мы указываем имена секций protocol static маршруты которых будут экспортироваться на клиента. А source address передает для них адрес шлюза, в нашем случае это внутренний адрес VPN-сервера.

Таким образом для каждого адреса из iplist.txt на клиента будет передан маршрут с указанием в качестве шлюза нашего VPN-сервера. Создав несколько секций со статическими маршрутами, вы можете комбинировать их передачу на клиента добавляя нужно количество строк с опцией export, либо добавляя в каждую секцию нужные файлы с адресами.

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

route 87.240.190.78/32 reject;

Где 32 - префикс сети, соответствующий одиночному хосту, также никто не мешает передавать в списки целые подсети с более широкими префиксами. Это может быть удобно в корпоративных сетях, когда нужно передать всем устройствам маршрут к центральной сети:

route 192.168.111.0/24 reject;

В повседневной жизни обычно мы имеем дело с доменными именами, поэтому добавлять в списки именно IP-адреса может показаться неудобным, но ведь у нас Linux, а значит практически неограниченные возможности командной строки. Вводим в терминал следующее "заклинание":

 nslookup -type=A example.com | awk '/^Address: / { print "route", $2 "/32 reject;" }' >> /etc/bird/iplist.txt

И наш список будет пополняться автоматически, все что вам остается - это менять доменное имя и имя файла списка при необходимости.

На самом деле никакой "магии" здесь нет. Мы получаем с помощью команды nslookup все IPv4 адреса (опция -type=A) для указанного доменного имени и передаем результат в AWK, мощный инструмент разбора строковых выражений, который формирует результирующую строку(и) в нужном формате и добавляет ее в конец указанного файла.

После добавления в списки новых строк следует перезагрузить bird:

systemctl restart bird

Посмотреть какие маршруты он импортировал можно командой:

birdc show route

В выводе вы должны увидеть все адреса добавленные в список.

Mikrotik-VPN-BGP-001.pngНа этом настройка VPN-сервера закончена, перейдем к настройке роутеров.

Подключение роутера Mikrotik

Откроем Winbox и перейдем в Routing - BGP, на закладке Instances откроем запись default и внесем в нее следующие изменения: укажем выбранный для данного роутера номер автономной системы AS, в нашем случае 65002 и Router ID, который по нашему соглашению должен совпадать с адресом роутера в VPN-сети, т.е. 10.89.0.2. Также в самом низу установим флаг Ignore AS Path Length.

Mikrotik-VPN-BGP-002.png

Эти же действия в терминале:

/routing bgp instance
set default as=65002 ignore-as-path-len=yes router-id=10.89.0.2

Затем на закладке Peer установим соседские отношения с нашим VPN-сервером. Создадим новый BGP Peer и укажем в нем: Name - произвольное имя, Remote Address - адрес удаленной системы, в нашем случае внутренний адрес VPN-сервера, Remote AS - номер автономной системы удаленного сервера 65001, также устанавливаем флаг Multihop и в поле In Filter выбираем dynamic-in.

Mikrotik-VPN-BGP-003.pngЛибо выполните в терминале:

/routing bgp peer
add in-filter=dynamic-in multihop=yes name=VPN remote-address=10.89.0.1 remote-as=65001 ttl=default

Если все сделано правильно, то в колонке State у созданного пира появится состояние established, а в IP - Routes появится набор динамических маршрутов, добавленных нами в список на сервере.

Mikrotik-VPN-BGP-004.pngДля проверки можно добавить в список какой-нибудь известный сервис типа 2ip.ru и убедиться, что вы выходите в интернет именно через свой VPN-сервер.

Mikrotik-VPN-BGP-005.pngКак видим, в работе с BGP на уровне необходимом для решения поставленной задачи нет ничего сложного, зато мы получили в свое распоряжение удобный сервис для распространения маршрутной информации на любое количество подключенных устройств. При этом данное решение не ограничивается роутерами Mikrotik, вы можете использовать его для любых клиентов, поддерживающих работу с BGP.

Онлайн-курс по MikroTik
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:


Mikrotik

  1. Оборудование MikroTik класса SOHO. Общий обзор и сравнение возможностей
  2. Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование
  3. Базовая настройка роутера MikroTik
  4. Расширенная настройка DNS и DHCP в роутерах Mikrotik
  5. Автоматическое резервное копирование настроек Mikrotik на FTP
  6. Проброс портов и Hairpin NAT в роутерах Mikrotik
  7. Настройка IPTV в роутерах Mikrotik на примере Ростелеком
  8. Настройка VPN-подключения в роутерах Mikrotik
  9. Настройка черного и белого списков в роутерах Mikrotik
  10. Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik
  11. Настройка OpenVPN-сервера на роутерах Mikrotik
  12. Безопасный режим в Mikrotik или как всегда оставаться на связи
  13. Настройка Proxy ARP для VPN-подключений на роутерах Mikrotik
  14. Настраиваем Port Knocking в Mikrotik
  15. Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации
  16. Настраиваем родительский контроль на роутерах Mikrotik
  17. Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
  18. Расширенная настройка Wi-Fi на роутерах Mikrotik. Режим точки доступа
  19. Mikrotik CHR - виртуальный облачный роутер
  20. Настройка контроллера CAPsMAN (бесшовный Wi-Fi роуминг) на Mikrotik
  21. Настройка VPN-подключения на роутерах Mikrotik если подсети клиента и офиса совпадают
  22. Настраиваем использование DNS over HTTPS (DoH) на роутерах Mikrotik
  23. Настройка PPTP или L2TP VPN-сервера на роутерах Mikrotik
  24. Установка Mikrotik CHR на виртуальную машину Proxmox
  25. Защита RDP от перебора паролей при помощи оборудования Mikrotik
  26. Настройка SSTP VPN-сервера на роутерах Mikrotik
  27. Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik
  28. Особенности эксплуатации CA на роутерах Mikrotik: резервное копирование, экспорт и импорт сертификатов
  29. Настройка туннелей GRE и IPIP на роутерах Mikrotik
  30. Правильное использование Fast Path и FastTrack в Mikrotik
  31. DHCP Snooping - настройка защиты от неавторизованных DHCP-серверов на оборудовании Mikrotik
  32. Работа оборудования Mikrotik в режиме беспроводной станции (клиента)
  33. Используем режим ARP reply-only для повышения безопасности сети на оборудовании Mikrotik

The Dude

  1. The Dude. Установка и быстрое начало работы
  2. Централизованное управление обновлением RouterOS при помощи The Dude
  3. Централизованный сбор логов Mikrotik на сервер The Dude

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments