Настройка роутера MikroTik с BGP для просмотра потокового видео дома

Всем привет!!!

В этом руководстве я покажу, как настроить роутер MikroTik с использованием протокола BGP для просмотра YouTube и других ресурсов на любых устройствах вашей домашней сети.

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

По всем вопросам обращайтсь в профильные чат группы. Я не смогу ответить всем и не знаю всех ответов.

Введение

Тенденция на санкции и все возможные ограничение в последнее время набирает большие обороты. Это сказывается на многих аспектах жизни по всему миру. В частности в интернете все больше и больше ресурсов, к которым пропал доступ. Некоторые ресурсы закрыты абсолютно легально и правильно. К некоторым ресурсам ограничивает доступ государство, а зачастую некоторые ресурсы ограничивают доступ сами для некоторых стран. Я подумал хорошо было бы узнать такие ресурсы в автоматическом режиме. Получать список, что бы быть в курсе так сказать.

Законно ли это? – В Российской Федерации только лицензиаты (операторы связи)должны выполнять определённые действия согласно реестру. Остальные могут самостоятельно ограничивать доступ к запрещённым ресурсам или прилагать дополнительные усилия (разумеется, не рекомендую этого делать), чтобы получить доступ к таким ресурсам.

Как же можно получить список таких адресов на роутере?

Для этого существует два известных мне ресурса antifilter.download и antifilter.network. Эти ресурсы могут выдать по протоколу BGP требуемые адреса. Принцип работы у ресурсов одинаковый, но функционал разный.

BGP (Border Gateway Protocol) — это протокол, который не только отвечает за получение маршрутов, но и управляет обменом информацией о маршрутах между различными автономными системами в интернете. 

Кроме того, BGP позволяет:

  1. Выбор маршрутов: Определять наилучшие пути для передачи данных.
  2. Обмен информацией: Обмениваться данными о доступных маршрутах между разными сетями.
  3. Управление политиками: Настраивать правила для выбора маршрутов в зависимости от различных факторов, таких как стоимость или производительность.
  4. Обнаружение изменений: Быстро реагировать на изменения в сети, такие как сбои или новые соединения.

Что это дает нам?

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

На каком оборудовании это можно сделать?

В теории это работает на любом оборудовании поддерживающем протокол BGP. Конкретно роутеры Mikrotik это точно поддерживают. Pfsense поддерживает BGP. Говорят даже Keenetic поддерживает BGP, но это не точно. Я буду показывать на примере Mikrotik.

Понимаю, что у многих Keenetic, но вам придется самостоятельно искать инструкции, принцип вы можете понять из этой статьи. Если когда-нибуть у меня будет роутер Keenetic, то возможно я смогу сделать такую инструкцию.

Для теста, а может и на постоянно можно использовать виртуальные маршрутизаторы. Вот несколько примеров как это сделать в Synology VMM. Тоже самое можно сделать на любой системе виртуализации, в том числе Proxmox.

Как это можно использовать?

Что бы весь трафик не гонять через туннель или постоянно не включать выключать туннель, а автоматизировать процесс. Один раз настроил и забыл так сказать. А так же что бы устройства в локальной сети, которые не умеют поднимать туннели, могли без проблем иметь доступ к требуемым ресурсам.

Ну например, есть ресурс YouTube, который по непонятным причинам на момент написания статьи не работает в России. Надеюсь все же он заработает в правовом поле в ближайшее время. Так вот, наш роутер получает необходимые маршруты по протоколу BGP. Затем эти маршруты маршрутизирует в туннель, через который они точно будут работать. После этого пользователи получают доступ к YouTube через туннель, а к другим сайтам маршрутизация идет как обычно без туннеля. В результате все кто подключены к данному роутеру будут иметь доступ ко всем необходимым им ресурсам в интернете.

Что вам нужно для этого?

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

