Как стать автором
Обновить

Комментарии 112

А, ещё есть прикол — если удалённая машина входит в подсеть блокировок,
нужно добавить маршрут до ip сервера статический через своего провайдера, а то получается петля.
У меня так сервер на ДО, входит по ip в одну из заблокированных подсетей, но доступ до него от провайдера есть.
Ну вообще это стандартная практика — добавлять /32 маршрут до адреса второй стороны VPN-сервера через свой гейт. Скажем, strongswan так делает, только маршруты не в общую кучу кладет, из-за этого может быть приоритет прилетевших маршрутов через ip rule. Обойти можно, добавив lookup-правило на таблицу с VPN-маршрутами раньше по списку.
Позвольте слегка поофтопить. Посоветуйте роутер Mikrotik?
В прошлой статье говорилось про Mikrotik hAP ac, но судя по отзывам — слабоват для 100+ мбит. У меня от провайдера приходит 200 мбит интернет, так что видимо мне надо что-то другое.
Роутер для домашнего использования (пара компов, мобильники). Желательно (но не обязательно) наличие вайфай.
Не путайте hAP ac с hAP ac lite, который активно обсуждают.
hAP ac, он же RB962UiGS-5HacT2HnT — это дорогая ($129) гигабитная двухдиапазонная железка, ваши 200 Mbps она пропустит, не задумываясь.
Сейчас есть версия попроще — hAP ac2 (RBD52G-5HacD2HnD-TC) — $69, без SFP и еще с парой мелких drawback, но под ваши задачи тоже подойдет безусловно.
Читал на него на маркете. Не он?
Пишут
Слабый процессор прошлого поколения. Способен прогонять через себя провайдерские 100 мбит только в месте c костылем Fastrack. Либо с минимальным количеством правил в фаирволе. В режиме серверов L2TP (c ipsec), OVPN или SSTP больше 30 мбит/с шифровать не способен.
100 мегабит без шифрования — легко. IPsec c AES256 — порядка 30 мегабит. Hardware offload отсутствует. Если не нужен WiFi, рекомендую RB750Gr3. Если нужен, присмотритесь к новой AC² железке.
Интересует 200 мегабит с правилами на файрволле, типа отрезания рекламы и прочего.
Посмотрите тесты железок. И можно написать в поддержку Mikrotik, отвечают может и не быстро, но детально.
Ставьте шлюзом RB750Gr3, за него hAP AC (RB962UiGS-5HacT2HnT) как точку доступа и гигабитный свич.
Только не забывайте смотреть на блочные диаграммы устройств. У 750гр3 очень своеобразный коммутатор, но как роутер он весьма неплох.

у rb750gr3 по сути нет свича, все порты к процессору подключены и свич у него софтовый, что с лихвой компенсируется двумя ядрами с неким аналогом hyper threading, в итоге получается 4 потока.
> через себя провайдерские 100 мбит только в месте c костылем Fastrack.
Чушь, 40-50 MiB в секунду проходят легко и непринужденно (NAS при этом упирается в дисковый iops на торрентах быстрее). Вот speedtest с NAS, стоящего за AC — image

По openvpn с дефолтным шифрованием — 70-100 mbps в зависимости от погоды на луне.

По wifi с WPA2 — 100-120 (это во время того, когда торренты качаются на NAS).

Проц не фонтан, конечно, но для текущих домашних скоростей его за глаза. Под гигабит по IPoE должен держать.
Ещё раз: В цитате говорится про 100 мегабит, я говорю про 200 мегабит, вы говорите про 50 мегабит… У вас на файрволле есть правила? Это с ним у вас 360?
Я говорю про 50 мегаБАЙТ. Или 360 мегаБИТ на спидтесте — торренты утилизируют канал лучше (сам канал — 400 mbps).

> У вас на файрволле есть правила
Правил там особенно нет — фильтр доступа снаружи, форвард https/ssh на NAS, дефолтный nat. Ну и роутинг в oVPN для некоторых адресов/подсетей.
Грамотно настроенный FW почти не влияет на скорость, впрочем. Вы же туда не десятки тысяч правил загружать собираетесь.
Понял, спасибо.
Дефолтное шифрование на OVPN там SHA1/BF128, что уже считается небезопасным.
Ну пока провайдер не научился влезать внутрь такого шифрования на лету и фильтровать по чёрному списку прямо там — пусть будет =)
Тогда в некоторых случаях и это лишнее, многие операторы даже просто GRE без шифрования не разбирают :)
Угу, многие операторы GRE не разбирают, а просто режут на корню =)
Особенно те, которые PPTP/pppoe.
Вот в РФ пока не встречал операторов с SFP домой, как и режущих GRE. Кстати, если это резать, будут вопли со стороны бизнеса, ибо GRE over IPsec — по сути, enterprise стандарт.
> Вот в РФ пока не встречал операторов с SFP домой
Дык, не «домой» а «в квартиру». В квартиру SFP банально неудобно и дорого тянуть, а больше гигабита всё равно пока никто не готов давать, меди хватает.
В офисах и частном секторе картина другая.

> как и режущих GRE
Бизнесу никто ничего и не режет, а кто режет — быстро вылетают из бизнеса, если это не монополия в БЦ. Билайн (ещё со времен корбины) по l2tp точно резал из крупняка на домашних каналах. Да и думаю многие, кто туннелями интернет приносит, «режут», потому что для проброса gre через любой туннель нужны телодвижения на стороне провайдера.
С IPoE проще, там gre если и режут, то специально, таких и правда в районе нуля.

Там процессор другой архитектуры, то есть она чисто "маркетологически" в этом промежутке. На самом деле, на IPsec она даже быстрее, так что для дома действительно оптимальный вариант если нет задачи максимально производительного вайфая (в ней MIMO 2x2, а в ac 3x3).

А что если совсем «снищебродить» и развернуть образ Mikrotik-a на каком-нибудь гипервизоре? Если мне не изменяет память — Miktotik предлагает образы даже для Hyper-V.
НЛО прилетело и опубликовало эту надпись здесь
И лицензии. Иначе надо покупать за 40$
НЛО прилетело и опубликовало эту надпись здесь
Может создадите пост по данному топику — думаю людям будет очень интересно. Если нет желания — можете мне в личку скинуть step-by-step howto, буду очень благодарен. Давно хотел закрыть пробел в RouterOS каким-нибуть практическим кейсом.
hAP AC сейчас «флагман» для дома.
Не соглашусь. Например, SFP в железке лишний в реалиях РФ, а процессор уже староват для нынешних скоростей, тем более когда речь заходит о шифровании. Вот новый RBD52G-5HacD2HnD-TC больше похож на «флагмана» для дома.
SFP домой бывает уже давно.
Без POE-out очень грустно.
Без metarouter — ещё грустнее.
Процессоры — сравнимы, ещё и глюки перехода на ARM будут некоторое время всплывать. Никакого революционного прорыва там нет — по IPoE и тот, и тот справлялись с гигабитом, по pptp всё так же упирается в одно ядро на примерно одинаковых скоростях (+\- 10%).

Единственное, в чём AC2 выигрывает однозначно — это wifi, там железка под это лучше заточена. Но у АС без подрезания мощности передачи бешеная зона покрытия (10 этажей вниз и ещё метров 100 в сторону), а у АС2 — нет.

Так что тут кому что нужнее. По возможностям АС однозначно далеко впереди, проигрывая 10-20% по скорости.
Хочу обсудить по-пунктно :)

1. Какие операторы предоставляют SFP домой?
2. Что вы реально крутите на Metarouter, что оно не виснет и реально работает?
3. PPTP — абсолютно старый и небезопасный протокол, его использование вызывает большие сомнения.
4. По WiFi разницы вообще не заметил. Хотя, возможно, дело в том, что настроен «роуминг» на трех железках.
> 1. Какие операторы предоставляют SFP домой?
Почти любой в частных секторах. Их же, думаю, можно задолбать и попросить притащить в квартиру (хотя по забитым стоякам оптику не тянут).

> 2. Что вы реально крутите на Metarouter, что оно не виснет и реально работает?
habr.com/post/354710

> 3. PPTP — абсолютно старый и небезопасный протокол, его использование вызывает большие сомнения.
TCP/IP — абсолютно старый и небезопасный протокол, его использование вызывает большие сомнения. Однако все пользуются.
На самом деле неважно, l2tp, openvpn и pppoe ровно так же упираются в одно ядро. Если же говорить про производительность в sha256, то она грустная и на MIPS, и на ARM (пусть и ARM в 2 раза быстрее на sha256) — намного шустрее поднимать любой туннель с sha256 на самих клиентах. А если всё же хочется строить туннели на микротиках — смотреть нужно на hEX минимум и разгонять частоту, а не hAP.
Мы всё же роутер для дома — туда мало кто тащит гигабитные ipsec-туннели, а 100-200 mbps по ipsec прожуют и AC, и AC2 в любую сторону.
Ну вот нет же. AC прокачивает максимум 30 мегабит на AES256 IPsec'a. А по оптике домой, все упирается в GPON ONU модули. Никто не хочет «прописывать» модули владельца, предпочитая ставить свое оборудование.
Ну а AC2, если судить по бенчмаркам процессора, прокачивает 50-60 mbps. Тоже не фонтан как бы)

