Собственный VPN для доступа к закрытым ресурсам (на примере Instagram)

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

VPN – “виртуальная частная сеть”, говоря простым языком, поверх (внутри) имеющейся глобальной сети Интернет строится ещё одна сеть, которая объединяет различные устройства, изолирует их от внешнего воздействия. Например можно соединить в одну сеть два своих офиса, расположенные в разных частях города или вообще в разных странах так, как если бы они были подключены прямым кабелем.

Проблема

Сейчас практически каждая “домохозяйка” использует VPN для доступа в “Инсту” даже не представляя, какие процессы при этом проходят “под капотом”. В AppStore и GooglePlay появились сотни приложений с “бесплатный ВПН”, напичканные рекламой, работающие через раз или вообще содержащие откровенно вредоносные закладки. Эти сервисы прикрывают один за другим, неизвестно, сколько просуществует тот или иной продукт.

Решение

Возникла естественная мысль – сделать свой VPN, тем более уже был опыт настройки OpenVPN. Осталось только привнести практический смысл в этот процесс.

План такой:

  1. Арендуем сервер где-нибудь в Нидерландах.
  2. Настраиваем OpenVPN-сервер и NAT.
  3. Выпускаем ключи доступа для каждого устройства, которое нужно подключить.

Реализация

Аренда сервера

Для этого я пошёл к хостеру ВДСина, поскольку там, как мне кажется, самые лояльные тарифы и посуточная оплата, так, что можно “свернуть” проект или развернуть что-нибудь тестовое, поработать несколько дней и потерять не слишком много ресурсов.

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

Я выбираю “Стандартный сервер” на CentOS 7, с локацией в Амстердаме. Как видите, стоимость всего 6,6р в день (~200р в месяц), вполне себе доступная тема – один стаканчик кофе. При этом утилизация сервера – порядка 1-2%, так что можно ещё что-нибудь на нём развернуть.

После того, как сервер будет создан (около минуты), нужно подключиться к нему по VNC и настроить удобный SSH-доступ. Это мы уже тыщу раз делали, не буду на этом останавливаться.

Настройка OpenVPN и NAT

Работу по настройке OpenVPN я описывал ранее, единственное, что сейчас версии вышли поновее. Конфиг практически тот же.

Что ещё нужно?

В файл /etc/sysctl.conf дописать:

net.ipv4.ip_forward=1

Чтобы работала маршрутизация между интерфейсами.

И пропишем в автостарт скрипт с openvpn:

openvpn --config /etc/openvpn/server.conf --daemon
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

При условии, что наша OpenVPN сеть имеет такую адресацию.

Ну вроде бы всё.

Выпускаем ключи доступа

Тут всё как в прошлой статье, единственное, что для мобильных клиентов нужно поставить приложение OpenVPN и подготовить .ovpn-конфигурацию в виде одного файла, куда вставить содержимое ключей между соответствующими тегами:

#!/bin/bash
cd /etc/openvpn/easy-rsa/
./easyrsa build-client-full $1
cp pki/issued/$1.crt /home/********/
cp pki/private/$1.key /home/********/
cd /home/********/
cat $1.crt | sed -n '/^-----BEGIN/,/-----END/p' > $1.crtcl
cat stage1 > $1.ovpn
cat $1.crtcl >> $1.ovpn
echo '</cert>' >> $1.ovpn
echo '' >> $1.ovpn
echo '<key>' >> $1.ovpn
cat $1.key >> $1.ovpn
echo '</key>' >> $1.ovpn
cat stage2 >> $1.ovpn
chown ******** /home/********/$1.ovpn

Вот такой скриптик накидал, он конечно не очень лаконичный, зато работает)  Формирует .ovpn следующего содержания:

remote <IP сервера> 1194
proto udp
resolv-retry infinite
cipher AES-256-CBC
persist-key
persist-tun
client
dev tun
<ca>
-----BEGIN CERTIFICATE-----
здесь сертификат удостоверяющего центра, общее для всех
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
здесь содержимое индивидуального сертификата пользователя (/etc/openvpn/easy-rsa/pki/issued/ из этого каталога, файл *.crt)
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
здесь содержимое приватного ключа пользователя (/etc/openvpn/easy-rsa/pki/private/ из этого каталога, файл *.key)
-----END ENCRYPTED PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
здесь содержимое ключа DH, общее для всех
-----END OpenVPN Static key V1-----
</tls-auth>
key-direction 1

Когда конфигурация будет сформирована, её можно смело скормить приложению:

Вся настройка заняла буквально 10 минут.

Всё, подключение происходит практически мгновенно, никакой рекламы и минимальные задержки) Всем добра.

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply