скопировано отсюда
Для начала вам нужен туннель, в который будет направляться трафик для определённых ресурсов. По настройке туннелей в ROS много мануалов. Я просто приведу пример настройки WG, именно по нему нормальный ман нелегко найти. Хотя сложного ничего тут нет.
В address нужно указать IP-адрес с подсетью (пример 10.7.0.2/24), в network подсеть (пример 10.7.0.0).
/interface wireguard add listen-port=51820 mtu=1420 name=wg0 private-key="$PRIVATE" /interface wireguard peers add allowed-address=0.0.0.0/0 comment=wireguard endpoint-address=$HOST endpoint-port=51820 interface=wg0 persistent-keepalive=25s \ preshared-key="$PRESHARED" public-key="$PUBLIC" /ip address add address=$IP interface=wg0 network=$NETWORK /ip firewall nat add action=masquerade chain=srcnat out-interface=wg0
Обязательно нужно задать параметр persistent-keepalive, без него туннель не поднимется.
Проверить, что трафик ходит через интерфейс
/ping habr.com interface wg0
Ещё можно глянуть, что значения Rx и Tx ненулевые в WireGuard – Peers
Теперь можно настраивать списки и маршрутизацию.
Какие способы перенаправления трафика известны на текущий день для RouterOS?
BGP. Классика для Mikrotik
Есть два сервиса, которые предоставляют услугу анонса заблокированных IP-адресов и подсетей:
Они это делают, чтоб вы могли их заблокировать на роутере. Но для учебных целей их можно направить в туннель.
Первый возник в 2018, второй в 2019 году. Создатели antifilter.network не особо запаривались с неймингом, но запарились с реализацией сервиса.
Оба имеют списки:
- Все IP-адреса, который надо заблокировать
- Их суммаризация для сокращения количества префиксов
- Блокируемые подсети
Чем отличаются?
- У antifilter.download есть список community. Он создаётся из резолвинга доменов, которые добавили пользователи сервиса
- У antifilter.network есть прикольная фича по выбору списков, не прибегая к фильтрации префиксов на роутере
- У antifilter.network есть список с суммаризацией от /32 до /23 маски
- antifilter.network имеет много других списков
У обоих проектов есть чаты, где вы можете задать свой вопрос.
Antifilter.download
Настроим получение префиксов из списка subent+ipsum+community от antifilter.download. Эти списки отдаются по умолчанию.
Благодарю @talifan за конфиг для ROS 7.
Требуется подставить переменные:
- YOUR_AS – ваша рандомная AS. Число в диапазоне 64512-65543, кроме 65432
- IP – ваш внешний IP-адрес для того, чтобы не пересекаться с другими пользователями
- INTERFACE – имя VPN интерфейса, через который необходимо пустить трафик
/routing bgp template add as=$YOUR_AS disabled=no hold-time=4m input.filter=bgp_in .ignore-as-path-len=yes keepalive-time=1m multihop=yes name=antifilter routing-table=main /routing bgp connection add disabled=no hold-time=4m input.filter=bgp_in .ignore-as-path-len=yes keepalive-time=1m local.role=ebgp multihop=yes name=antifilter_bgp remote.address=45.154.73.71/32 .as=65432 router-id=$IP routing-table=main templates=antifilter /routing filter rule add chain=bgp_in disabled=no rule="set gw $INTERFACE; accept;"
Проверить, что префиксы пришли, можно командой
/routing/bgp/session print
Значения prefix-count и messages должны быть не равны нулю.
Либо через winbox\веб-интерфейс. Routing – BGP – Sessions, у поднятой сессии раздел Stats.
Делайте трассировку с клиента роутера до необходимого ресурса, маршрут должен проходить через туннель.
Небольшое пояснение перед следующим абзацем. У antifilter.download есть community список, который составляют сами пользователи. Также в BGP существует понятие community, применятся для маркировки части префиксов. В рассматриваемом контексте используется для разделения и использования разных списков. Не запутайтесь.
По умолчанию отдаются вместе subnet, ipsum и community списки.
Чтоб получать только список community, необходимо отредактировать filter rule:
/routing filter rule add chain=bgp_in disabled=no rule="set gw wg0; if (bgp-communities includes 65432:500) {accept} else {reject}"
Остальные BGP community можно посмотреть на сайте в разделе ЧаВо – “Какие комьюнити используются в BGP-фиде?”.
В случае фильтрации будут прилетать все префиксы, но активны будут только из выбранного community. Посмотреть можно в ip – route
/ip/route print
- Dab – active, те, что используются для маршрутизации
- DbI – inactive, те, что отфильтровались и для маршрутизации не используются
Если ваш провайдер блокирует BGP, можно сделать маршрут через VPN для связи с сервисом.
/ip route add dst-address=45.154.73.71/32 gateway=$INTERFACE
Информация взята из статьи @Furriest, автора antifilter.download.
Antifilter.network
Настройка получения префиксов с antifilter.network очень похожа. Основная информация находится на странице https://antifilter.network/bgp . На этой же странице выбирайте списки, которые вам нужны, проходите reCAPTCHA и нажимаете Применить. Теперь к вашему IP-адресу и указанной там AS привязана отдача только выбранных списков. Хитро и очень прикольно сделано.
Настройка такая же, как для antifilter.download, отличаются только Remote Address, Remote AS и вашей AS. А router-id должен содержать IP-адрес, на который вы применили настройки. Эти настройки берутся с их страницы BGP. Фильтровать по community тут не нужно, поэтому правило фильтрации просто с accept;
.
С настроенной BGP сессией на роутере, после нажатия на кнопку Применить уже через несколько секунд прилетают выбранные маршруты.
Делайте трассировку с клиента роутера до необходимого ресурса, маршрут должен проходить через туннель.
Как выключить роутинг при BGP?
Routing – BGP – Connection, кнопка Disable у поднятого конекшена