> Никто не хочет «прописывать» модули владельца, предпочитая ставить свое оборудование.
«Никто» — это ростелеком, видимо =) Ну и опять же — GPON это GPON. SFP встречается там, где оптика «со столба» абоненту заходит.
vidnoe.net/tarify/internet/chastnym-domam — вот наши местные просто тащат оптику на участок, что ты на втором конце поставишь им в целом наплевать (разве что предупредить нужно, что у тебя свой микротик есть).
Ну, иные провайдеры говорят так: мы ставим вам роутер с SFP и выходом по eth потому, что в случае ваших жалоб хотим зайти на свое (стоящее у вас) оборудование, и хотя бы какой-то тест запустить. Но их можно все же уговорить свою железку в «мост» превратить, главное, чтобы мост этот был не менее стабилен, чем сама оптика.

С другой стороны, Mikrotik предлагает самые разные модули, скажем, GPON ONU module — Pluggable GPON ONU interface for Fiber to Home — возможно, он ваши задачи решит (но какому-нибудь RT мало что докажешь, мне кажется).
Hap AC2 сейчас по факту сейчас поставляется с 256М RAM, что под задачи, подобные этой делает его более пригодным, IMHO
Откуда такая информация? На оффсайте 128, в магазинах тоже.
Упоминалось в Краткий обзор нового MikroTik hAP AC2. И сам 3 дня назад получил девайс. Может памяти нужной не нашлось, может просто на будущее страхуются
Ubiquiti EdgeRouter X. Гигабитные порты, хардварный нат и IPsec. Гонял через него 800мбит, нагрузка 1-3%, за счет offload.
Для hep младшей модели таблица маршрутов оказалась тяжела. Виснет.
для Centos 7 каталога /etc/bird нету — надо создать
и вписать полные пути
include "/etc/bird/subnet.txt";
include "/etc/bird/ipsum.txt";
Можно более широко суммаризовать сети внутри файла ipsum.lst — например, если собрать их по /16, то из 13 тысяч префиксов останется чуть больше 2 тысяч. Но при этом, конечно, много лишнего уйдет в туннель.
hAP Lite — так же не осиливает 13 тысяч маршрутов. Свернул ipsum.lst до /16 — получилось около 3500 строк. Но Mikrotik (прошивка 6.40.8) после получения маршрутов постоянно отключает и вновь подключает VPN-туннель (я поднял простой GRE). В логе это описано как VPN link down / VPN link up и пока что пытаюсь понять это за чудо
Тут у вас что-то странное. У меня в окружении есть несколько hAP lite, пользующихся моим сервисом и съедающих именно эти 13 тысяч префиксов.
Возможно, дело в версии прошивки, да — они все обновлены по максимуму, на данный момент до 6.42.3.

Хм. Мой провайдер еще и перехватывает запросы к любым DNS серверам, видимо по порту, выдавая вместо IP заблокированного ресурса IP заглушки. Думаю, многие провайдеры так делают. Было бы хорошо еще и заворачивать все DNS запросы в VPN туннель. Заодно можно переадресовать их в 1.1.1.1 или 8.8.8.8 вместо DNS сервера провайдера, который, скорее всего, тоже будет подменять IP на заглушку.

