Установка своего VPN на VPS хостинге с нуля
Приветствую! И сразу к делу. Для чего нужен VPN-сервер? В основном его используют для смены IP-адреса и своей страны чтобы обойти различные блокировки сайтов на работе и дома. Кроме этого, VPN-соединение помогает зашифровать трафик и, таким образом, обеспечивает безопасность передаваемых данных.
Например, используя общественный Wi-Fi, все данные которые передаются через сеть могут быть «угнаны». Теоретически, это могут быть любые файлы, но обычно крадут пароли от кошельков, почты, скайпа и чего угодно. В этой статье мы настроим собственный VPN-сервер, это не сложно. Несмотря на объёмность текста, основное действие занимает малую часть, а остальное — плюшки 🙂 В статье также есть видео.
В интернете есть куча и маленькая тележка VPN-сервисов, от бесплатных до очень платных. Недостатки бесплатных VPN-сервисов:
- ограничены в скорости
- нестабильность (то всё хорошо, то жутко тормозит)
- ограничения трафика (до нескольких Гигабайт в месяц)
- ограничения периода бесплатного пользования
- периодически нужно искать другие сервисы
- не факт, что передаваемые данные будут в безопасности, совсем не стоит надеяться на анонимность, я бы сказал.
Недостатки платных:
- не всегда есть нужная страна или город
- заезженные IP-адреса (используются сотнями клиентов), относится и к бесплатным
- бывает просто обман без возврата денег, например, трафик не безлимитный, некоторые сервера не работают или слишком медленные
Есть и преимущества VPN-сервисов – это простота использования, относительная дешевизна.
Собственный VPN-сервер на хостинге VPS/VDS
Итак, если нужна конкретная страна или город, или требуется много трафика, который не дают VPN-сервисы, гарантия безопасности — тогда есть смысл заморочиться настройкой личного VPN-сервера. Как правило, это требует глубоких знаний системного администрирования серверов. Но я постарался объяснить всё просто, чтобы разобрался даже чайник)
Недостатки у этого способа тоже есть:
- всего один IP-адрес, на который вы можете «пересесть», но есть дополнительные за отдельную плату
- нетривиальная настройка в первый раз
- платно
Дочитайте до конца, и я покажу как использовать свой VPS сервер для обхода блокировок без настройки на нём VPN.
Что такое VPS/VDS сервер?
Хостинг-провайдеров в интернете бесчисленное множество. Все они позволяют размещать у них свои веб-сайты. Самая популярная услуга – это виртуальный хостинг. Более продвинутая – это выделенный виртуальный сервер – VPS (VDS — это, считай, тоже самое). На VPS можно размещать сайты, поднимать VPN-сервер, почтовый сервер, игровой сервер – да что угодно!
Вам нужно знать, что VPS-сервера бывают нескольких видов: OpenVZ, Xen и KVM. Для работы VPN-сервера нужно KVM. Тип сервера указан в тарифах хостинга. OpenVZ и Xen тоже иногда подходят, но нужно писать в техподдержку хостинга и спрашивать, подключён ли модуль “TUN”. Не вдаваясь в подробности для чего это, просто спрашиваете. Если нет, то могут ли они включить его. Не помешает также спросить, будет ли работать VPN как таковой (даже на KVM), т.к. некоторые компании прикрывают эту возможность. Ах да, операционная система сервера – Debian, Ubuntu или CentOS (в общем, Linux-подобная). Мощность сервера не имеет значения.
Настройка VPN-сервера
Вы можете посмотреть видео или читать расширенную статью:
В моём распоряжении имеется VPS-сервер KVM хостинг-провайдера AdminVPS. Здесь сразу всё работает, никуда писать не надо.
- При заказе услуги можно выбрать самый простой тарифный план «Micro»
- Все сайты открываются даже на серверах в России
- Есть бесплатный тестовый период 7 дней
- Техподдержка помогает
- Для моих посетителей, при вводе промокода: — вы получите реальную скидку 60% на первый платёж.
Далее, первые скриншоты остались от старого хостинга, но всё так же.
«Hostname» вводим любой или имя своего сайта (если в будущем будете размещать на хостинге свой сайт). «OS Template» выбираем «Ubuntu 14.04 64bit» или любую из Ubuntu, Debian, CentOS:
Операционную систему потом можно поменять, если вдруг что не получится.
После оплаты на почту приходят данные для входа в панель управления и Root-пароль для настройки сервера. А также IP-адрес сервера, и именно он будет вашим IP-адресом, когда мы поднимем VPN и подключимся к нему с компьютера
Переходим по ссылке в письме и входим в панель управления. На вкладке «Virtual Servers» будет ваш сервер:
Нажимаем кнопку «Manage» и попадаем в окно администрирования:
Здесь нам ничего не нужно трогать. Единственное что может понадобится – это переустановка операционной системы – кнопка «Reinstall», об этом позже.
Теперь нам нужно подключиться к серверу чтобы посылать ему команды. Для этого будем использовать бесплатную программу Putty.
Распаковываем архив с программой и запускаем файл putty.org.ru\PuTTY PORTABLE\ PuTTY_portable.exe
В поле «Имя хоста» вставляем IP-адрес сервера, который пришёл в письме, также его можно скопировать с панели управления:
и нажимаем «Соединиться». Если выскочило вот такое окно, то жмём «Да»:
Перед нами должно появиться чёрное окно консоли (командная строка). Именно здесь мы и будем давать команды. Но сперва нужно залогиниться. Для этого в поле «login» вводим «root»
Затем копируем из письма root-пароль и вставляем его в поле «password». Чтобы вставить сюда из буфера обмена, нужно просто кликнуть один раз правой кнопкой мышки по окну консоли. При этом пароль не печатается на экране, такое чувство что ничего не произошло. Всё нормально, жмём «Enter». Должны проскочить строчки с информацией о системе. Если же написало какую-то ошибку, то проверьте всё ещё раз. Также, консоль не будет долго ждать, пока вы ищете root-пароль. Если к тому моменту выскочит ошибка, то запускайте Putty заново.
Установка и запуск главного скрипта
Мы уже на финишной прямой в настройке собственного VPN-сервера. Существует множество инструкций в интернете как установить сервер, но все они требуют знаний системного администратора, ибо мелкие нюансы упускаются из виду. На радость всем чайникам, существует универсальный скрипт «OpenVPN road warrior», который сделает всю работу сам. Нам нужно только дать команду скачать и запустить его.
Итак, копируем эту строчку и вставляем в консольное окно правой кнопкой и жмём «Enter»: wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
Проскочат всякие строчки и, если скрипт успешно скачался и запустился, с нами начнётся диалог мастера настройки VPN-сервера:
Скрипт находит предполагаемое значение для каждого параметра и предлагает с ним согласиться, т.е. нажать «Enter», либо ввести своё значение.
- Первый параметр – это «IP address». Скрипт должен предложить тот самый айпи VPS-сервера. Так должно быть в 99.9% случаев, но если это, почему-то, не так, то исправьте на правильный адрес.
- Второе — протокол UDP или TCP. Оставляем по умолчанию UDP.
- Идём дальше, «Port: 1194» — соглашаемся.
- «What DNS do you want to use with the VPN?» — выбираем «Google», т.е. вбиваем цифру «2» вместо единички, Enter. Если гугл заблокирован, то оставляем по умолчанию.
- «Client name» — имя пользователя. Можно создать доступ для разных пользователей. По умолчанию «client» — соглашаемся.
- «Press any key…» — нажать «Enter» и подождать несколько минут, пока всё установится и сконфигурируется.
В общем-то, создание VPN сервера на этом закончено, пора пожинать плоды. В процессе инсталляции скрипт создал файл с настройкой для нашего компьютера. Чтобы мы могли использовать сервер, этот файл нужно скачать. Для этого вставляем в командную строку: cat ~/client.ovpn
На экран будет выведено содержимое файла «client.ovpn». Теперь его надо аккуратно скопировать в буфер обмена. Листаем вверх до ввода команды, выделяем мышкой все строчки, кроме самой последней (для новых команд), т.е. последняя выделенная строчка будет “</tls-auth>”. Чтобы скопировать выделенное в буфер обмена жмём «Ctrl-V».
Теперь на компьютере в Windows 7/8/10 открываем блокнот и вставляем в него скопированный текст. Сохраняем файл на рабочем столе под именем «client.ovpn».
Если планируется давать доступ к серверу другим людям, то лучше создать для них отдельные файлы, например vasya.ovpn. Для этого просто запускаем скрипт ещё раз и выбираем теперь 1-й пункт — создание нового пользователя.
Установка клиента для Windows 7/8/10/XP и Android
Поздравляю, мы на финишной линии! Теперь только осталось установить бесплатную программу, которая будет подключаться к нашему VPN-серверу. Называется она «OpenVPN».
Скачиваем версию для Windows и устанавливаем её, запускать не надо.
Если в процессе установки будут выскакивать всякие окошки, со всем соглашаемся.
Чтобы подключиться к серверу кликаем на рабочем столе по файлу «client.ovpn» правой кнопкой и выбираем «Start OpenVPN on this config file»:
Появится чёрное окошко с процессом инициализации подключения. Если всё прошло успешно, то последняя строчка должна быть, типа:
Ещё может выпадет окно с вопросом типа новой сети, тогда выбираем «Общественная сеть».
Можно проверять, заходим на сайт 2ip.ru и смотрим свой IP, должен совпадать с IP VPS-сервера:
Также можно проверить какая скорость вашего интернет-подключения через VPN.
Окно консоли сервера теперь смело можно закрывать. А чтобы закрыть впн-соединение и вернуть старый айпи – нужно закрыть окошко от OpenVPN.
Чтобы подключиться в следующий раз, достаточно просто запустить правой кнопкой файл «client.ovpn» с рабочего стола, больше ничего делать не требуется.
С телефоном всё ещё проще, нужно установить через плеймаркет приложение OpenVPN, закачать в память файл client.ovpn, выбрать его в приложении и подключиться к нашему vpn-серверу.
Что если что-то пошло не так
Если чувствуете что из-за вашей ошибки теперь всё идёт наперекосяк, то можно переустановить операционную систему на хостинге. Для этого в панели управления кликаем «Reinstall» (см. скриншот панели) и выбираем новую операционную систему (или ту же):
Давим кнопку «Reinstall» и ждём 10 минут. Также будет выдан новый Root-пароль, не потеряйте его!
Ошибки при подключении
Большинство проблем возникает на этапе подключения к серверу в программе OpenVPN, особенно в Windows 8/10. В чёрном окошке могут быть ошибки, например:
- FlushIpNetTable failed on interface
- All TAP-Win32 adapters on this system are currently in use
- CreateFile failed on TAP device
- DNS failed..
При этом первое что надо сделать — это дать программе права администратора и, соответственно, заходить в систему с правами администратора. Идём в
, кликаем правой кнопкой по файлу openvpn.exe -> свойства. На вкладке «Совместимость» ставим галку «Выполнять эту программу от имени администратора». Теперь всё должно работать.Ещё варианты лечения:
- удалить программу и переустановить от имени админа
- выключить службу «Маршрутизация и удалённый доступ» (“Routing and Remote Access”) через
- попробовать переустановить из этого инсталлятора или отсюда
- удалить все ВПН’овские программы и приблуды от других платных и бесплатных сервисов
Понять, точно ли проблема в компьютере или ноутбуке, можно, если установить через плеймаркет приложение OpenVPN на телефон или планшет, закачать на него файл client.ovpn и подключиться к нашему vpn-серверу. Если и так не получится, то нужно искать причину на сервере, написать в службу поддержки.
Если всё заработало, на сайты тупят и открываются с перебоями
Обратите внимание на сообщения в чёрном окне, нет ли там повторяющихся строчек «read from TUN/TAP … (code=234)»
а также на сообщение где-то в середине «WARNING: ‘tun-mtu’ is used inconsistently, local…»:
В этом случае открываем файл client.ovpn в блокноте и в новой самой первой строке пишем:
tun-mtu ‘значение сервера’
— это число, указанное в конце строчки в тексте «remote=’tun-mtu 1500′». Подставляем своё значение! В итоге должно получится так:
Делается это потому, что по каким-то причинам значение MTU на компьютере и на VPS-сервере различаются. Файл .ovpn для смартфона оставляем нетронутым!
Пускаем трафик через прокси вообще без настроек
Можно использовать наш VPS/VDS сервер как Proxy Server. Для этого делаем всё как раньше до момента нажатия кнопки «Соединиться» в программе Putty. Не нужно открывать консоль и запускать скрипт. Идём на вкладку
, прописываем Source Port: 3128Упс, статью дописывал позже, тут у меня Putty на английском, но суть та же.
Если пишет ошибку «You need to specify a destination address in the form host.name:port», то переключите на «Dynamic» вместо «Local».
На вкладке «Connection» в поле «Seconds between keepalives…» ставим 100 секунд, это надо чтобы коннект не разрывался из-за простоя. Теперь подключаемся — нажимаем «Open», вводим логин/пароль. Далее, идём в настройки сети в браузере и прописываем там прокси-сервер. В хроме это
Делаем всё как на скриншоте:Теперь все сайты будут работать через наш сервер, но только в браузере и некоторых программах. Другие программы не увидят прокси, будут работать напрямую. Нужно в каждой программе в настройках подключения, если они предусмотрены, прописать адрес, порт и тип прокси: Socks4/5. Или устанавливайте OpenVPN и не используйте прокси.
Как пускать через прокси только отдельные сайты
Устанавливаем расширение для Google Chrome или Mozilla Firefox, называется FoxyProxy. В настройках надо добавить наш прокси-сервер:
На вкладке «URL Patterns» добавляем маски сайтов, которые должны открываться через наш сервер. Маска сайта это его имя со звёздочками по бокам.
Всё, теперь добавленный сайт будет ходить через proxy, а все остальные напрямую. Если кликнуть по значку расширения, то можно выбрать пускать все сайты через него или вообще никакие.
Ярлык для автоматическое подключения
Подключать Putty к прокси можно одним кликом. Для этого нужно перед подключением в разделе
прописать логин сервера, тот, что обычно rootи сохранить сессию со всеми настройками:
Теперь нужно создать ярлык на рабочем столе, в котором указать такие параметры:
где myvpn — это имя сохранённой сессии. Всё, осталась одна деталь — убрать окно Putty из панели задач в системный трей. Нужно скачать модификацию утилиты отсюда и заменить exe-файл. Теперь в настройках на вкладке Behaviour появится соответствующая галочка, но этого можно и не делать.
Успехов!
Alex
Все предельно ясно
олег
здравствуйте, хотел спросить есть ли возможность подключить к хосту несколько клиентов? я так понимаю для каждого нужен свой пакет сертификатов. как это реализовать?
Алексей Виноградов
Проделываете процедуру на сервере для каждого клиента. В поле «Client name» вводите разные имена (по умолчанию оставляли «client»). Каждому клиенту отправляете его собственный файл client.ovpn. Всё, теперь каждый пользователь будет иметь свои сертификаты, встроенные в его файл, даже пароли никакие вводить не нужно.
OLEG
благодарю! буду мучить свою железку
oleg
я прошу прощения за мое невежество, все сделал по инструкции, сервер пингуется но впн не подключается пробовал менять порты на сервере каждый раз делая новую конфигурацию клилиента, толку нет
oleg
и еще, смотря по трафику, запрос идет, ответа нет.
oleg
а еще есть такой прикол,когда инет получаешь уже с закрытого другим ВПН-ом канала, то все соединяется без проблем, то есть сервер работает и настроен правильно, клиент на машине тоже, но что то есть в канале что не позволяет соединиться. если вам не сложно просветите что делать?
олег
а я понимаю вам не до моих расспросов.. тут еще один момент есть, PuTTY напрямую не соединяется тоже, только через впн, я с сервером VPS занимался через впн, хотя напрямую он пингуется. может подскажете что нибудь
Алексей Виноградов
странно это, может IP в чёрном списке, надо к хостеру обратиться
олег
все, разобрался, провайдер не дает провести сертификацию, пожно ли как то подключиться без проверки сертификатов?
Алексей Виноградов
наверно нужно искать другие способы настройки VPN, без сертификатов
Сергей Ермолинский
Спасибо за статью. Соглашусь с нетривиальной настройкой с автором.
Артем
Можно ли как-то сделать много клиентов но чтобы у каждого был одинаковый файл *.ovpn?
Например как это сделано у vpngate.net…
Алексей Виноградов
описанным способом нельзя, но все они могут заходить под одним именем
Sanes
Можно ли как-то передать логин в скрипт аргументом?
Иван
SANDBOX
CPU 1 vCore
RAM 512MB
Storage 10GB
Traffic Unlimited
Подойдет для VPN? И чем лучше план HOSTING 1?
Алексей Виноградов
наверно подойдёт, я не пробовал
Вазген
Здравствуйте,у меня вопрос, есть ли разница для VPN,хостинг за 3$ или за 6$ на vstoike.ru ?и подойдут ли настройки для программы Shadowrocket на Iphone,там нужно указать HOST,PORT,PASSWORD,METHOD
Алексей Виноградов
вроде бы разницы нет, главное безлимитный трафик и скорость, мощность сервера не важна. Не знаком с той программой, но кажется она просит прокси-сервер, а это совсем другое.
Игорь
Здравствуйте, после запуска openvpn невозможно подключиться ни к одному сайту, пишет» Не удалось обнаружить DNS-адрес» пожалуйста помогите решить проблему.
Алексей Виноградов
попробуйте на 3-м шаге выбрать другой DNS
Олег
Отличная статья! установил на Digital Ocean и все работает! Искал много вариантов в сети и Ваш оказался самый путевый! особенно помогло в Win10 установка прав на файл exe в папке bin … Спасибо еще раз!!! Процветания блогу и отличного профита!
Алексей Виноградов
спасибо!
Андрей
Команду
wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
можно сократить до
wget git.io/vpn -qO — | bash
нет никакой необходимости сохранять скрипт установки, для исполнения достаточно перенаправить поток.
Андрей
был не прав, нельзя направлять скрипт в STDIN, т.к. он используется для интерактивного ввода 🙁
Алексей Виноградов
ну ок)
Сергей
Спасибо за ответ. Пинговать не пробовал. Стоит попытаться. Еще раз спасибо.
Сергей
Здравствуйте. Поздно нашел Вас. Наверно тема уже неактуальна и Вы мне не ответите. Но все попытаюсь. Ну во первых большое спасибо за Вашу статью. Все получилось с первого раза. Есть несколько компьютеров с Windows 7 и Windows 10, разбросанных в разных точках города. На всех все заработало. Но вот как их соединить в одну локальную сеть через интернет теперь, чтобы видели друг друга, словно они в одной локальной сети. Для этого как понял нужна виртуальная локальная сеть, то есть vpn. Но как бы она уже есть через мой vps сервер с установленным openvpn. И все мои компьютеры получают локальные адреса согласно настройки файла server.conf на сервере (10.8.0.0 255.255.255.0) Что надо еще сделать , что и где прописать. Подскажите пожалуйста.
С уважением Сергей.
Алексей Виноградов
Сергей, я не пробовал так делать, потому не буду мутить воду. Если компы пингуются между собой, то остальное думаю уже не проблема.
Денис
Отличная статья, все описано доходчиво.
kote
Webstix уже несколько дней лежит, никакой инфы от них. А впска ещё на пол года оплачена осталась…
Алексей Виноградов
да блин, это жесть, а хорошо шли, и цены подняли последнее время норм так. Наверное хакнули их и бизнес пошёл ко дну, ушли по-английски
Андрей
это вы про spaceflex? А что в нём хорошего? Минимальный тариф KVM 10$. Есть полно вариантов по вкуснее 🙂
Алексей Виноградов
spaceflex KVM я не тестировал, а почему мне понравился webstix написал в статье
Владимир
Добрый день.
У меня почему-то файл client при cсохранении сохраняется в txt формате,соответственно и не открывается OpenVpn
Алексей Виноградов
так вы его переименуйте
свет
не заработало нормально — половина сайтов тупила и не открывалась через openvpn.
помогло изменение MTU в конфиге сервера — tun-mtu 1200 — сразу всё залетало
Алексей Виноградов
спасибо, может кому-то поможет. У меня без этого всё нормально
Александр
Добрый день Алексей! У меня есть к вам конфиденциальный вопрос. Я хотел бы попросить вас помочь по вопросу VPN. Не могли бы вы ответить мне на почту. Заранее спасибо!
Sergey
Спасибо. Все работает!
Дмитрий
Первая ссылка уже не актуальна? на первом же шаге выдает ошибку
Алексей Виноградов
всё актуально
Эдвард
Здравствуйте, создав VPN на VPS хостинге, возможно далее уже наш OpenVPN привязать к wifi-роутеру, короче говоря с помощью этого метода получится настроить так называемый vpn-роутер, для смены ip и шифрования трафика на уровне роутера?
Алексей Виноградов
по идее можно, это зависит от возможностей настроек роутера
Zero
Добрый день
Ранее у Вас был другой конфиг (в январе-феврале 2019)
Там вместо Tc.key генерировался Ta.key
Можете дать старый конфиг?
Алексей Виноградов
Здравствуйте, статья осталась такая же, я ничего не менял. Скрипт по ссылке мог обновиться, посмотрите, может там есть другие версии скрипта.
Zero
Да, может неправильно написал, именно скрипт.
Других версий скрипта на гитхабе нет….
Прошлая версия скрипта ставилась на 14,04 Ubuntu использовался ta.key
В последней версии ставится на версию не ниже 18.04
Посмотрите, может у вас остались старые версии скриптов
Спасибо
Алексей Виноградов
вы можете зайти в историю и скачать исходник скрипта за любую дату https://github.com/Nyr/openvpn-install/commits/master/openvpn-install.sh
От декабря 2019 14.04 уже не поддерживается, а вот ещё раньше есть то, что вам нужно
Алексей Виноградов
вот последняя версия с поддержкой Ubuntu 14.04 https://github.com/Nyr/openvpn-install/blob/a6048d509fff11c28cbabc36633f76c1ac5ce988/openvpn-install.sh
Zero
Спасибо!!
Очень помогли
На роутерах mi-mini с пршивкой Padavan только Ваши ранние версии скриптов работают.
Алексей Виноградов
спасибо, успехов!
Илья
Хороший пост и отличная информация
Кирил
Фев 07, 2022
Скажите, если сам Хостинг заблокирован провайдером будет ли работать ВПН сервер, если я настрою его через другой ВПН.
И ещё, перед покупкой VPS, можно ли как-то узнать IP адрес который будет выдан. (Возможно он тоже заблокирован провайдером).
Алексей Виноградов
Фев 07, 2022
1. Будет работать
2. Написать в Техподдержку
Аноним
Фев 07, 2022
Спасибо за ответ. Буду пробовать.
Андрей
Мар 14, 2022
adminvps в чате написал, что на их VPS VPN запрещен! Хм странно…
Олег
Май 02, 2023
Алексей,
Большое спасибо за ваш труд.