Создаём собственный vpn сервис

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER

Tartuga

Бывалый
ПРОВЕРЕННЫЙ ПРОДАВЕЦ
PREMIUM USER
Регистрация
7 Фев 2020
Сообщения
525
Реакции
98
Репутация
147
Рассмотрим быстрое создание VPN сервера для направления всего трафика и отдельно только для обхода заблокированных сайтов, не направляя весь трафик через VPN

Немного предыстории
Тема обхода блокировок до сих пор является актуальной повесткой дня. Но на написание этой статьи, сподвигла меня несколько другая тема. Сейчас на рынке доступен огромный выбор различных VPN с разной ценовой категорией, плюс часто встречающиеся акции на получение VPN.

Разрабатываются новые технологии для VPN, появляются новые механизмы обхода блокировок типа SmartDNS. Как раз такой услугой воспользовался недавно. Работает хорошо, удобно было добавить DNS в роутер, но адреса обхода очень ограничены. В моем случае поддержка пошла на встречу и вместе мы смогли добавить сервис Кинопоиск от Яндекса. Правда, почти сразу я понял, что хочется большего, хочется самому управлять трафиком. Плюс лично мне не интересны VPN, направляющие весь трафик. Они снижают скорость, не так удобны для просмотра местных сайтов. К тому же мне надо этот трафик пропустить через роутер (в первую очередь для полной работы Яндекс Станции). Сейчас нахожусь в Молдове, здесь сайты не блокируют, но некоторые российские сервисы недоступны.

Какой VPS сервер выбрать и как подключиться к серверу
Само создание OpenVPN сервера займет меньше 5 минут, но сначала мы рассмотрим аренду сервера и подключение к нему.

Аренда сервера VPS
В первую очередь нужно арендовать VPS сервер. VPS сервер – виртуальный выделенный сервер, который соответствует физическому серверу, т.е пользователь получает root-доступ к операционной системе, IP-адресам и т.д.

Тут зависит от ваших целей, стоимости сервера, и того какие именно услуги этот сервер может поддерживать (например, не все хостинг-провайдеры разрешают использование VPN-серверов, поэтому перед заказом услуги предварительно у тех. поддержки узнайте разрешают ли они использование VPN сервера). Если вы хотите получить доступ к российским сайтам, то вы, конечно, можете выбрать европейские сервера, но на мой взгляд, стоит выбрать российские сервера, для получения полного доступа к сервисам. В таком случае (повторюсь, для доступа к российским серверам) рекомендую обратить внимание на следующую статью, в которой были протестированы некоторые российские хостинг-провайдеры:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. Я же воспользовался услугами хостинг-провайдера

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

. С учетом того, что не все провайдеры разрешают использование VPS в качестве VPN сервера, перечислю тех, кто точно разрешает:

  • VDS.SH
  • firstvds.ru
  • pq.md
  • skyhost.ru
  • gcorelabs.com
  • hostiman.ru
  • vpshoster.ru
  • hosting.energy
Если у вас есть достоверная информация о том какие хостинг-провайдеры разрешают использование VPS в качестве VPN-сервера, то поделитесь информацией. Можем добавить в статью.

Для тех, кому нужен доступ к заблокированным в РФ сайтам, нужно брать сервер за пределами России. Это может быть DigitalOcean или linode – из недорогих хостингов.

Если вы собираетесь использовать сервер только в качестве VPN сервера, то вам не нужны дополнительные панели управления, типа ISPmanager. Не заказывайте их.

Подключение к серверу VPS
Выбрав сервер, на электронную почту вы получили необходимые данные для доступа к нему.

Подключаться к серверу будем с помощью ssh клиента

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

, а скачивать нужные файлы (клиентские ovpn файлы) с помощью ftp-клиента FileZilla.

Запускаем приложение PuTTY, в графе Host Name вводим ip адрес нашего сервера (эти данные мы получили сразу после регистрации сервера), порт 22.


Далее нажимаем на Open и в появившемся окне нажмите на ДА. Откроется новое окно, в котором нужно ввести имя пользователя и пароль, которые мы получили на электронный адрес. Процесс ввода пароля не будет отображаться, но введя его все равно нажмите на Enter. Теперь мы подключились к нашему серверу.


Для вставки скопированного текста в операционную систем сервера удобно пользоваться нажатием правой кнопкой мыши.

Подключение с помощью FileZilla. Открываем FileZilla: Файл > Менеджер сайтов > Новый сайт > Протокол указываем SFTP, Хост – IP адрес сервера, а также Имя пользователя и пароль, полученные по почте.


Как создать OpenVPN сервер за 5 минут
На самом деле на установку OpenVPN сервера уйдет меньше 5 минут. Установка сервера будет рассматриваться на VPS с операционной системой Ubuntu, для Debian команды идентичны, но скорее всего без sudo (как правило он не предустановлен).

Устанавливаем утилиты, которые нам пригодятся:

sudo apt install mc nano wget curl
Для операционных систем, версии которых не ниже Ubuntu 18.04, Debian 9, CentOS 7. Допускаются данные версии и выше. Скрипт автоматической установки OpenVPN:

wget

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

-O openvpn-install.sh && bash openvpn-install.sh
Во время установки будет задано несколько вопросов с уже готовым по умолчанию ответом. Можно соглашаться, можно отредактировать и выбрать свой вариант. Протокол соединения, рекомендую, использовать udp. В качестве DNS использую Яндекс DNS (77.88.8.8). Последним вопросом будет предложено задать имя клиентского файла ovpn, который затем будет расположен в директории Root.

Повторный запуск скрипта позволяет:

  1. Добавить клиентский файл ovpn для подключения
  2. Анулировать клиентский файл ovpn, выданный ранее.
  3. Удалить сервер OpenVPN
  4. Выйти

Для операционных систем, версии которых ниже ранее перечисленных. Выполнять нужно следующий скрипт:

wget

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

-O openvpn-install.sh && bash openvpn-install.sh
Этот скрипт подойдет для операционных систем не выше, но в том числе, Ubuntu 16.04, Debian 8, Centos 6.

Являясь обладателем роутера ASUS RT-AC59U, который поддерживает клиентские VPN, меня интересовало подключение через роутер. Опытным путем выяснил, что OpenVPN клиент роутера поддерживает подключение, созданное на сервере версии только Ubuntu 16.04.

После установки скрипта VPN уже готов и запущен. Можно с помощью FileZilla скачать файл ovpn и импортировать в нужное устройство.

По умолчанию через VPN будет проходить весь трафик.

Настройка OpenVPN для фильтрации только заблокированных сайтов
По умолчанию направляется весь трафик через VPN, а мы бы хотели пустить только определенные адреса для их разблокировки, а остальной трафик чтобы оставался без изменений.

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


Нас интересует файл server.conf , нажимаем на него и жмём F4 для редактирования, затем номер 1 для выбора редактора nano. Редактирование файла можно сразу запустить командой:

sudo nano /etc/openvpn/server/server.conf
Находим строчку push "redirect-gateway def1 bypass-dhcp" и закомментируем её, добавив перед ней значок #. Данную строчку можно и вовсе удалить. Именно она отвечает за то, чтобы весь трафик шел через VPN.

Добавим строчку duplicate-cn . Она позволит использовать один сертификат на нескольких устройствах.

Затем нам нужно добавить ip адреса, которые будут идти через VPN. Узнать IP адрес сайта можно с помощью Командной строки, командой:

nslookup название_сайта
В том случае если адреса заблокированы провайдером и не пингуются, то можно воспользоваться онлайн сервисами, например

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Адреса без букв, будут являться адресами IPv4, которые нам нужны. Добавлять адреса в конце файла server.conf нужно следующим образом:

push "route 5.255.252.0 5.255.255.255"
где 5.255.252.0 добавленный нами ip адрес.

Добавив адреса, нажимаем ctrl+O, затем ctrl+ X, для сохранения внесенных изменений и закрытия редактора.

Для пользователей, кому нужны адреса для доступа к российским сервисам, я взял открытую базу сервиса zaborona и немного добавил ip адресов. Предлагаю совместно наполнять эту базу.

База с адресами:

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.




Скриншот моего файла server.conf.

Итак, закомментировали или удалили строчку #push "redirect-gateway def1 bypass-dhcp" , добавили IP адреса для обхода блокировки, теперь осталось только перезапустить OpenVPN сервер.

После внесения изменений в server.conf нужно перезапустить VPN сервер. Для Ubuntu 18.04, Debian 9, Centos 7 и выше:

Для Ubuntu 16.04, Debian 8, Centos 6 и ниже:

sudo systemctl restart openvpn@server
Существует еще один

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

для автоматической установки OpenVPN сервера:

curl -O

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.


chmod +x openvpn-install.sh
Данный скрипт является форком предыдущего скрипта, но с улучшениями безопасности. Кроме того, этот скрипт позволяет добавить пароль для подключения клиентов.
 
Сверху