DNS-запросы заворачивать в туннель — это вполне себе очевидное решение, делается прописыванием на маршрутизаторе статических маршрутов в сторону туннеля.
Можно, конечно, просто дописать еще один инклуд файла с маршрутами на адреса DNSов в конфиг bird, тоже будет работать.
Можно где-то в своей сети поднять dnscrypt-proxy, например, на той же «малинке», или даже pi-hole какой-нибудь, там тоже есть вариант использования DNS-over-HTTPS. Либо на сервере dnsmasq с переадресацией.
Или через metarouter поднять openwrt с dns-tls/dns-https в 1.1.1.1+9.9.9.9
Подскажите, какой образ не виснет и реально работает? Пробовал даже свои собирать, заканчивалось всегда все однозначно: либо виртуалка падает, либо маршрутизатор.
Гм. А как часто виснет-то?
У меня недели полторы работает, пока не вис вроде. Образ из статьи.
А как вздумается. Вообще нет никакой связи. Может день проработать, а может месяц, но потом только ребут маршрутизатора, например.
Странно. Ну посмотрим)
Если будет время и желание, расскажите потом :)
НЛО прилетело и опубликовало эту надпись здесь
Как OVPN живёт на провайдерах, раздающих клиентам серые IP?
Вопрос немного не в тему: не пробовали по OVPN раздавать IPv6 адреса с дефолтом Андроидному клиенту? У меня после получения адреса в андроиде перестают работать браузеры. При этом ping, traceroute работают.
DNSv6?
OVPN вполне себе успешно поднимается из-за NAT, постоянно пользуюсь в поездках по миру, как с ноутбука, так и с телефона.
Про Android ничего не скажу, к сожалению — изжил у себя везде, кроме STB. Если AppleTV научится показывать файлы из сетевых шар — изживу и там.
4-е поколение вполне себе показывает с помощью сторонних приложений
Я выбрал DLNA Plex сервер и клиент, уверен есть ПО и для smb/afp
Plex — это стриминг с сервера, соответственно, часть нагрузки уходит на сервер. Вот пока про доступ с приставки к smb или afp без серверных прослоек я нагуглить не смог. Если попадется — поделитесь информацией, пожалуйста.
я же могу держать bird на самом шлюзе, а удаленный серв просто как впн-серв?
на шлюзе тоже линь.
Конечно. Под более общий вариант «bgp и туннель в разные места» был заточен текст предыдущей статьи, но у пытающихся повторить при этом возникало много вопросов. Эта же статья была написана фактически для настройки копипастой.
Кстати, когда именно на самом шлюзе — то там и bird не особо нужен, поскольку в bgp в этой схеме смысла нет. Можно напрямую актуализировать таблицу маршрутизации скриптами.
Хотя с bird это получается более просто, безусловно. Только bgp из bird в этом случае можно изничтожить и просто делать экспорт маршрутов из процесса static_bgp не в bgp, а прямо в protocol kernel, указав в них правильный некстхоп на стадии сборки файлов — вместо «reject;» там должно быть «via nexthop_IP;».
да. именно для удобства управления.
Не совсем понимаю, а зачем для этого использовать BGP? В OpenVPN можно же пушить маршруты или это вариант для не OpenVPN VPN?
В комментариях к предыдущему посту обсуждали — если вас устраивает получать маршруты только при пересоздании туннеля — можно пушить их через OVPN. Фактически обновление списка происходит раз в полчаса и лично мне не хотелось бы раз в полчаса дергать туннель с разрывом всех tcp-сессий.
кто-нибудь пробовал это реализовать на RB951Ui-2nD??
вывезет такая железяка?
Должна справиться, хотя в момент запуска ей будет нелегко. Но когда протокол сойдется — всё будет хорошо.
НЛО прилетело и опубликовало эту надпись здесь
Безусловно, можно пойти и таким путем. Для тех, у кого есть VPN, но нет VPS, это будет очень даже правильно.
По известной мне статистике, пока никто не попросил bgp-пира на упомянутом сервисе. А листы забирают почти полторы сотни. Возможно, это потому, что людям проще сделать так, как описано, а возможно — потому что им хочется оставить больше контроля за тем, что прилетает в их устройства, в своих руках. Не готов однозначно определить.
НЛО прилетело и опубликовало эту надпись здесь
Ровно та же проблема — файл на github не так давно переставал обновляться (и поэтому и появился antifilter), и точно так же может исчезнуть в любой момент. Гарантий никаких в обоих случаях. А доступ напрямую к дампу РКН имеют только некоторые сотрудники провайдеров, которым такая статья без надобности — они и сами умеют запилить нужное под свои потребности.
Про контроль я скорее в том ключе, что, выгружая файл, ничто не мешает перед его обработкой провести достаточно серьезный программный контроль его консистентности. В прямом BGP-стыке возможности такого контроля сильно ограничены возможностями маршрутизатора.
Но, безусловно, любой вариант имеет место быть, я же не обещал перекрыть все возможные варианты построения. Я всего лишь предложил тем, кому хочется, воспользоваться одним из таких вариантов.

Просто мысль вслух: именно VPN (в классическом понимании — с шифрованием) нужен не всем/не всегда. Технически, зачастую, достаточно просто p2p соединения с инкапсуляцией (без шифрования). А это может сильно облегчить жизнь роутеру. Мой уже старенький RB951G-2HnD вполне даёт 100+ МБит при 16000 маршрутов.

Да, безусловно. Очень мало операторов, которые парсят внутренности нешифрованных туннелей.
А можно подробнее про это? Хотелось бы покопать в этом направлении.
Furriest, подскажите пожалуйста, а в чём может быть проблема со скриптом?
bird[9322]: bird: /etc/bird/ip.txt, line 1: syntax error
при том, что в первой строке файла вроде все как надо:
route 11.22.33.44 reject; (адрес намеренно изменен)
Такое выдает конечно же на этапе systemctl start bird
С очень большой вероятностью в файле виндовые переносы строки 0D0A вместо юниксовых 0A. Bird, к сожалению, чувствителен к этому.
Решается простейшим sed 's/\x0D$//' file1.txt > file2.txt
А. Не проснулся еще, поэтому не сразу заметил, извиняюсь. Строка route требует сети, а не адреса, поэтому для ip.txt она должна выглядеть как route 11.22.33.44/32 reject;
Решается, опять же, изменением соответствующего sed в скрипте обработки.
Спасибо за подсказку! Заработало!
Для остальных, вдруг пригодится, строка в конфиге для ip.lst:
cat /root/blacklist/list/ip.lst | sed 's_.*_route &/32 reject;_' > /etc/bird/ip.txt

