Research and forecasts in IT
Reading room
May 2017 29

Как обойти блокировки сайтов, не направляя весь трафик через VPN

From Sandbox
Обход блокировок — насущная необходимость. Возможно, сегодня в вашей стране заблокировали ресурсы, которые вы не так часто посещали, однако мир нестабилен и завтра в списке могут оказаться ваши любимые сайты и приложения.

На Хабре, да и не только на нем, есть множество инструкций, как обойти блокировки с помощью VPN, в частности, с помощью OpenVPN, есть и прекрасные пошаговые консольные скрипты установки OpenVPN. Однако чаше всего подобные инструкции подразумевают, что в результате весь интернет-трафик будет идти через VPN-соединение, что может быть неудобным по ряду причин. И в этом коротком посте я хотел рассказать, как настроить OpenVPN Access Server и обычный OpenVPN для обслуживания только заблокированных ресурсов.

Установка и начальная настройка OpenVPN Access Server проста и описана много раз. Само собой, что вам понадобится для этого какой-либо сервер за пределами страны-цензора (AWS, Cloudatcost, DigitalOcean, etc.). Суть первоначальной настройки в нашем случае сводится к 3 пунктам:

  1. Advanced VPN → Additional OpenVPN Config Directives (Advanced): Server Config Directives — Добавляем непосредственно список адресов, к которым хотим иметь доступ через OpenVPN (можно воспользоваться командами nslookup или dig, чтобы определить эти адреса):

    push route 77.88.55.77 255.255.255.255 vpn_gateway
    push route 5.255.255.77 255.255.255.255 vpn_gateway
    push route 77.88.55.88 255.255.255.255 vpn_gateway
    push route 5.255.255.88 255.255.255.255 vpn_gateway

    Сохраняем настройки, обновляем конфигурацию сервера

    image

  2. VPN Settings → Routing: Should VPN clients have access to private subnets (non-public networks on the server side)? — Yes, using NAT, после чего добавляем CIDR-блоки сетей, в которых находятся заблокированные ресурсы

    77.88.55.0/24
    5.255.255.0/24

    Маску сети не стоит брать слишком большой, чтобы не захватить и другие ресурсы в этих сетях и таким образом не замедлить их работу для себя.

  3. VPN Settings → Routing: Should client Internet traffic be routed through the VPN? — No. Сохраняем настройки, обновляем конфигурацию сервера

    image

Конечно, при всей простоте и удобстве такой вариант имеет недостаток в виде ограничения на 2 одновременных подключения в бесплатной версии (минимальный пакет в 10 лицензий на год по $15 за каждую не всем подойдет), поэтому ниже вариант как достичь того же с помощью обычного OpenVPN (файл /etc/openvpn/server.conf):

#Эта строка должна быть удалена или закомментирована
#push "redirect-gateway def1 bypass-dhcp"

#Google public DNS
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ключевой момент -- прописываем маршруты на DNS-сервера через VPN
push "route 8.8.8.8 255.255.255.255 vpn_gateway"
push "route 8.8.4.4 255.255.255.255 vpn_gateway"
#Добавляем необходимые ip-адреса
push "route 77.88.55.77 255.255.255.255 vpn_gateway"
push "route 5.255.255.77 255.255.255.255 vpn_gateway"
push "route 77.88.55.88 255.255.255.255 vpn_gateway"
push "route 5.255.255.88 255.255.255.255 vpn_gateway"

Не забываем перезагрузить конфигурацию нашего сервер:

sudo service openvpn reload

Подключившись после этого к вашему серверу, вы можете проверить результат, скажем, сделав трассировку маршрута на один из адресов/доменов, который заблокирован, а потом на другой, который разрешен в вашей стране. Ожидаемый результат: в первом случае трафик будет идти через шифрованный туннель на ваш сервер, во втором — как обычно, через сеть вашего провайдера. Этот способ прекрасно работает на всех основных платформах, в том числе и на iOS.

Таким образом, при минимальных усилиях вы получаете быстро работающий интернет с несколько замедленным доступом к заблокированным ресурсам. Буду рад, если это кому-то поможет :)
+33
91.7k 352
Comments 52
Top of the day