Для получения VPS в Швеции по 1.09 евро (пополнять можно картами МИР) в месяц подпишитесь на телеграм канал Aéзa ❯ Ассистент. Дождитесь когда появится тариф 🟢 SWE-PROMO и регистрируйтесь по ссылке и получите бонус 15% к пополнению баланса, который будет действовать 24 часа. Можно не ждать тарифа SWE-PROMO, на хостинге есть и другие тарифы. Тем более что промо тариф имеет ограничения по скорости в 100Мб\с. В любом случаи регистрируйтесь по ссылке. Этим вы поможете мне и получите приятный бонус.

Как вы понимаете Mikrotik без проблем поддерживает WireGuard, по крайней мере свежие версии ПО. Слышал, что и Keenetic так же поддеживает этот протокол.

Про сервис antifilter.download

Из-за большого наплыва пользователей после блокировки YouTube сервис испытывает перегрузки. Обещают починить.

Изначально я пользовался именно сервисом antifilter.download, но по непонятным для меня причинам он перестал у меня работать. Я пытался обращаться в группу данного сервиса, писал им на почту, но никакого ответа о проблеме не получил. Поэтому настройки этого сервиса в данной инструкции показаны не будут в полном объеме. Но у вас он наверняка заработает и держать его как запасной или основной хорошая идея.

В целом все настройки указаны на их сайте. Нужно просто прописать eBGP peer на адрес 45.154.73.71 и указать номер их автономной системы 65432. Номер собственной автономной системы можно взять любой от 64512 до 65535. Так же они рекомендуют настроить hold timer в 4 минуты. Если ваш провайдер блокирует BGP протокол, то нужно прописать статичный маршрут 45.154.73.71 через туннель.

По сути этот сервис очень простой, хотя там как и в следующем можно настраивать фильтрацию по комьюнити. Но каждый участник может добавлять различные сети в сервис путем голосования. Если проголосует 15 за, то сеть будет добавлена и все ее получат по BGP.

Про сервис antifilter.network

Из-за большого наплыва пользователей после блокировки YouTube сервис испытывает перегрузки. Обещают починить.

Основным сервисом сейчас для меня является antifilter.network. Я его считаю более функциональным. Настраивается он аналогично первому, но имеет ряд дополнений и особенностей.

Если у вас белый статический адрес, то прям на сайте указываете его и номер автономной системы. Отмечаете галочкой какие сети каких ресурсов хотите получать и настраиваете свое оборудование. Нужно просто прописать eBGP peer на адрес 51.75.66.20 и указать номер их автономной системы 65444. Номер собственной автономной системы 64999. Так же они рекомендуют настроить hold timer в 4 минуты. Если ваш провайдер блокирует BGP протокол, то нужно прописать статичный маршрут 51.75.66.20 через туннель.

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

Поднимаете VPN например PPTP, а данные для подключения получаете все у того же телеграм бота antifilter.vpn. Он пришлет вам куда подключаться, логин и пароль. Далее с помощью этого бота можно настроить сети, которые он будет вам анонсировать. Очень удобно на мой взгляд.

Нужно просто после поднятия их VPN прописать eBGP peer на адрес 10.75.66.20 и указать номер их автономной системы 65444. Номер собственной автономной системы можно любой от 64512 до 65535. Так же они рекомендуют настроить hold timer в 4 минуты.

Если вы изменили тут какие-то настройки, то для применения изменений достаточно сделать Refresh сессии BGP. Подробнее о настройках будет ниже.

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

Еще одним нюансом является, то что если у вас очень мощный роутер, то вместо 100 и 110 можно указать 200 и 210. Тогда прилетит более 140 тысяч маршрутов, но зато вы получите более точенную маршрутизацию.

Настройка Mikrotik

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

Так же в этой инструкции я не затрону тему защиты, но в другом моем материале это рассказно Mikrotik настройка Firewall и QOS