а для эникейщиков если вас не затруднит
Если роутер простой, а роль тонеля до vds выполняет одноплатный пэка на armbian который используется как шлюз, тоннель openvpn. То очевидно на него надо поставить все тот же bird, а как его сконфигурировать?

Если я правильно понимаю схему — на границе «простой» роутер, а armbian стоит в сети за ним. При этом дефолт у устройств в сети указывает на armbian, а на нем маршрутизация разруливает «это в туннель, а это в роутер». В такой схеме да, можно поставить bird на armbian и принимать префиксы на него. Настройка bird в этом случае фактически повторяет приведенную в примере, только нужно разрешить export в протоколе kernel и правильно установить nexthop при этом экспорте. Ну и не забыть пробросить в сторону armbian порт 179/tcp на роутере.

А вот если вы, как большинство пользователей таких схем, заворачиваете трафик на armbian на каждом устройстве в локальной сети отдельно, вам тут bgp и не очень нужен. Потому что проблемой будет как раз динамически обучать все устройства, а для такого списка префиксов это некрасиво решаемая задача.

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

За ранее прошу прощения если будет слишком длинно
На входе простой роутер, старенький WNR3500l, к провайдеру подключен через IPoE на нем DD-Wrt, он умеет поднимать openvpn, но скорость очень маленькая.
Я вычитал что у orange pi на процессорах H3/5 есть crypto engine благодаря которому openvpn должен на них бегать быстрее. Вот тут можно посмотреть.
http://sunxi.montjoie.ovh/#support_overview
Оказалось правдой, скорость упирается в скорость канала до VDS
Все домашние железки достаточно умны чтобы обходить блокировки сами так или иначе, на vds висят socs5 прокси использую в браузерах и для телеграм, openvpn для всего остального, а еще l2tp/ipsec и pptp чисто для экспериментов, но вот та же PS4 ничего этого не умеет. И хочется прозрачное решение для всех сразу.
Как сейчас все решено.
Апельсин подключен в роутер по lan, соединяется через opnvpn с VDS, на апельсине поднята WLAN точка доступа для PS4 или любого другого устройства которому вдруг понадобится выйти в сеть в обход блокировок, ограничение только то что это WIFI.
между lan и wlan апельсина сделано перенаправление, вот так:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT
и все работает.
Но железка простаивала и я подумал, а чего бы её еще не подгрузить. В итоге на апельсине поселился жесткий диск, deluged торент клиент, Mariadb mysql база данных для трех домашних медиасерверов на KODI, ну и samba шара до кучи.
Все шуршит, только с торент клиента трафик к примеру утекает в тонель, где он не нужен и я не могу его оттуда убрать. Я пробовал указывать в клиенте использовать eth1, включил в /proc/sys/net/ipv4/ rp_filter=1 на интерфейсах, все пофигу. Думаю это костыли и решение с динамическими маршрутами будет правильнее, вопрос как все сделать чтобы при этом ничего не сломать, оставив весь функционал и желательно уйти от wifi точки доступа. т.е. как я думаю на выходе использовать апельсин как gate и dns в настройках устройств которым надо обойти запреты.
Изначально идея была сделать некую дешевую и глупую чёрную коробочку "для друга", включив которую в свою домашнюю сеть и настроив её по инструкции не сложнее домашнего роутера, он получал все эти ваши впн ничего в них не понимая.

Т.е. получается, что у вас есть одно устройство (router), которое обслуживает канал и обеспечивает выход в «грязную» сеть и второе (апельсин), которое обслуживает туннель и обеспечивает выход в чистую. И выбор канала обеспечивается через выбор SSID в беспроводной сети.

Если я правильно понял конструкцию — то можно внедрить динамику следующим способом.
1) Дефолт на апельсине прописать через внутренний IP нетгира.
2) На нетгире пробросить порт 179/tcp во внутренний адрес апельсина.
3) На апельсине поднять bird и запирить его с BGP-сервисом (например, как в моей соседней статье описано)
4) В bird прописать, что для всех полученных по bgp маршрутов некстхоп — это туннель OVPN
5) На всех домашних устройствах прописать дефолтом апельсин.

В этой схеме любое устройство сначала пойдет на апельсин, если у того в таблице маршрутизации нет маршрута в туннель, он через ICMP редирект переадресует устройство на роутер и трафик пойдет через роутер. А если маршрут в туннель есть — уйдет в туннель. Немаловажно не перекрыть icmp излишней фильтрацией, каковую очень любят пилить на iptables для icmp.

