Обход блокировок, используя UniFi Security Gateway

26 ноября 2019, 14:22

Данная история началась с того, что у меня появилась вышеупомянутая железка для тестов. Те кто с ней уже сталкивались, знают, но для остальных поясню, устройство неплохое, но изначально в веб конфигураторе не очень функциональное. Хотя прошивка внутри очень похожа на Edge-router этой же компании. Давайте же начнём!

Для начала давайте определимся для начала, что у вас уже должно быть настроено. Без этого ничего не получится, либо настройка будет более сложной, в общем я пошёл по простому пути. Итак вам понадобятся:

  • Уже настроенный vpn канал, через который вы заходите на заблокированные ресурсы
  • Статический IP адрес у своего провайдера (не обязательно)
  • Базовые знания в сетях и маршрутизации
  • Базовые знания ssh и командной строки

Да, конечно можно просто настроить на USG vpn туннель и пустить весь трафик через него, но в этом случае мы получим задержки до всех ресурсов интернета. Это не наш путь, будем направлять через vpn только трафик заблокированных ресурсов.

Шаг первый, получаем список заблокированных IP

Вариантов сделать это - несколько. Я предлагаю выбрать способ, по моему мнению самый простой, при помощи BGP. BGP это протокол маршрутизации, достаточно сложный в понимании для рядового пользователя, но нам многого и не надо. Не так давно появился ресурс, который по данному протоколу отдаёт список заблокированных IP адресов (для ознакомления естественно). Но для работы с этим сервисом необходимо сделать некоторые манипуляции. 

  • Проматываем ближе к концу страницы
  • Жмём на кнопку «активировать управление BGP»

1600x_image.png?1574776082

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

1600x_image.png?1574776081

Проматываем ближе к концу страницы и жмем на кнопку «активировать управление BGP»

1600x_image.png?1574776082

Далее будет насколько настроек, выбираем необходимые нам, а номер AS выбираем из промежутка 64512-65534. Это приватные номер AS.

Теперь жмём на кнопку сохранить и ждём около 5 минут для применения настроек на удаленном сервере. Если у вас динамический IP, можно не указывать номер AS и в дальнейшем использовать 64999, но настройки работать у вас не будут.

Шаг второй, выбираем, куда направлять трафик

Далее, по логике вещей нам надо перенаправить весь трафик на эти IP через уже настроенный VPN канал. Для этого необходимо узнать IP адрес, который получает ваш USG на туннельном сервере. Как это сделать? Подключаемся к гейтвею по SSH. И вводим там следующую команду:

show interfaces

В результате мы получим список всех интерфейсов и IP адресов на них назначенных. Ищем там строчку наподобие последней:

1600x_image.png?1574776491

У вас может быть другое имя интерфейса и адрес, нам нужен только второй параметр. Запоминаем его и идём дальше.

Шаг третий, опциональный, чиним провайдерские 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

1600x_image.png?1574772883

Я использую немного другие ДНС сервера, поэтому итоговая картинка у меня чуть другая.

Далее добавляем ещё один роут, в котором вместо 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
1600x_image.png?1574772883

Тут лишь малая часть всего списка.

Мы должны получить список из кучи сетей с параметром 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, рекомендую перед применением всех кастомных настроек, поставить следующую галочку в настройках, и посмотреть, будут ли открываться какие нибудь сайты с заблокированными ресурсами:

1600x_image.png?1574777595

Так же в конфиг добавлен раздел с правилами для Hairpin Nat, что позволяет получить доступ к своему белому IP внутри локальной сети. Если вам это не нужно - удалите данные настройки и проверьте итоговый файл на корректность, например тут. Жду ваших комментариев и дополнений с исправлениями, ибо я мог где то и накосячить. Но проверка показала что способ работает.


Все новости мира умных домов - t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram - @Soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. (n0name)
    (n0name) 18 дней назад

    BGP тема годная. Сам сижу полтора года на mikrotik с поднятым bgp и vpn до aruba, проблем ноль. Цена вопроса $1 в месяц

  2. Антон Самсонов (samsonovs)

    Спасибо, добавил в избранное 

  3. (kermy)
    (kermy) 14 дней назад

    А на 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

    • Александр Жабунин (OXOTH1K)
      Александр Жабунин (OXOTH1K) отредактировано 14 дней назад

      Вообще конфиг создавался именно на основе прошивки edge router, ибо с usg у них одинаковая основа прошивки. Могу попробовать посмотреть что будет на er. Он у меня есть в наличии

    • Александр Жабунин (OXOTH1K)

      И да, если что то делать в веб конфиге - все что делалось через командную строку, отваливается. На USG по крайней мере так

  4. (kermy)
    (kermy) отредактировано 14 дней назад

    Спасибо за столь быстрый ответ! Всё пробовал делать в консоли подключившись putty Но ошибка is Configured as IBGP Neighbor как я понимаю потому что не локальный адрес во всяком случае вот здесь прочитал об этом:

    https://help.ubnt.com/hc/en-us/articles/205222990-EdgeRouter-Border-Gateway-Protocol-BGP-

    Буду очень признателен за помощь! Я с EdgeOS пока только знакомлюсь

  5. (kermy)
    (kermy) 14 дней назад

    Спасибо за ответ!

    Давайте попробуем разобраться почему же тогда не работает у меня.

    1) Вот конфигурация сети:

    1000x_image.png?1575180567

    2) show interfaces

    1000x_image.png?1575180584

    3) Добавляю правила через putty

    1000x_image.png?1575180671

    4) Применяю

    1000x_image.png?1575180729

    И получаю то, о чём писал выше.

    В чём отличие моей конфигурации от вашей?

  6. (kermy)
    (kermy) 14 дней назад

    Делаю копировать вставить, само так получается)) Я при этом пробовал вводить команды построчно и применять их, результат тот же - затык на ebgp-multihop 255

  7. (kermy)
    (kermy) 12 дней назад
    Половина дела сделана ebgp-multihop больше не спотыкается
    Оказывается))) Что set protocols bgp 64999 и remote-as 64999 не могут быть одинаковыми значениями)) 
    т.е. так будет работать set protocols bgp 64999 remote-as 64998
    а так set protocols bgp 64999 remote-as 64999 нет
    Но всё равно после поднятия интерфейса wg0 маршруты bgp пропадают 
    Так есть
    
    1000x_image.png?1575294765
    А так нет
    1000x_image.png?1575294874
    хотя show ip bgp говорит что они как бы есть
    1000x_image.png?1575295067
    
    Но при этом ничего в них не заворачивается 
  8. (kermy)
    (kermy) 12 дней назад

    Да, 64999 нужно менять на выбранный номер APN, а "remote as всегда должен быть 64532" для antifilter.download

    Но что происходит с BGP при поднятии wg0

К списку статей

Похожие статьи

15 ноября 2018, 09:42
Способы автоматизации механических ворот
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
24 августа 2018, 12:18
Пошаговая установка HomeAssistant
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
27 августа 2018, 10:14
Интегрируем ХА в HomeKit
20 октября 2018, 22:57
Теоретические основы протокола MQTT и описание того, как он работает и для чего используется
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.