Продвинутых настроек с фильтрацией комьюнити тут тоже не будет. Все максимально просто, на сколько это может быть.

Базовая настройка Mikrotik

По-хорошему нужно создать bridge и интерфейс bridge, но так как у меня всего два интерфейса то мне это не нужно

/interface ethernet
set [ find default-name=ether1 ] disable-running-check=no
set [ find default-name=ether2 ] disable-running-check=no
set [ find default-name=ether3 ] disable-running-check=no

/interface list
add name=LAN
add name=WAN

/interface list member
add interface=ether2 list=LAN
add interface=ether1 list=WAN

Я получаю IP адрес от провайдера по DHCP, поэтому первым делом настраиваю DHCP клиент

/ip dhcp-client
add interface=ether1 use-peer-dns=no

Настройка DHCP сервера

/ip pool
add name=VxNet ranges=10.17.68.100-10.17.68.200
# Включение DHCP сервера
/ip dhcp-server
add address-pool=VxNet interface=ether2 name=DHCP-VxNet

/ip address
add address=10.17.68.1/24 interface=ether2 network=10.17.68.0

/ip dhcp-server network
add address=10.17.68.0/24 dns-server=10.17.68.1 gateway=10.17.68.1 netmask=24

Настроим DNS сервер

/ip dns
set allow-remote-requests=yes servers=192.168.68.15

Настройка NAT для локальной сети

# Настрйока NAT
/ip firewall nat
# Правило для локальной сети
add action=masquerade chain=srcnat comment="NAT WAN" out-interface-list=WAN src-address=10.17.68.0/24

Другие незначительные настройки

/system clock
set time-zone-name=Asia/Omsk
/system note
set show-at-login=no
/system ntp client
set enabled=yes
/system ntp client servers
add address=192.168.68.10

Настройка WireGuard туннеля

Как я и говорил выше настройку как поднять WG туннель на Mikrotik подробно разбирать не буду. Если делаете первый раз и не понимаете, лучше поискать в интернете.

На самом деле принцип очень простой, создаете интерфейс и пир с прописанными ключами, адресами и портами и не забывайте настраивать NAT если необходимо в вашей ситуации как в моей.

# Создание интерфейса WG
/interface wireguard
add listen-port=13231 mtu=1420 name=wg0

# Настройка peer WG
/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=IP-SERVER endpoint-port=55662 interface=wg0 name=VitrWG \
    persistent-keepalive=5m preshared-key="ВАШ preshared-key" public-key=\
    "ВАШ public-key"

# Правило для WG VPN
add action=masquerade chain=srcnat comment="NAT WG" out-interface=wg0

Настройка antifilter.network VPN

Как я и говорил, если нет белого статического адреса или просто так лучше вам, то сначала поднимаем туннель для стыка по BGP. Напоминаю, что данные для этого стыка нужно взять у бота.

Некоторые спросят для чего тут NAT?

Все дело в том, что у BGP пира я не прописывал локальный адрес, так как не знаю динамический он у данного соединения PPTP или нет. В результате при обращении роутра к BGP пиру (настройки будут ниже) он подставляет адрес источника наименьший адрес 172.16.66.13, который у него есть. Как результат соединение BGP не работает. Что бы этого избежать мне пришлось настроить NAT на PPTP туннеле.

Протокол BGP использует TCP транспорт, поэтому без каких либо проблем работает через NAT

# Создание интерфейса PPTP для BGP стыка с antifilter.network
/interface pptp-client
add connect-to=vpn.antifilter.network dial-on-demand=yes disabled=no name=antifilter.network user=UserName
# Правило NAT для PPTP VPN antifilter.network
add action=masquerade chain=srcnat comment="NAT WAN" out-interface=antifilter.network

Настройка antifilter.network BGP

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

# Cоздание шаблонов для BGP
/routing bgp template
add as=64999 disabled=no hold-time=4m input.filter=bgp_in .ignore-as-path-len=yes keepalive-time=1m multihop=yes name=\
    antifilter.network routing-table=main