да именно так я и хотел бы сделать


  1. route add default gw 192.168.1.1 где 192.168.1.1 внутренний IP нетгира. Или если у нас будет работать Bird то он все берет на себя и надо указывать в его конфиге?
  2. нам нужен чтобы получать на апельсин по BGP маршруты от VDS в обход openvpn? Соответственно в конфиге burd на апельсине мы указываем как источник маршрутов обычный внешний адрес VDS, так?
    4-5 почитаю предыдущую статью, попробую разобраться.
1. Да, правильно, дефолт лучше таки прописать статикой, как вы и написали.

2. Тут логика, что устанавливаем пиринг как бы со статического адреса роутера, но пробрасываем порт в апельсин. BGP через такой NAT работает хорошо.
Можно поднимать пиринг и через VPN, но там такой же нат, там тоже пробрасывать порт. Потенциально чуть больше проблем при траблшутинге. Но допустимо.

Конфиг bird для апельсина можно взять из статьи, только в bgp прописать import all, export none, чтобы получить маршруты от внешнего сервиса и не анонсировать свои маршруты ему. Когда получите маршруты и их будет видно в birdc show route — можно делать следующий шаг и разрешать их экспорт в таблицу маршрутизации в protocol kernel. Придется, правда, еще разобраться, как написать функцию для изменения nexthop при экспорте. Если не получится самостоятельно — пишите, помогу.

хм, а если у меня айпишник серый от провайдера?

Если провайдер не дает при этом функцию статического nat (чтобы хотя бы конкретный порт зафиксировать на конкретном белом адресе) — то такое подключение использовать не получится. BGP ориентируется по IP пира.

сделал так, ip адреса из тоннеля
на VDS:
log syslog all;
router id 10.8.0.1;


protocol kernel {
scan time 60;
import none;
export none;
}


protocol device {
scan time 60;
}


protocol static static_bgp {
include "subnet.txt";
include "ipsum.txt";
}


protocol bgp OurRouter {
description "Our Router";
neighbor 10.8.0.4 as 64998;
import none;
export where proto = "static_bgp";
next hop self;
local as 64999;
source address 10.8.0.1;
passive off;
}


На апельсине
log syslog all;
router id 10.8.0.4;


protocol kernel {
scan time 60;
import none;


export all; # Actually insert routes into the kernel routing table

}


protocol device {
scan time 60;
}


protocol bgp OurRouter {
description "Our Router";
neighbor 10.8.0.1 as 64999;
import all;
export none;
local as 64998;
passive off;
multihop;
}


оба на birdc show protocol показывают это:


BIRD 1.6.3 ready.
name proto table state since info
kernel1 Kernel master up 14:46:07
device1 Device master up 14:46:07
static_bgp Static master up 14:46:07
OurRouter BGP master start 14:46:07 Connect


судя по всему магия не происходит (

Для начала — допишите на VPS команду multihop в protocol bgp, как на втором. Бывает, что bird не может разобраться в виртуальных интерфейсах и поэтому не поднимает порт (проверить можно через netstat -tulpen — есть ли в списке процесс bird, слушающий порт 179).
Следующим шагом я бы попробовал пинги с одного адреса на другой (именно с указанием src address), чтобы убедиться, что работает прямое коннективити. И, возможно, на время тестирования зачистил бы правила iptables (или другого используемого файрвола) — обычно они достаточно наворочены и бывает, что блокируют трафик не очень однозначным путем.

Порты слушаются, но да, вы правы, клиент не пингуется. Клиенты пингуют друг друга и сервер, но сервер их не пингует. Судя по тому что я нагуглил это ситуация известная, но что-то причины все разные и я пока не понял как вылечить. Пока пробовал только ufw на сервере отключить, не помогло.

А можно дополнить для совсем ленивых пример настроек BGP на второй стороне, на таком же bird, а не на микротике? Я через какое-то время разберусь и допишу в комменты, но может у кого-то уже есть)

PS, немного оффтопа: решил потестировать решение, под рукой ноутбук с windows, решил на нем поднять второй bgp и посмотреть, придут ли маршруты ну и просто потыкаться, потому что раньше сталкивался только с rip, ospf и eigrp. И не нашел софта для bgp или любого другого протокола маршрутизации. Bird и компания — все под никсы, у какого-то было написано что можно завести под cygwin, но это сомнительное удовольствие… Получается, либо windows server, либо не windows. Хотя казалось бы, http, ftp, dhcp, dns и прочие более прикладные протоколы существуют в виде десятков разных реализаций, просто выбери и поставь.
Вообще, если у простого человека нет навороченного роутера, но есть openvpn и желание гонять туда только заблокированный трафик, что лучше всего сделать? если б нашелся bgp-сервер, я б такому человеку поставил openvpn, bgp-сервер и выдал соответствующие конфиги…
Для того, чтобы в openvpn гонять только заблокированный трафик, какое-то устройство должно принимать решение, какой именно трафик заворачивать в этот openvpn. Например, если openvpn приземляется на ПК — можно на нем прописывать маршруты статикой в этот туннель. Если есть контроль за второй стороной openvpn — можно там формировать список маршрутов из выгрузки и опускать его в клиента средствами OpenVPN. Вариантов много, надо приземлять их на конкретную инсталляцию.
Пример конфига bird для второго конца:
log syslog all;
router id 172.30.1.1;

protocol kernel {
scan time 60;
import none;
export all;
}

protocol device {
scan time 60;
}

protocol bgp OurRouter {
description "Our Router";
neighbor 172.30.1.2 as 64999;
# import filter { gw = 192.168.1.1; accept; }; # если нужно указывать другой некстхоп
import all; # если устраивает некстхоп на другой конец туннеля
export none;
local as 64999;
source address 172.30.1.1;
passive off;
}


Адреса и номера автономных систем тюнить по вкусу.

Так мне и не удалось подружить Bird на сервере и на локальной машинке, не хочет сервер внутри тоннеля видеть клиента. Я вот думаю, а нафиг мне вообще VDS сервер для этого, пусть там VPN крутится как крутился. Я же могу скрипт этот локально запускать и локально импортировать список и использовать его для построения маршрутов. Взлетит же?

Вы вообще можете внедрить вариант из этого поста и не озадачиваться настройками.
Но, конечно, можете на локальном сервере выдергивать список маршрутов, обрабатывать его скриптом и затягивать в локальную таблицу маршрутизации.
Не могу, у меня микротика то нет, можно пойти и купить, но это не спортивно, мне просто интересно решить задачу. Затягивать маршруты проблем не вызывает и даже все вчера заработало и весьма бодро, но только до перезагрузки, т.к. после не просто не поднялся тоннель. Ну и локальные сервисы отвалились все. Я не могу осилить статические маршруты, просто не понимаю их, такая вот маршрутная дислексия. И в iptables мог что-то накосячить. Буду пробовать разобраться поэтапно. Сначала просто гейт настрою, заворачивая все в тоннель и если все гладко заработает, буду дальше мучить Bird.
Давайте так. Дайте мне в личку данные для настройки:
  1. IP-адрес вашего интерфейса, который смотрит в провайдера
  2. шлюз по умолчанию вашего провайдера
  3. внешний IP-адрес вашего туннеля (т.е. куда коннектится туннель)
  4. локальный и удаленный IP-адреса внутри вашего туннеля

и я вам в ответ пришлю готовый конфиг bird, который будет работать без BGP, просто вытаскивая список маршрутов на локальную машину.
Очень любезно с вашей стороны, спасибо! Сейчас напишу.
Спасибо! Наконец-то руки у меня дошли настроить. В репозиториях archlinux оказался значительно более свежий bird (2.0.2), он ругался на ваш конфиг, получилось завести как-то так:
log syslog all;
router id 1.1.1.1;
 
protocol kernel kernel4 {
        scan time 60;
        ipv4 {
                export all;
                import none;
        };
}
 
protocol device {
        scan time 60;
}
 
protocol bgp OurRouter {
        description "Our Router";
        neighbor 2.2.2.2 as 64999;
        ipv4 {
                import filter { gw=3.3.3.3; accept; }; # такой адрес peer в openvpn
                #import all; # а так не завелось
                export none;
        };
        local as 64999;  # bgp без разницы что AS совпадают?
        source address 1.1.1.1;  # в нашем случае же без разницы что указывать тут?
        passive off;
}

В итоге, работает, но пришлось руками прописать адрес peer из openvpn. Может кому пригодится.

Ну и до кучи поставил dnscrypt-proxy, потому что провайдер подменяет dns-ответы… Но это уже совсем другая история)
bird 2 — это уже совсем другая история, под него надо перерабатывать конфиги. Честно скажу, пока кроме экспериментов на стенде никуда не запускал, продакшн везде на 1.6.4.

По вашим вопросам:
1) в нашем случае совсем не важно, совпадает ли номер AS. Но это именно в нашем, потому что в общем поведение при совпадении номера (iBGP) и при его несовпадении (eBGP) сильно разнится. Поэтому если строить что-то более сложное — неплохо было бы изучить, чем они отличаются, перед проектированием.
2) в source address указывается адрес, с которого этот конкретный пир будет пытаться поднимать bgp-сессию. Поэтому, опять же, в общем случае там важно указывать правильный адрес. Но вроде бы bird умеет понять, что написана фигня, и проигнорировать.

вроде настроил, но открывается не все. Один сайт выдает почему то заглушку провайдера, телеграм не открывается вообще. Но через впн доступен.
сделал так:
log syslog all;
router id 192.16.1.6;


protocol direct {
interface "eth0", "tun0";
}


table frz;
table FCKRKN;
table other;
table master;
table VPN;


