Прозрачный обход блокировок на Ubiquity EdgeRouter X

Oleg Bovykin
2 min readApr 23, 2018

--

Лучший SOHO-роутер на рынке

22 апреля 2018 года РосКомНадзор окончательно сошел с ума и в попытке закрыть Telegram заблокировал google.com. Под блокировку попала часть Youtube и еще 18 миллионов ip-адресов. На следующий день под блокировку попал Gmail. Телеграм продолжал работать.

К этому моменту уже был куплен и настроен VPN на устройствах. Пришла мысль, что хорошо бы настроить прозрачную блокировку прямо на маршрутизаторе. В общем случае это называется policy-based routing. Общая идея:

  • Собираем список заблокированных подсетей и ip с РКН или других сервисов
  • Генерируем конфигурацию под эти адреса
  • Отправляем трафик на заблокированные подсети через VPN. Остальное гоним стандартным способом.

Добавляем сетевой интерфейс VPN

Edgerouter X дружит с OpenVPN очень медленно, поэтому будем использовать обычный L2TP. Подключаемся к роутеру через web-интерфейс, жмем CLI логинимся, вводим configure , добавляем подключение к VPN:

set interfaces pptp-client pptpc0 default-route none
set interfaces pptp-client pptpc0 description 'VPN connection'
set interfaces pptp-client pptpc0 mtu 1500
set interfaces pptp-client pptpc0 name-server auto
set interfaces pptp-client pptpc0 require-mppe
set interfaces pptp-client pptpc0 server-ip **server ip**
set interfaces pptp-client pptpc0 user-id **login**
set interfaces pptp-client pptpc0 password **password**
commit
  • **server ip** — меняем на адрес сервера
  • **login** — логин для подключения к VPN
  • **password** — пароль для подключения к VPN

В дэшборде после этого должен появиться новый интерфейс VPN connection со статусом connected. Если все ок, вводим: save.

Добавляем заблокированные диапазоны

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

Задаем правила firewall

set firewall modify vpn_route rule 1 action modify
set firewall modify vpn_route rule 1 description 'traffic to blocked via pptpc0'
set firewall modify vpn_route rule 1 modify table 1
set firewall modify vpn_route rule 1 destination group network-group rkn-blocked-ips
set interfaces switch switch0 firewall in modify vpn_route
commit
save

Создаем NAT правило

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

  • Вкладка Firewall/NAT -> NAT
  • Add Source NAT Rule
  • Description: Blocked ips to vpn
  • Ставим галочку Enable
  • Outbound interface: pptpc0
  • Ставим опцию Use Masquerade
  • Ставим опцию All protocols
  • Выбираем внизу Dest network group: Blocked networks
  • Save
  • В таблице Source NAT перетаскиваем наше правило Blocked ips to vpn на самый верх. Нажимаем Save rule order

Последний штрих

Вводим в CLI

set protocols static table 1 interface-route 0.0.0.0/0 next-hop-interface pptpc0
commit
save

Теперь трафик до заблокированных сетей будет идти через VPN.

--

--