Настраиваем OpenVPN на EdgeRouter

Эффективное решение проблемы блокировки интернет-ресурсов

Dmitri Arekhta
5 min readJun 24, 2017

Последние мировые тенденции указывают на то, что государство все чаще и чаще любит вмешиваться в интернет с целью ограничения доступа к ресурсам. В этой заметке я попробую описать один из самых эффективных способов обхода этой проблемы с помощью OpenVPN и обычного SOHO роутера Ubiquiti EdgeRouter.

Главное преимущество предложенного метода состоит в том, что через VPN мы будем пробрасывать лишь определенные ресурсы, поэтому это практически никак не повлияет на скорость вашего интернет-соединения. Приготовьтесь использовать терминал для настройки!

EdgeRouter

EdgeRouter — невероятно крутая железка и если вы не являетесь счастливым обладателем оной рекомендую все-таки ее купить. Для дома я бы рекомендовал EdgeRouter Lite, который стоит на Amazon всего-лишь $75. Более простая модель EdgeRouter X обойдется вам в $63.

Чем же крут EdgeRouter? Во-первых, операционной системой EdgeOS с большим набором функций, которые можно настраивать как с помощью интуитивно понятного GUI, так и через SSH. Во-вторых, аппаратной платформой: EdgeRouter Lite основан на специализированном сетевом процессоре Cavium Octeon Plus CN5020, который может акселерировать множество сетевых функций, в том числе NAT. EdgeRouter X основан на более слабом MediaTek MT7621AT, поэтому я бы все же рекомендовал остановить свой выбор на модели Lite. Третий фактор — это, конечно же, цена.

VPN-сервис

Изначально я планировал использовать Tor, но непредсказуемая пропускная способность канала и подобные нелепые истории заставили обратить взор на коммерческие сервисы VPN. Недостатка в них совершенно нет и я остановил свой выбор на Hide.me VPN. Среди популярных сервисов могу также рекомендовать PureVPN и ExpressVPN.

Далее следует выбрать на свой вкус наименее зарегулированную в сфере интернета страну и скачать сертификаты и профиль для OpenVPN под Linux. Проанализировав множество факторов я выбрал Нидерланды.

Настраиваем OpenVPN

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

  • После тега auth-user-pass следует дописать путь к файлу, в котором будет храниться в текстовом виде информация с логином и паролем к вашему VPN сервису. Строка должна приобрести следующий вид:

auth-user-pass /config/auth/userpass.txt

  • Также следует убрать тег tls-version-min в случае его присутствия, т.к. не все версии OpenVPN его понимают.

Необходимо создать текстовый файл userpass.txt, в первой строке которого будет ваш логин, а во-второй — пароль. Ничего более.

Теперь закачаем через SCP все необходимые файлы на роутер. В случае Mac или Linux можно воспользоваться терминалом, на Windows можно использовать WinSCP (192.168.1.1 — IP адрес роутера, ubnt — имя пользователя):

scp ./StaticKey.pem ubnt@192.168.1.1:/config/auth/

scp ./ca.pem ubnt@192.168.1.1:/config/auth/

scp ./Netherlands.ovpn ubnt@192.168.1.1:/config/auth/

scp ./userpass.txt ubnt@192.168.1.1:/config/auth/

Ничего сложного! Теперь давайте обновим конфигурацию роутера и убедимся, что соединение работает нормально. Для этого необходимо подключиться через SSH к вашему роутеру (пользователи Windows могут использовать Putty) и выполнить следующее (обратите внимание, что после vtun следует символ ноля, спасибо Medium за шрифты):

configure

set interfaces openvpn vtun0 config-file /config/auth/Netherlands.ovpn

set interfaces openvpn vtun0 description ‘hide.me VPN’

commit

save

В случае удачного соединения ваш vtun0 получит корректный IP-адрес, если же вы где-то ошиблись роутер может показывать статус Connected, но вместо IP-адреса будет написано TBD.

DNS Forwarding

Поскольку провайдеры любят подменять DNS запросы, чтобы вместо нужного вам ресурса в браузере открывалась какая-нибудь ахинея мы настроем DNS forwarding для интересующих нас сайтов. Для этого необходимо там же в терминале выполнить следующие строки:

set service dns forwarding options server=/kinopoisk.ru/8.8.8.8

set service dns forwarding options server=/vk.com/8.8.8.8

set service dns forwarding options server=/yandex.ru/8.8.8.8

set service dns forwarding options server=/yandex.ua/8.8.8.8

И так далее. Не забывайте сделать commit и save. Вместо Google’ого DNS сервера 8.8.8.8 можете использовать любой другой.

NAT и IP Firewall

VPN поднят, DNS’ы поправили, теперь необходимо настроить NAT для интерфейса vtun0 и пустить часть трафика через него.

NAT проще всего создать через GUI. Для этого открываем вкладки: Firewall/NAT -> NAT и жмем на кнопку Add Source NAT Rule:

Save и NAT создан! Обратите внимание, чтобы NAT для вашего VPN был как минимум вторым пунктом после общего NAT’а для вашего соединения. Таким образом весь трафик будет ходить обычным путем через обычный NAT, а через NAT VPN трафик мы пустим лишь через дополнительные правила.

Теперь создадим список из IP-адресов ресурсов, доступ к которым будет осуществляться через VPN. Для этого откроем вкладку Firewall/NAT -> Firewall/NAT Groups и нажмем кнопку Add Group. Нас интересует Address Group, которую мы назовем vpn_group:

В эту группу следует добавить все интересующие вас IP-адреса. Узнать их весьма просто. Для этого в macOSX и Linux есть утилита nslookup:

nslookup vk.com

Теперь попросим IP Firewall создать правило, согласно которому весь трафик с destination IP-адресами из нашего списка будет перенаправляться через VPN NAT:

set protocols static table 1 interface-route 0.0.0.0/0 next-hop-interface vtun0

set firewall modify vpn_route rule 1 description ‘VPN Sites’

set firewall modify vpn_route rule 1 destination group address-group vpn_group

set firewall modify vpn_route rule 1 modify table 1

set interfaces ethernet eth1 firewall in modify vpn_route

commit

save

Готово!

Spotify

В качестве бонуса я расскажу как абсолютно легально получить работающий Spotify не прибегая к покупке Premium аккаунта. Для этого в наш vpn_group нужно добавить следующие IP адреса:

78.31.10.132

193.235.32.2

194.68.28.185

194.132.0.0/16

Похожим образом “перенести” в другую страну можно любое приложение, но об этом в другой статье :)

--

--