Данная история началась с того, что у меня появилась вышеупомянутая железка для тестов. Те кто с ней уже сталкивались, знают, но для остальных поясню, устройство неплохое, но изначально в веб конфигураторе не очень функциональное. Хотя прошивка внутри очень похожа на Edge-router этой же компании. Давайте же начнём!
Для начала давайте определимся для начала, что у вас уже должно быть настроено. Без этого ничего не получится, либо настройка будет более сложной, в общем я пошёл по простому пути. Итак вам понадобятся:
- Уже настроенный vpn канал, через который вы заходите на заблокированные ресурсы
- Статический IP адрес у своего провайдера (не обязательно)
- Базовые знания в сетях и маршрутизации
- Базовые знания ssh и командной строки
Да, конечно можно просто настроить на USG vpn туннель и пустить весь трафик через него, но в этом случае мы получим задержки до всех ресурсов интернета. Это не наш путь, будем направлять через vpn только трафик заблокированных ресурсов.
Шаг первый, получаем список заблокированных IP
Вариантов сделать это - несколько. Я предлагаю выбрать способ, по моему мнению самый простой, при помощи BGP. BGP это протокол маршрутизации, достаточно сложный в понимании для рядового пользователя, но нам многого и не надо. Не так давно появился ресурс, который по данному протоколу отдаёт список заблокированных IP адресов (для ознакомления естественно). Но для работы с этим сервисом необходимо сделать некоторые манипуляции.
- Проматываем ближе к концу страницы
- Жмём на кнопку «активировать управление BGP»

Для начала, заходим на данный ресурс.

Далее будет насколько настроек, выбираем необходимые нам, а номер AS выбираем из промежутка 64512-65534. Это приватные номер AS.
Теперь жмём на кнопку сохранить и ждём около 5 минут для применения настроек на удаленном сервере. Если у вас динамический IP, можно не указывать номер AS и в дальнейшем использовать 64999, но настройки работать у вас не будут.
Шаг второй, выбираем, куда направлять трафик
Далее, по логике вещей нам надо перенаправить весь трафик на эти IP через уже настроенный VPN канал. Для этого необходимо узнать IP адрес, который получает ваш USG на туннельном сервере. Как это сделать? Подключаемся к гейтвею по SSH. И вводим там следующую команду:
show interfaces
В результате мы получим список всех интерфейсов и IP адресов на них назначенных. Ищем там строчку наподобие последней:
У вас может быть другое имя интерфейса и адрес, нам нужен только второй параметр. Запоминаем его и идём дальше.
Шаг третий, опциональный, чиним провайдерские DNS
Некоторые замечательные провайдеры интернет очень любят перехватывать DNS запросы на сторонние сервера и подсовывать свои ответы, так что даже все пути по попытке обойти блокировку могут оказаться тупиковыми. Перестрахуемся от этого и добавим статические маршруты до кастомных днс, например, гугла. Заходим на веб морду своего Cloud key или UniFi controller. Идём по пути Settings - Routing & Firewall - Create new route и вписываем там следующее:
- Name: Любое какое вам нравится
- Enabled: галочка
- Destination network: 8.8.8.8/32
- Distance: 1
- Static route type: Next hop
- Next hop: пишем IP из предыдущей части, в моем случае 10.1.0.1
Далее добавляем ещё один роут, в котором вместо 8.8.8.8/32 пишем 8.8.4.4/32. Далее ждём некоторое время для применения настроек и идём дальше.
Шаг пятый, проверяем все настройки тестово
Так как все, что мы будем проделывать далее - нельзя настроить через веб морду, есть два варианта развития событий:
- Вводим все команды в командной строке
- Создаём кастомный файл настроек
Сейчас мы воспользуемся первым, для проверки того, что мы все делаем правильно, и что бы случайно не запороть конфиг и не потерять управление. Подключаемся к USG по SSH и вводим следующее:
configure
set interfaces bridge br0 address 192.168.254.1/30
set protocols bgp 64999 parameters router-id 192.168.254.1
set protocols bgp 64999 neighbor 163.172.210.8 remote-as 65432
set protocols bgp 64999 neighbor 163.172.210.8 ebgp-multihop 255
set protocols bgp 64999 neighbor 163.172.210.8 soft-reconfiguration inbound
set protocols bgp 64999 neighbor 163.172.210.8 route-map import rkn
set protocols bgp 64999 neighbor 163.172.210.8 timers holdtime 240
set policy route-map rkn
set policy route-map rkn description "RKN next hop"
set policy route-map rkn rule 1 action permit
set policy route-map rkn rule 1 set ip-next-hop 10.1.0.1
commit
- Первой строчкой мы входим в режим конфигурации, второй строчкой мы поднимем bridge интерфейс и назначим ему серый pi адрес. Он необходим для дальнейшей настройки BGP и может быть любым серым IP адресом, не использующимся в вашей маршрутизации.
- Далее его же пишем вместо моего 192.168.254.1.
- Так же не забываем поменять 64999 на свой номер AS, который мы так же выбрали ранее.
- И в последнем разделе мы создадим карту маршрутизации для получаемых IP адресов и перенаправим их в VPN тоннель. Не забывайте поменять 10.1.0.1 на свой.
Остальные настройки не меняем. Последняя же строчка применяет данные настройки на устройстве. Немного ждём и смотрим что все заработало, для этого вводим:
exit
show ip bgp
Мы должны получить список из кучи сетей с параметром next hop в IP адрес вашего туннеля. Если же его нет - вы что то сделали неправильно, можно перезагрузить гейтвей и начать все с начала. Если же все отлично - можете попробовать открыть какой нибудь рутрекер и перейти к закреплению данного кастомного конфига.
Шаг шестой, создаём кастомный конфиг
Данные настройки можно вполне официально добавить на устройство через специальный файл config.gateway.json. Потому как все, что вы применили через командную строчку, даже в случае сохранения на устройстве, перезапишется при любом действии с USG через веб конфигуратор. Что бы этого избежать, можно создать файл с кастомными необходимыми настройками и положить его по правильному пути, тогда при любом изменении в веб морде или перезагрузке устройства - они будут автоматически подтягиваться на USG.
Создать данный файл вы можете либо самостоятельно, используя официальный мануал Ubiquiti, либо скачав и изменив под себя мой файл конфига тут. Внимательно смотрите что и где вы изменяете, есть вероятность потерять управление над своим устройством! Если вдруг это произошло - достаточно удалить созданный файл и перезагрузить USG.
Конфиг необходимо разместить в правильном месте в Colud Key или в UniFi Configurator. Напишу более популярные пути:
- Cloud Key: /usr/lib/unifi/data/sites/default
- UniFi Configurator: (в виде аддона для HassKit.io): папка_с_конфигом_hassio/addons/data/a0d7b954_unifi/unifi/data/sites/default/
- Ubuntu server: /usr/lib/unifi/data/sites/default
Последняя папка defaults может быть другой, в зависимости от первоначальной настройки вашей экосистемы.
Для того что бы убедиться, что у вас в принципе рабочий VPN, рекомендую перед применением всех кастомных настроек, поставить следующую галочку в настройках, и посмотреть, будут ли открываться какие нибудь сайты с заблокированными ресурсами:
Так же в конфиг добавлен раздел с правилами для Hairpin Nat, что позволяет получить доступ к своему белому IP внутри локальной сети. Если вам это не нужно - удалите данные настройки и проверьте итоговый файл на корректность, например тут. Жду ваших комментариев и дополнений с исправлениями, ибо я мог где то и накосячить. Но проверка показала что способ работает.
BGP тема годная. Сам сижу полтора года на mikrotik с поднятым bgp и vpn до aruba, проблем ноль. Цена вопроса $1 в месяц
Уже 2,75 Евро / месяц + налоги :(
Спасибо, добавил в избранное
А на ER-4 прошивка 2.0.6 у меня не получается проделать всё тоже самое((
На шаге set protocols bgp 64999 neighbor 163.172.210.8 ebgp-multihop 255 говорит следующее is Configured as IBGP Neighbor
Если без этой строки то маршрутизацию получает, bgp маршрутов становится >30000
Но, при поднятии интерфейса wg0 (поднят wireguard до vps) вся bgp маршрутизация отваливается..
Подскажите как реализовать данную схему на EdgeRouter
Вообще конфиг создавался именно на основе прошивки edge router, ибо с usg у них одинаковая основа прошивки. Могу попробовать посмотреть что будет на er. Он у меня есть в наличии
И да, если что то делать в веб конфиге - все что делалось через командную строку, отваливается. На USG по крайней мере так
Спасибо за столь быстрый ответ! Всё пробовал делать в консоли подключившись putty Но ошибка is Configured as IBGP Neighbor как я понимаю потому что не локальный адрес во всяком случае вот здесь прочитал об этом:
https://help.ubnt.com/hc/en-us/articles/205222990-EdgeRouter-Border-Gateway-Protocol-BGP-
Буду очень признателен за помощь! Я с EdgeOS пока только знакомлюсь
Проверил вот на этой пепяке: EdgePoint Router 6-Port, прошивка v2.0.6
И проблем описанных выше не вижу
Спасибо за ответ!
Давайте попробуем разобраться почему же тогда не работает у меня.
1) Вот конфигурация сети:
2) show interfaces
3) Добавляю правила через putty
4) Применяю
И получаю то, о чём писал выше.
В чём отличие моей конфигурации от вашей?
Почему в третьем пункте строчки вводятся два раза?
Делаю копировать вставить, само так получается)) Я при этом пробовал вводить команды построчно и применять их, результат тот же - затык на ebgp-multihop 255
remote as всегда должен быть 64532
Да, 64999 нужно менять на выбранный номер APN, а "remote as всегда должен быть 64532" для antifilter.download
Но что происходит с BGP при поднятии wg0