protocol static {
table frz;
description "провайдер";
check link on;
preference 100;
route 0.0.0.0/0 via 192.168.1.1;
}


protocol static {
table VPN;
description "VPN";
check link on;
preference 100;
route 0.0.0.0/0 via 10.8.0.1;
}


protocol static {
table master;
description "Common Table";


Это главная таблица, сюда вписываются все default-маршруты
    route 0.0.0.0/0 multipath
                via 192.168.1.1
                via 10.8.0.1;

}


############утащил из прмера, не нужно######
protocol static {
table other;
description "Other custom static routes";
preference 200;


Включение всех конфигов (если есть в наличии) в /etc/bird/static_route.d/
include "/etc/bird/static_route.d/*.conf";

}


protocol static {
table FCKRKN;
description "заблокированные";
preference 200;
include "subnet.txt";
}
###########################################################################################
protocol kernel {
table frz;
persist;
learn;
scan time 20;
kernel table 10;
export all;


debug all;

}


protocol kernel {
table master;
persist;
learn;
scan time 20;
kernel table 254;
export all;


debug all;

}


protocol pipe {
table master;
peer table frz;
peer table VPN;
peer table FCKRKN;


peer table other;
    import all;

import filter { gw = 192.168.1.1; accept; }
debug all;

}

вроде настроил, но открывается не все. Один сайт выдает почему то заглушку провайдера, телеграм не открывается вообще. Но через впн доступен.
сделал так:
log syslog all;
router id 192.16.1.6;


protocol direct {
interface "eth0", "tun0";
}


table frz;
table FCKRKN;
table other;
table master;
table VPN;


protocol static {
table frz;
description "провайдер";
check link on;
preference 100;
route 0.0.0.0/0 via 192.168.1.1;
}


protocol static {
table VPN;
description "VPN";
check link on;
preference 100;
route 0.0.0.0/0 via 10.8.0.1;
}


protocol static {
table master;
description "Common Table";


Это главная таблица, сюда вписываются все default-маршруты
    route 0.0.0.0/0 multipath
                via 192.168.1.1
                via 10.8.0.1;

}


############утащил из прмера, не нужно######
protocol static {
table other;
description "Other custom static routes";
preference 200;


Включение всех конфигов (если есть в наличии) в /etc/bird/static_route.d/
include "/etc/bird/static_route.d/*.conf";

}


protocol static {
table FCKRKN;
description "заблокированные";
preference 200;
include "subnet.txt";
}
###########################################################################################
protocol kernel {
table frz;
persist;
learn;
scan time 20;
kernel table 10;
export all;


debug all;

}


protocol kernel {
table master;
persist;
learn;
scan time 20;
kernel table 254;
export all;


debug all;

}


protocol pipe {
table master;
peer table frz;
peer table VPN;
peer table FCKRKN;


peer table other;
    import all;

import filter { gw = 192.168.1.1; accept; }
debug all;

}

и накосячил с маршрутами, после перезагрузки тоннель не поднимается, no route to host, плохо быть мартышкой.

Почему-то итоговый список маршрутов получается больше чем на самом деле заблокировал РКН. Например 54.194.41.141 по данным eais.rkn.gov.ru не заблокирован. Однако в скачанном у вас реестре есть сеть 54.194.41.0/24
Понял что надо использовать полный список адресов на 90 тысяч записей, чтобы избежать такого эффекта.
Хотелось бы полохматить бабушку. Кейс такой — то что выгружается сейчас судя по всему это список отсюда eais.rkn.gov.ru. Однако есть еще такой список blocklist.rkn.gov.ru — и вот они двое ни разу не синхронизированы. Вопрос такой — есть ли какой-то способ объединить эти два списка в решении из этой статьи?
Если вы знаете способ, как получить полный список из второй ссылки в виде файла — далее всё будет делаться ровно по той же логике.
НЛО прилетело и опубликовало эту надпись здесь
Если вы забираете маршруты со своего же bird по инструкции из этой статьи, то проверьте, включено ли в описании пира passive off (т.е. активный режим). Если включено — проверьте настройки файрволла на микротике — есть ли в ветке input разрешение на входящие сессии на 179/tcp.

Замечу, что списки на antifilter.download сейчас не обновляются, судя по всему, они делаются на основе antizapret.info, где последнее обновление было 12 октября.
К счастью, https://github.com/zapret-info/z-i обновляется регулярно.

Это не так. Списки делаются на основе дампа РКН, регулярно обновляющегося. Текущая версия использованного дампа — updateTime=«2020-12-08T05:00:00+03:00».

А на основании чего сделан вывод, что списки не обновляются?

был неправ, дело не в том, что списки не обновляются, а в том, что allyouneed.lst (оно же отдаётся по bgp, как я понимаю), не включает хосты из ipresolve.lst


моя вина, невнимально читал.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории