Свой собственный сервис VPN для обхода блокировок Роскомнадзора

HELP-ME-24.COM (Freelance Team), Черноусов Антон

В связи с последними событиями по блокировке крупных ресурсов, наподобие Linkedin, выросло число запросов на создание персональных VPN-сервисов. Публичными VPN-сервисами последнее время предпочитают не пользоваться, так как участились случаи похищения персональных данных, и хорошо если у вас "уплывет" пароль от rutracker, это еще не беда, а вот "утекшие" жуликам учетные данные от PayPal - это уже серьезно.

Настройка VPN-тунеля

Как я уже многократно говорил, настройка персонального VPN-сервиса на любое количество подключений ,для себя и всех своих знакомых, занимает около часа, стоимость аренды выделенного сервера в Amazon EC2 по программе AWS Free Tier составит 1$ в год и тот возвращается на карту после подтверждения. При умеренном использовании без скачивания тяжелых файлов и при использовании проксирования в тунель только ряда запросов к заблокированным ресурсам вы не превысите лимиты ресурсов Amazon. Если же вы намерены использовать VPN для туннелирования всего трафика, то вам подойдет недорогой VPS-хостинг в Европе за 2.5$ в месяц. Цена не сильно отличается от коммерческих VPN-решений, а с учетом нелимитированных клиентских соединений вы еще и в плюсе останетесь, если будете ими торговать.

Итак, приступим к созданию собственного VPN-сервиса. Зарегистрируйте на Amazon новый EC2-инстанс Ubuntu server (Free Tier).

Регистрация Amazon-инстанс для VPN

Назначьте статический IP-адрес. Бесплатного лимита в 5$ хватит на инстанс и один статический адрес, в противном случае, используйте для подключения клиентов публичное DNS-имя предоставляемое Amazon для подключения по ssh.

Amazon, назначение статического IP-адреса

Для подключений VPN-клиентов откройте доступ к UDP-порту 1194. Так же можете открыть и другие требующиеся порты, например, ICMP для проверки доступности сервера.

Настройка Firewall на Amazon

Подключитесь к Amazon-серверу по ssh, обновите программное обеспечение и установите необходимые для работы пакеты. Эти операции выполняются от имени супер-пользователя root переключение в режим суперпользователя выполняется командой sudo su.

# apt-get update
# apt-get upgrade
# apt-get install easy-rsa openvpn aptitude mc

Скопируйте каталог /usr/share/easy-rsa/ в каталог /etc/openvpn, можно конечно оставить его там где он и находится или скопировать в любой другой каталог, но я считаю, что разумнее хранить ключи в каталоге конфигурации для последующего пересоздания ключей или отзыва в случае компрометации. Так же, рекомендую настроить параметры генерации ключей (огранизация email и т.п.) их можно, конечно, оставить и значениями по умолчанию находятся они в файле /etc/openvpn/easy-rsa/vars, изменить требуется следующие параметры (остальные значения оставьте как есть):

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
export KEY_OU="MyOrganizationalUnit"

Перейдите в скопированный каталог easy-rsa и последовательно выполните команды для генерации набора ключей (назначение каждой команды мы рассматривали в предыдущих заметках):

# cd ./easy-rsa
# source ./vars
# ./clean-all
# ./build-dh
# ./build-ca
# ./build-key-server server
# ./build-key-server server
# ./build-key client

В процессе генерации ключей и сертификатов у вас будут запрошены подтверждения на запись в базу данных и создание паролей, пароли оставляем пустые, а с подтверждениями естественно соглашаемся. По завершении генерации ключей создайте символические ссылки на необходимые файлы с каталог /etc/openvpn (можно, конечно, указывать и полные ключи к файлам, но это не всегда удобно для дальнейшей работы):

# cd ..
# ln -s ./easy-rsa/keys/dh2048.pem ./dh2048.pem
# ln -s ./easy-rsa/keys/ca.crt ./ca.crt
# ln -s ./easy-rsa/keys/server.crt ./server.crt
# ln -s ./easy-rsa/keys/server.key ./server.key

Создайте конфигурационный файл серверной части вашего OpenVPN-сервера:

port 1194
proto tcp
dev tap-vpn
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
push "redirect-gateway def1"
server 10.112.0.0 255.255.0.0
keepalive 10 120
comp-lzo
persist-key
persist-tun
duplicate-cn
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn-append.log
verb 3

Конфигурация довольно типовая с разрешением подключений клиентов, с разрешенными подключениями клиентов, с идентичными ключами (для упрощения выдачи доступа всем своим друзьям) и передачей параметров смены основного шлюза. Основной шлюз для исходящего трафика будет подменен ip-адресом сервера Amazon.

Единственной интересной деталью этой конструкции, которую мы еще не рассматривали, в прошлых заметках является NAT-трафика из VPN сети на внешний интерфейс. Для реализации этого функционала добавьте в файл /etc/rc.local следующие параметры:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Проверьте работоспособность VPN-сервера командой:

# openvpn --config ./server.conf

Если сервер Open VPN стартовал без ошибок, то перезагрузите EC2-инстанс и создайте конфигурационный файл для клиентского подключения:

client
proto tcp
remote 35.164.94.39 1194
dev tap
resolv-retry infinite
redirect-gateway def1
nobind
persist-key
persist-tun
ns-cert-type server
comp-lzo
verb 3

<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
</key>

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

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий