Содержание
После того, как началось массовое блокирование информационных ресурсов по географической принадлежности (например тот же Instagram и многие технические форумы), большую популярность получили различные VPN-сервисы.
VPN – “виртуальная частная сеть”, говоря простым языком, поверх (внутри) имеющейся глобальной сети Интернет строится ещё одна сеть, которая объединяет различные устройства, изолирует их от внешнего воздействия. Например можно соединить в одну сеть два своих офиса, расположенные в разных частях города или вообще в разных странах так, как если бы они были подключены прямым кабелем.
Проблема
Сейчас практически каждая “домохозяйка” использует VPN для доступа в “Инсту” даже не представляя, какие процессы при этом проходят “под капотом”. В AppStore и GooglePlay появились сотни приложений с “бесплатный ВПН”, напичканные рекламой, работающие через раз или вообще содержащие откровенно вредоносные закладки. Эти сервисы прикрывают один за другим, неизвестно, сколько просуществует тот или иной продукт.
Решение
Возникла естественная мысль – сделать свой VPN, тем более уже был опыт настройки OpenVPN. Осталось только привнести практический смысл в этот процесс.
План такой:
- Арендуем сервер где-нибудь в Нидерландах.
- Настраиваем OpenVPN-сервер и NAT.
- Выпускаем ключи доступа для каждого устройства, которое нужно подключить.
Реализация
Аренда сервера
Для этого я пошёл к хостеру ВДСина, поскольку там, как мне кажется, самые лояльные тарифы и посуточная оплата, так, что можно “свернуть” проект или развернуть что-нибудь тестовое, поработать несколько дней и потерять не слишком много ресурсов.
У меня есть у меня партнёрская ссылка, по которой вы можете получить бонус 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 минут.
Всё, подключение происходит практически мгновенно, никакой рекламы и минимальные задержки) Всем добра.
Comments: