Есть много причин использовать VPN: от классической задачи объединения нескольких удаленных сегментов локальной сети в одну виртуальную частную сеть или повышения собственной приватности в сети до получения доступа к заблокированным ресурсам.
В этой статье я не буду рассматривать вопрос зачем вообще нужен VPN, а просто расскажу как буквально за 10-15 минут поднять приватный VPN-сервер в Нидерландах с минимальными денежными затратами.
Содержание
Что нам понадобится
Для создания VPN-сервера нам потребуется:
- VPS в одном из европейских дата-центров. Из характеристик смотрим только на доступную ширину канала (желательно, чтобы она была не меньше скорости вашего домашнего интернета) и стоимость аренды в месяц. Количество ядер, объем оперативной памяти, емкость дискового хранилища и его производительность — все эти параметры VPS важны для веб-сервера, но совершенно не существенны для организации VPN-сервиса. Нам нужен только европейский IP-адрес, нормальная ширина интернет-канала и низкая стоимость аренды.
- Минимальные навыки работы в консоли по SSH. Думаю, что для читателей моего блога это не составит проблемы, но если что — отсылаю к своей старой статье про удаленный доступ по SSH на примере Raspberry Pi, самые азы изложены в ней.
Наш приватный VPN-сервер будет поддерживать соединения по протоколам IPSec, L2TP over IPSec и IKEv2.
Почему не публичный VPN-сервис?
У публичных VPN есть несколько недостатков:
- Роскомнадзор с переменным успехом ведет с ними борьбу. Например, популярный сервис Cloudflare WARP с некоторых пор перестал работать в России, а возможность использования Opera VPN в России и Беларуси год назад ограничили сами разработчики после получения предупреждений о блокировке сервиса со стороны сотрудников ведомства.
- Публичные VPN-сервисы собирают о вас информацию. Несмотря на то, что каждый VPN указывает приватность и конфиденциальность в качестве своих достоинств, было бы очень наивно предполагать, что они не ведут логи, не анализируют пользовательскую активность и не продают в дальнейшем эти данные третьим лицам.
- Публичные VPN-сервисы могут быть забанены на стороне отдельных сайтов. То же самое касается и exit-node сети Tor.
- Публичные VPN-сервисы могут резать скорость. А если речь идет о бесплатных тарифах, то скорость обязательно будет ограничиваться. Для веб-серфинга их использовать еще можно, но если, например, в будущем у нас заблокируют YouTube, то смотреть его через публичный VPN может оказаться уже проблематично.
Несмотря на все это, пользоваться публичными VPN вполне можно. Я и сам время от времени пользуюсь сервисом Windscribe. Но создание собственного приватного VPN обеспечит более высокий уровень удобства, позволит не зависеть от действий Роскомнадзора и даст дополнительные возможности в перспективе. Например, его можно использовать для удаленного доступа к Home Assistant или своему домашнему серверу.
Почему не OpenVPN / WireGuard / Outline VPN?
Почему я предлагаю делать VPN на базе протоколов IPSec и IKEv2, а не на OpenVPN и не на набирающих популярность WireGuard или Outline?
Потому что IPSec и IKEv2 поддерживаются всеми современными устройствами на уровне системы, обладают достаточно высокой производительностью, просты в настройке и не требуют установки никакого дополнительного ПО. В то время как OpenVPN, WireGuard и Outline требуют установки дополнительных приложений на клиентские устройства.
Меня всегда привлекали простые, минималистичные и самодостаточные решения, поэтому мне не по душе перспектива устанавливать отдельные приложения для подключения к своей же виртуальной частной сети. И я не вижу какие преимущества в сравнении с IKEv2 дало бы использование WireGuard или Outline VPN обычному домашнему пользователю.
Аренда VPS в Европе
На момент написания этой статьи я нашел 2 хостинга, предоставляющих VPS в Нидерландах по умеренной цене:
- Aeza с промо-тарифом AMS-PROMO (1 vCPU / 8GB RAM / 20GB NVMe) за 99 рублей в месяц
- VDSina с минимальным тарифом (1 vCPU / 1GB RAM / 30GB NVMe) за 198 рублей в месяц
Свой выбор я остановил именно на Aeza с их тарифом за 99 рублей. Они гарантируют скорость не менее 100 Мбит/с (предельно возможная — 1 Гбит/с, но гигабитный линк у них делится на несколько виртуальных машин, так что в реальности скорость будет ниже), один выделенный IP-адрес и отсутствие лимитов по трафику.
Итак, регистрируемся на сайте https://aeza.net и начинаем оформлять VPS.
Промо-тариф доступен в только при создании виртуального сервера в локации «Нидерланды»:
Выбираем имя сервера и операционную систему. Я выбрал Ubuntu 22.04 как наиболее знакомую.
После оплаты на хостинге начнет создаваться VPS, это займет несколько минут:
После завершения процесса установки в панели хостинга появится IP-адрес сервера и данные для доступа:
Установка VPN-сервера
После завершения процесса создания VPS подключаемся к серверу по SSH, используя доступы из админ-панели хостинга:
Сразу же обновляем все пакеты:
sudo apt update sudo apt dist-upgrade
Скачиваем скрипт для развертывания VPN-сервера:
wget https://git.io/vpnsetup -O vpnsetup.sh
Открываем скачанный файл для редактирования:
sudo nano vpnsetup.sh
И вписываем в строку YOUR_IPSEC_PSK пароль из 20 символов, а в строки YOUR_USERNAME и YOUR_PASSWORD свой логин и пароль для VPN-соединения соответственно:
И запускаем процесс установки:
sudo sh vpnsetup.sh
Ждем окончания процесса и обращаем внимание на пути к файлам конфигурации:
Эти файлы потребуются для настройки VPN-туннеля по протоколу IKEv2, который мы и будем рассматривать далее в статье. Если же IKEv2 вам по какой-то причине не подходит, то в качестве альтернативы вы можете поднять VPN-соединение по протоколу IPSec, воспользовавшись теми данными для доступа, которые прописали ранее в скрипте vpnsetup.sh.
На этом процесс установки завершен, но поскольку наш VPS доступен извне всему интернету, в целях безопасности добавим в файрвол ufw правила, ограничивающие доступ ко всем портам кроме тех, которые планируем использовать:
sudo ufw allow ssh sudo ufw allow OpenSSH sudo ufw allow 500,4500/udp sudo ufw allow 8181 sudo ufw enable
На этом установка VPN-сервера завершена. Я не преувеличивал, когда писал в заголовке статьи о том, что она займет 10 минут.
Настройка подключений
Теперь осталось настроить подключения к нашему VPN-серверу на своих устройствах.
Среди стандартных пакетов Python есть http-сервер, позволяющий получить доступ к любой нужной папке на устройстве в веб-интерфейсе. Воспользуемся им:
python3 -m http.server 8181
И обратимся в браузере к нашему VPS по IP-адресу на 8181 порт:
http://ip-адрес-vps:8181
При этом откроется листинг домашней директории пользователя root:
Для настройки подключения необходимо скачать файл vpnclient.p12 (для Windows или Linux), vpnclient.sswan (для устройств на Android) или vpnclient.mobileconfig (для iOS или macOS).
После скачивания не забудьте выключить веб-сервер, прервав выполнение команды в терминале комбинацией клавиш Ctrl + C.
В macOS
- Скачиваем и запускаем файл vpnclient.mobileconfig
- Переходим в «Системные настройки» → «Профили»
- Нажимаем «Установить…» возле отобразившегося в списке сертификата
- Переходим в «Системные настройки» → «Сеть», выбираем подключение c IP-адресом нашего VPS в левом меню и нажимаем «Подключить»
- Опционально можно поставить галочку «Подключать по запросу», тогда VPN будет активироваться автоматически при каждом подключении к интернету
В Windows
- Скачиваем и запускаем файл vpnclient.p12
- Скачиваем скрипт ikev2_config_import.cmd в ту же папку, в которой находится vpnclient.p12
- Запускаем скрипт ikev2_config_import.cmd от имени администратора
- В открывшемся диалоге оставляем имя VPN-клиента по умолчанию, указываем IP-адрес сервера, выбираем предпочитаемое имя VPN-подключения и нажимаем любую кнопку для выхода из диалога.
- Подключаемся к своему VPN-серверу на вкладке управления сетевыми подключениями
В iOS и iPadOS
- Скачиваем файл vpnclient.mobileconfig
- Отвечаем «Разрешить» на вопрос «Веб-сайт пытается загрузить профиль конфигурации. Разрешить?»
- Переходим в «Настройки», выбираем на новый пункт «Профиль загружен» и нажимаем «Установить»
- Переходим в «Настройки» → «VPN», выбираем подключение c IP-адресом нашего VPS и нажимаем на переключатель подключения
- Опционально можно поставить галочку «Подключать по запросу», тогда VPN будет активироваться автоматически при каждом подключении к интернету
После настройки соединения можно зайти на сервис проверки IP-адресов и убедиться, что трафик действительно идет через VPN, в качестве IP-адреса отображается адрес VPS, а в качестве локации — Нидерланды:
Заключение
Вот так всего за 99 рублей в месяц мы получаем собственный приватный VPN в Европе, который обеспечивает возможность веб-серфинга на высокой скорости без ограничений по трафику и над которым не висит перспектива блокировки Роскомнадзором.
Также у нас остается полный доступ к VPS, который можно использовать для каких-то других задач или экспериментов. Ведь даже слабая конфигурация виртуального сервера позволяет разместить на нем какие-то скрипты и иметь доступ к ним из интернета.
Спасибо за статью!
А можно ли как-то настроить IKEv2 VPN клиент на RouterOS чтобы можно было раздавать VPN всем устройствам в локальной сети с помощью роутера Mikrotik?
Точно можно, но вот конкретную последовательность действий не подскажу, т.к. не разбираюсь в настройке Микротиков.
Да, можно. Только я не всем устройства пускаю в впн канал, а использую адрес листы (antifilter).
Но иногда все таки пускаю тв или тв-приставки полностью в впн канал, хотя бы для того,чтобы HDvideo box работал без проблем ))
Вы пишете: «После завершения процесса создания VPS подключаемся к серверу по SSH, используя доступы из админ-панели хостинга», как найти эту панель? (Наверное глупый вопрос), просто начинающий пользователь:)
Так в этой админ-панели вы и создаете VPS. Сайт my.aeza.net, дальше кликнуть на название сервера либо на главной странице, либо на странице «Услуги» в левом меню.
Также доступы дублируются письмом на почту, указанную при регистрации.
Хорошо, спасибо.
Спасибо за инфо.
Я пользуюсь vds от zomro.com
Вполне себе не дорого тоже и стабильно работают
Подскажите пожалуйста, можно ли все тоже самое настроить если мне наоборот нужно из-зарубежья подключаться через российский впн с рабочего компа, чтобы безопасность компании не засекла что не в РФ?
Можно арендовать VPS с размещением в российском дата-центре (у Beget, например, есть тарифы от 7 рублей в день, их оборудование физически находится в Санкт-Петербурге).
Но если служба безопасности осуществляет проверки не «для галочки», то они могут заметить, что используемый IP-адрес хоть и относится к России, но принадлежит не провайдеру, а хостинговой компании. Так что в этом плане лучше настраивать VPN на базе своего домашнего роутера, предварительно докупив у провайдера опцию предоставления белого статического IP.
Спасибо! Сделал по вашей инструкции 1 в 1.
Только с двух ноутов когда параллельно подключаюсь, на другом в момент подключения отваливается и больше не подключается.
Может что-то нужно прописать, чтобы такого не было?
Делал на VPS бегета для российского ip.
Попробуйте создать отдельные доступы для разных устройств.
На VPS надо выполнить команду:
Далее через открывшееся меню добавить нового клиента и на втором ноутбуке настроить подключение с использованием уже этих доступов.
Привет. А как на Android настроить то в конце концов?
Добрый день!всё просто:
из корневой диреутории скачиваете файл vpnclient.sswan.
далее устанавливаете StrongSwan VPN client.
После установки нажимаете на «добавить VPN профиль» три точки, появится меню, там выбираете «импортировать профиль». Выбираете скачанный файл vpnclient.sswan.
Далее в открывшемся окне жмете
IMPORT CERTIFICATE FROM VPN PROFILE, и всякие там «далее»,»разрешить».
Появится окошко «Choose certificate» выбираете галкой сертификат и нажимаете IMPORT.
На этом все. должно присоединится
Не работает.. В импорт профайл пишет, что сертификат пользователя установлен, но в главном окне ничего не меняется — Статус: Нет активных VPN
Привет ,глупый вопрос но я нуб..а как скачать файлы то для андройд vpnclient.sswan и виндовс ))Я реально не понял куда вводить python3 -m http.server 8181))
Привет. Так в терминале вводить, как и все предыдущие команды. А после запуска http-сервера этой командой — обратиться к нему в браузере и скачать файлы.
Здравствуйте, сделал все по инструкции MacOS, но не понимаю как настроить трафик через впн(у меня айпи не меняется на нидерландский).
Могу предложить удалить установленные настройки соединения и создать их заново, но ситуация странная.
Если б это было L2TP-подключение, то в его настройках была бы необязательная опция «отправлять весь трафик через VPN», без которой IP бы не менялся. Но при использовании IKEv2 такой опции нет, т.е. случайно отключить ее невозможно.
А там ip при покупке нидерландского сервака за 99 рублей изначально распознаётся как рф..так что причина в этом видимо
Так не меняется после подключения или детектится как РФ? Это разные вещи. Просто в макоси действительно есть возможность подключаясь к VPN не пускать свой http-трафик через VPN — но, как я написал выше, у себя эту опцию я вижу только при установке L2TP-соединений, но не IPSec и не IKEv2.
Ну и IP этого VPS за 99 рублей у меня изначально определился нидерландским, продолжает определяться таким и сейчас. Актуальный скрин прикладываю:
Не знаю как подцепить скрин ,но по поводу ip российского ответа тех поддержки. Ip адреса выдаются в подсети для Нидерланд ,но введена в эксплуатацию недавно ,по этому не все сайты изменили информацию об ip
Все сделал один в один, но когда в трее выбираю vpn и нажимаю подключиться пишет «не удается подключиться, параметр задан неверно»
Читаем маны. Они здесь: https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/ikev2-howto.md#troubleshooting
По этой проблеме находим:
Reset Device Manager adaptors
Open Device Manager
Find Network Adapters
Uninstall WAN Miniport drivers (IKEv2, IP, IPv6, etc)
Click Action > Scan for hardware changes
The adapters you just uninstalled should come back
С ума сойти, все заработало с первого раза! Низкий поклон и благодарность, Дмитрий. Теперь надо курить матчасть чтобы понять, что я тут понажимал и накопипастил, а так же изучать этот огрызок убунты на впс, чтобы хоть понимать, что там открыто и как вообще это все хозяйство содержать.
Салют!
Дошёл до пароля из 20 символов и застрял. Где его взять? Сервис по аренде vps мне предоставил ip адрес, имя пользователя и пароль (но не из 20 символов, и я его уже поменял на свой). На рандомный пароль терминал отвечает: not found, а других у меня нет.
Так имя пользователя и оба пароля для vpnsetup.sh придумываются самостоятельно. Это не те реквизиты, которые используются для доступа к VPS.
Добрый день! А есть ли штатные инструменты MAC OS, позволяющие использовать собственный компьютер в другой стране в качестве VPN-сервера? Я сейчас за границей, дома остался постоянно включенный Imac. Единственная задача — смотреть отечественные онлайн-кинотеатры. И главное, стоит ли овчинка выделки? Т.е. будет ли такой способ проше для чайника, чем в приведенной Вами инструкции?
Добрый день. Теоретически это возможно, но будет не проще, а сложнее, т.к. штатного VPN-сервера в macOS, насколько я знаю, нет. Лучше посмотрите настройки домашнего роутера, в нем может быть функция VPN-сервера. Точно есть в роутерах Keenetic и по крайней мере в части роутеров Asus и TP-Link.
Но даже с запущенным на роутере VPN-сервером вам понадобится белый IP-адрес для подключения к нему извне. Чаще всего у провайдеров белый IP идет как отдельная опция за дополнительную плату, а по умолчанию предоставляется «серый» IP-адрес, доступный только внутри провайдерской локальной сети.
Спасибо за статью. Удалось создать подключение на рабочем компе. Сайты проверки ip показывают нидерландский адрес. Но наш родной ertelekom все равно блочит доступ к недружественным сайтам, например к фейсбук. Подскажите как отделаться от провайдера?
Вообще, при подключении к VPN провайдер видит только соединение с удаленным сервером. Все обращения к сайтам идут уже через этот сервер и провайдеру не видны, соответственно блокировать их он не может. Надо смотреть сетевые настройки на конкретном устройстве, но что именно — вряд ли удаленно смогу подсказать.
Для проверки можете установить соединение через этот же VPN на других устройствах и проверить доступ к заблокированным сайтам на них.
Настроил сервер на IKEv2, но не открывается instagram на компьютере, не могу понять, как настроить IPsec через windows и ios
Судя по данным из сервиса Downdetector, сегодня ночью были глобальные проблемы с доступностью Instagram. Это не связано с VPN и его настройками.
Да, так и подумал, так как через второй сервер Wireguard тоже были проблемы… Сейчас все работает штатно, вот только периодически перестает открываться весь интернет, приходится выключать и включать VPN снова, а иногда даже не удается подключиться какое-то время. У Вас были такие проблемы или это зависит от хостинга?
Сложно сказать, может зависеть и от хостинга, и от основного интернет-провайдера. Если в момент когда не удается включить VPN также не получается подключиться к серверу по SSH, но при этом интернет работает, то скорее всего проблема в хостинге.
У меня были проблемы когда на Аезу шла DDoS-атака, примерно месяц назад. Но это было один раз. В остальное время ничего такого не наблюдалось.
Хостинг FirstByte с сервером в Европе, провайдер Ростелеком, но надо понаблюдать за разрывами и глюками, что скажете про хостинг, я дешевле не нашел пока, у других дороже и намного, некоторые просят даже по 850 в мес с сервером на Ubuntu. Еще замечал, что Vpn по протоколу Wireguard гораздо медленнее работает, хотя сервер на том же хостинге и в одной и той же стране, да даже пул IP адресов в одной ячейке, хотя все нахваливают данный протокол, но я пока плюсов в нем не вижу, очень сильно скорость на нем падает…
Спасибо тебе большое, добрый человек. И ребятам в комментариях тоже.
Все сработало, хотя иногда, как неайтишнику, приходилось напрягать извилины. Это уже второй раз, когда приходится разбираться с настройкой vpn. Первый раз настраивал через Open VPN, попользовался несколько месяцев, и — та-дам! — перестало работать. Надеюсь, ваш способ более долговечный.