Сама настройка BGP пира довольно простая. Указываете имя, шаблон при желании, номер автономной системы (есть в шаблоне), ID вашего роутера (обычно это loopback0, но так как в домашнем роутре его нет, то я указал его адрес из локальной сети), естественно что указываем адрес пира 10.75.66.20, удаленную автономную систему 65444. Hold time и Keepalive тоже можно оставить в темплейте.

Самая соль в bgp_in. Это то что будет обрабатывать и заворачивать маршруты полученные по этому BGP стыку в нужное место.

# BGP настройки
/routing bgp connection
add as=64999 comment="antifilter.network VPN" disabled=no hold-time=4m input.filter=bgp_in .ignore-as-path-len=yes \
    keepalive-time=1m local.role=ebgp multihop=yes name="antifilter.network VPN" remote.address=10.75.66.20/32 .as=\
    65444 router-id=10.17.68.1 routing-table=main templates=antifilter.network

Этим правилом завернем все полученные маршруты по BGP в интерфейс wg0.

Странным образом в конфиге интерфейс wg0 отображается как *0x6. Не знаю почему, но в графике отображается корректно.

/routing filter rule
add chain=bgp_in comment="set gw wg0; accept;" disabled=no rule="set gw *0x6; accept;"

В итоге вы должны увидеть рабочую сессию BGP и какое-то количество полученных префиксов. А так же очень большую таблицу маршрутизации примерно равную или равную количеству полученных по BGP префиксов. У меня она порой бывает более 35 тысяч штук.

Так как я пожелал получать сети ютуба и гугла, то сервис YouTube у меня открывается и работает без тормозов. Правда теперь в нем очень много рекламы. Не удивительно, т.к. для него я нахожусь далеко от того места где находится моя квартира. В то же время, все другие сайты, доступные только из России, остались доступными как и раньше через вашего провайдера и не используют туннель..

После того как у вас все разаботает я рекомендую запретить отдавать по BGP ваши маршруты. Это полезно для безопасности и корректной работы. Вам нужно создать соответствующее правило и привязать его к BGP пиру.

/routing filter rule
add chain=discard-all comment="ALL discard" disabled=no rule="reject;"

Видео ролик

YouTube

YouTube player

ВК

Вместо вывода

Я понимаю, что большая часть людей не сможет реализовать идеи заложенные в данном руководстве. Мое мнение, что если YouTube будет заблокирован на долго и на всех провайдерах, то со временем сервис перестанет быть таким актуальным и полезным. Это очень печально, что он не работает. Часть людей по прежнему будет им пользоваться, но явно не в таких количествах. Подобные примеры у нас уже есть. Но только YouTube затрагивает, не побоюсь этого слова, всех нас, все мы им пользовались очень длительное время и очень к нему привыкли и привязались.

Очень надесю, что этот промежуток времени пройдет быстро и сервис снова станет работать как и раньше. Но будем откровенны как и раньше это с монитизацией и рекламой. YouTube и его хозяева поддержали зло и полностью перешли на его сторону, когда ввели санкции против каждого из нас. Они могли этого не делать? Конечно могли, но решили сделать. Нам был дан выбор продолжать пользоваться YouTube или переходить на другие площадки. Мы решили продолжать пользоваться. Вода течет там где проще.

Можно ругать кого угодно, обвинять кого угодно, но факт блокировки YouTube завтавит перейти на другие площадки. Через какое-то время мы все привыкнем к такому положению дел и возможно, я почему-то в этом уверен, нам будет это нравится. Просто перестаньте относится к своему хуже чем к чужому.

Все будет хорошо!!! Всем удачи!!!

Мне помогла очень статья на хабре.

Подписаться
Уведомить о
guest
25 Комментарий
Старые
Новые
Межтекстовые Отзывы
Посмотреть все комментарии