Время на прочтение
4 мин
Количество просмотров 461K
Openvpn — виртуальная частная сеть. С ее помощью мы можем:
- Создать защищенный канал свзяи, в то время, когда мы сидим с бесплатного Wi-Fi в кафе.
- Обмениваться файлами между участниками сети.
- Раздавать интернет испульзуя общий шлюз.
Основные преимущества:
- Простота настройки.
- Безопасность.
- Не требует дополнительного оборудования.
- Высокая скорость и стабильность.
Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!
Скачиваем дистрибутив.
На момент написания статьи доступная версия 2.3.2. Качаем отсюда Windows installer 32-х или 64-х битную версию под разрядность вашей операционной системы.
Установка.
При установке обязательно отметьте все пункты птичками, на предложение установить драйвер отвечаем утвердительно. В системе появится новый виртуальный сетевой адаптер.
Создание сертификатов и ключей.
Когда-то этот пункт меня останавливал, мол ну их эти ключи, пойду поищу что попроще. Но, увы, ничего лучшего не нашел. Итак, переходим в C:\Program files\OpenVPN\easy-rsa, запускаем init-config.bat, появится vars.bat, открываем его в блокноте. Нас интересуют строчки в самом низу, их нужно заполнить как угодно. Например:
set KEY_COUNTRY=RU
set KEY_PROVINCE=Baldur
set KEY_CITY=Piter
set KEY_ORG=OpenVPN
set KEY_EMAIL=my@sobaka.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=ouou
Там где написано server не трогаем. Сохранили.
Теперь открываем openssl-1.0.0.cnf и ищем строчку default_days 365, ставим 3650. Это продлит жизнь наших сертификатов на 10 лет. Сохраняем. Далее открываем командную строку в пуск-стандартные-командная строка (на Windows Vista/7/8 от имени администратора), пишем последовательно:
cd C:\OpenVPN\easy-rsa
vars
clean-all
В ответ должно написать два раза «Скопировано файлов: 1». Значит, все окей. В этом же окне набираем:
build-dh
Создаст ключ Диффи-Хельмана.
build-ca
Создаст основной сертификат.
Будут заданы вопросы, просто нажимаем Enter пока не увидите путь C:\Program files\OpenVPN\easy-rsa. Далее набираем:
build-key-server server
На вопросы также жмем Enter, только не торопитесь! В конце будут два вопроса: «Sign the certificate?» и «1 out of 1 certificate requests certified, commit?», на оба вопроса отвечаем Y. Теперь создадим сертификат клиента:
build-key client
Тут нужно быть вниметельней, при вопросе Common Name (eg, your name or your server’s hostname) нужно ввести client. В конце также два раза Y. Для каждого клиента нужно создавать новый сертификат, только с другим именем, например, build-key client1 и также указывать его в common name. Если все сделали правильно, можете выдохнуть! Самое сложное позади. В папке C:\Program Files\OpenVPN\easy-rsa\keys забираем: ca.crt, dh1024.pem, server.crt, server.key и кладем их в C:\Program Files\OpenVPN\config.
Создаем конфиги.
Переходим в C:\Program Files\OpenVPN\config, создаем текстовой документ, вставляем:
# Поднимаем L3-туннель
dev tun
# Протокол
proto udp
# Порт который слушает впн
port 12345
# Ключи и сертификаты
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
# Грубо говоря экономим адреса
topology subnet
# Пул адресов
server 10.8.0.0 255.255.255.0
# Метод шифрования
cipher AES-128-CBC
# Сжатие
comp-lzo
# Немного улучшит пинг
mssfix
# Время жизни клиентов, если не откликнулся — отключает
keepalive 10 120
# Уровень отладки
verb 3
Сохраняем файл как server.ovpn. Это наш конфиг сервера. Теперь пробуем запустить сервер. На рабочем столе будет ярлык OpenVPN Gui. После запуска в трее появится красный значок. Кликаем по нему дважды, если загорелся зеленым, значит, все хорошо, если нет, тогда смотрим лог в папке log.
Теперь конфиг клиента:
client
dev tun
proto udp
# Адрес и порт сервера
remote адрес 12345
# Ключи должны лежать в папке с конфигом
ca ca.crt
cert client.crt
key client.key
cipher AES-128-CBC
nobind
comp-lzo
persist-key
persist-tun
verb 3
Сохраняем как client.ovpn. Создаем любую папку и кладем туда конфиг client.ovpn и сертификаты ca.crt, client.crt, client.key которые лежат в C:\Program files\OpenVPN\easy-rsa. Сам клиент для Windows качаем здесь. На клиентской машине устанавливаем, переносим папку с конфигом и сертификатом и запускаем client.ovpn. Если подключились, пробуем в командной строке набрать ping 10.8.0.1. Пакеты пошли? Поздравляю! Сервер готов! Теперь идем в панель управления-администрирование-службы, ищем там OpenVPN, дважды щелкаем и выставляем автоматически. Теперь сервер будет сам стартовать после перезагрузки.
Дорабатываем конфиг или каждому свое.
Теперь я расскажу как раздавать интернет и другие мелочи связанные с настройкой. Начнем с мелочей. Все манипуляции будем проводить с конфигом сервера.
Если хотите, чтобы клиенты «видели» друг друга т.е. могли обмениваться информацией, тогда в конфиг впишите
client-to-client.
Если нужно, чтобы клиентам выдавались статические адреса, тогда в папке config создайте файл ip.txt и впишите в конфиг
ifconfig-pool-persist ip.txt
Неохота создавать каждому сертификаты? Тогда пишем duplicate-cn, но учтите, с этой опцией не работает ifconfig-pool-persist.
Теперь о конфиге клиента. Можно не передавать файлы сертификатов, а вписать сразу в конфиг, только делать это лучше не с блокнота, а с AkelPad’а или Notepad++ например. Открываем ca.crt и выделяем от ——BEGIN CERTIFICATE—— до ——END CERTIFICATE——. В конфиге будет выглядеть так:
-----BEGIN CERTIFICATE-----
сертификат
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
сертификат
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
ключ
-----END PRIVATE KEY-----
Раздаем интернет
Для этого в конфиг сервера вписываем:
push «redirect-gateway def1»
push «dhcp-option DNS 8.8.8.8»
push «dhcp-option DNS 8.8.4.4»
DNS-адреса подставляем те, что даны в настройках. Посмотреть можно зайдя в панель управления-сетевые подключения, дважды кликнув на адаптере который смотрит в интернет. Для Win7 Панель управления-Сеть и Интернет-Центр управления сетями и общим доступом-изменение параметров адаптера. Далее, заходим в свойства этого же адаптера, вкладка доступ, ставим птичку напротив «Разрешить другим пользователям сети…» и в выпадающем списке, если есть, выбираем виртуальный адаптер vpn. Затем заходим в свойства адаптера vpn, свойства ipv4 и выставляем получение ip и dns автоматически. Спасибо за внимание!
В Windows 8.1, 8 и 7 имеется возможность создания VPN сервера, хотя она и неочевидна. Для чего это может понадобиться? Например, для игр по «локальной сети», RDP подключения к удаленным компьютерам, домашнему хранилищу данных, медиа серверу или же для безопасного использования Интернета с общедоступных точек доступа.
Подключение к VPN серверу Windows осуществляется по протоколу PPTP. Стоит отметить, что сделать то же самое с помощью Hamachi или TeamViewer проще, удобнее и безопаснее.
Создание VPN сервера
Откройте список подключений Windows. Самый быстрый способ сделать это — нажать клавиши Win + R в любой версии Windows и ввести ncpa.cpl, затем нажать Enter.
В списке подключений нажмите клавишу Alt и в появившемся меню выберите пункт «Новое входящее подключение».
На следующем этапе нужно выбрать пользователя, которому будет разрешено удаленное подключение. Для большей безопасности лучше создать нового пользователя с ограниченными правами и предоставить доступ к VPN только ему. Кроме этого, не забудьте установить хороший, годный пароль для этого пользователя.
Нажмите «Далее» и отметьте пункт «Через Интернет».
В следующем диалоговом окне нужно отметить, по каким протоколам будет возможно подключение: если вам не требуется доступ к общим файлам и папкам, а также принтерам при VPN подключении, можно снять отметку с этих пунктов. Нажмите кнопку «Разрешить доступ» и дождитесь завершения создания VPN сервера Windows.
Если потребуется отключить возможность VPN подключения к компьютеру, кликните правой кнопкой мыши по «Входящие подключения» в списке подключений и выберите пункт «Удалить».
Как подключиться к VPN серверу на компьютере
Для подключения вам потребуется знать IP адрес компьютера в Интернете и создать VPN подключение, в котором VPN сервер — этот адрес, имя пользователя и пароль — соответствуют пользователю, которому разрешено подключение. Если вы взялись за эту инструкцию, то с данным пунктом, скорее всего, проблем у вас не возникнет, и вы умеете создавать такие подключения. Однако ниже — кое-какая информация, которая может оказаться полезной:
- Если компьютер, на котором был создан VPN-сервер, подключен к Интернету через роутер, то в роутере необходимо создать перенаправление подключений порта 1723 на IP адрес компьютера в локальной сети (а этот адрес сделать статическим).
- С учетом того, что большинство Интернет-провайдеров предоставляют динамический IP на стандартных тарифах, каждый раз узнавать IP своего компьютера может быть затруднительным, особенно удаленно. Решить это можно с помощью таких сервисов как DynDNS, No-IP Free и Free DNS. Как-нибудь напишу о них подробно, но пока не успел. Уверен, в сети хватает материала, который позволит разобраться, что к чему. Общий смысл: подключение к вашему компьютеру всегда можно будет осуществлять по уникальному домену третьего уровня, несмотря на динамический IP. Это бесплатно.
Более подробно не расписываю, потому как статья все-таки не для самых начинающих пользователей. А тем, кому это действительно нужно, вполне будет достаточно вышеизложенной информации.
В последнее время аббревиатура VPN стала звучать на просторах интернета чаще и громче. Все потому, что эта фича позволяет обходить различные блокировки со стороны провайдера или других регуляторов, а также анонимно посещать ресурсы. Но не все так просто — используя услуги любого оператора VPN, пользователь доверяет все личные данные, приходящие в компьютер и уходящие из него, этому сервису. Это может быть крайне небезопасно — мы знаем, что с этим делать.
VPN (Virtual Private Network) — переводится как виртуальная частная сеть и выполняет функции частной сети в прямом смысле слова. Несмотря на популярность VPN как сервиса для обхода блокировок, первоначальная задача — построение корпоративных сетей. Например, для подключения работников предприятия к локальным сервисам и оборудованию извне (из дома, в отпуске на островах или на даче) — программному обеспечению, внутренним ресурсам, принтерам, сканерам, корпоративной связи, планировщикам и другой рабочей «прослойке».
То есть, это своего рода песочница, в которой можно создать целую сеть или даже Интранет — внутренний интернет какой-либо компании. Например, сеть одного из университетов, подключившись к которой можно получить доступ к уникальным ресурсам — библиотеке, хранилищу научных работ, исследований, а также различным модулям, сервисам, программам и всему, что только можно пожелать счастливому студенту.
Как это работает
Дело в том, что VPN позволяет подключаться ко всему этому также легко, будто мы находимся прямо у роутера в офисе и соединяемся с ним по проводу. Для этого необходима лишь поддержка технологии со стороны устройства — им может оказаться не только компьютер, но также смартфон и даже роутер. Например, работник корпорации, находясь в отпуске в Сочи, может подключиться к принтеру в новосибирском офисе и распечатать конфиденциальный документ напрямую, без перемещения файла по хранилищам, облакам и почтовым сервисам.
Отсюда, кстати, и вторая всем известная и полезная штука — обход провайдерских блокировок. Раз VPN позволяет подключаться из любой точки планеты и с помощью любого соединения, значит сеть можно организовать где угодно. Например, в Германии. Так как законодательство этой страны не запрещает посещение сайтов, внесенных в реестр другого государства, пользователь может подключиться к VPN и использовать ее в качестве «разблокировщика».
Что для этого нужно
Если абстрагироваться от корпоративных задач VPN и сосредоточиться только на возможности обхода блокировок, то организовать сеть можно двумя способами. Первый — настроить готовый сервис, который предоставляют сотни компаний. Например, Proton VPN — достаточно зарегистрироваться на сайте, установить программу на устройство, авторизоваться и нажать кнопку «Подключиться». Все легко и просто. Но у этой «простоты» есть существенный недостаток — безопасность.
Так как весь трафик, посылаемый из нашего устройства, фильтруется неизвестными людьми, предоставляющими услуги частной сети, существует огромный шанс стать жертвой утечки конфиденциальных данных. Например, нечестные сервисы воруют пароли, данные банковских карт и вообще все, что передается через их серверы. В таком случае остается смириться с ситуацией или прибегнуть к способу № 2 — организации собственной VPN-сети.
В чем польза?
Настройка VPN на собственном сервере открывает полный контроль над происходящим в сети. Это как минимум базовая теория безопасности — юзер вправе «поднимать» любой софт, который шифрует, закрывает и зеркалит трафик в нужном формате. В нынешних реалиях это самый действенный способ защититься от блокировок со стороны провайдера, а также избежать утечки данных. К тому же, с собственным VPN можно спокойно подключаться к открытым точкам доступа в отелях, кафе и везде, где сеть может прослушиваться.
К тому же в этом случае немаловажен вопрос выгоды — как правило, аренда VDS (виртуального сервера в сети) обойдется дешевле, чем приобретение месячной подписки на сторонний VPN. При этом «чужой» сервис не гарантирует стабильную работу в часы пиковой нагрузки и почти всегда ограничивает максимальную скорость подключения.
С частным сервером все намного лучше — трафик не ограничен, скорость достигает сотен мегабит, а пиковой нагрузки нет, так как к нему подключается только владелец сети. Выгодно, как ни крути — давайте посмотрим, как это делается.
Поиск провайдера
Перед созданием VPN необходимо определиться с платформой, которая предоставляет услуги аренды виртуальных серверов. Выбрать сервис можно по двум показателям — количеству положительных отзывов в сети или размеру комьюнити. Второе, конечно, важнее — чем больше юзеров «крутится» на этой платформе, тем проще будет получить обратную связь и помощь в настройке сервера.
В качестве примера для данного материала был выбран VDSina. Это отечественный сервис, который, в отличие от зарубежных, принимает к оплате «наши» карты. Тем более у сервиса есть серверы в Нидерландах — излюбленное место заядлых «впнщиков».
Регистрируемся, конфигурируем сервер, выбираем нужную страну (для обхода блокировок подходят только зарубежные) и нажимаем «Создать».
При условии наличия необходимой суммы для старта тарифа система создаст сервер и автоматически настроит его на использование. После активации VDS на указанную при регистрации почту придут данные для подключения к серверу — это выделенный IP, логин и пароль.
Все, сервер готов к настройке. Едем дальше.
Не хочу много печатать, хочу все и сразу
В интернете существует множество нудных и запутанных инструкций, которые актуальны только с конкретной версией операционной системы и программного обеспечения. Если пользователь установит другую ОС или будет использовать отличный от описанного в инструкции сервис аренды серверов, то вся польза от пошагового руководства сводится к нулю. Короче — универсальных инструкций не бывает, зато есть нюансы и подводные камни.
Поэтому не стоит изобретать велосипед и мучать зеницы красноглазием — воспользуемся утилитой Outline, которая автоматизирует процесс настройки VPN. От юзера потребуется лишь визуальный контроль и своевременный ввод паролей, логинов, цифр и букв. Кстати, ее созданием занимается команда jigsaw, которая входит в состав Google. В общем, это безопасно и быстро — то, что нужно неопытному пользователю, который вряд ли тесно знаком с командной строкой компьютера.
Загружаем на компьютер первую часть утилиты, которая занимается настройкой сервера. Это Менеджер Outline:
И запускаем:
Программа умеет автоматически разворачиваться на серверах DigitalOcean, Google Cloud и Amazon Lightsail, однако все эти сервисы не поддерживают оплату российскими банковскими картами, поэтому нам придется немного поработать ручками. Для этого выбираем четвертый пункт, проваливаемся в ручные настройки и получаем мини-инструкцию:
Итак, для настройки VPN потребуется установить ПО Outline со стороны сервера. Для этого необходимо вставить предложенную команду в командную строку VDS, затем скопировать полученную команду и вставить в нижнее окно. На данном этапе нам придется отложить настройку утилиты и перейти к использованию терминала.
Настройка сервера
Для настройки виртуального компьютера можно использовать «дедовские» методы — подключаться удаленно с помощью утилит типа PuTTY или через командную строку. Однако это не про рядовых юзеров — нам подавай все просто и понятно. Поэтому будем использовать встроенный функционал в панели управления сервером. Переходим во вкладку «Управление» и выбираем «Подключиться по VNC»:
В новой вкладке браузера откроется окно с черным фоном и просьбой авторизоваться. Вводим полученные в письме данные и входим в систему. Для удобства ввода можно использовать кнопку «Отправить в консоль» в верхнем правом углу.
Готово. Теперь можно вставить ту самую команду, которую предоставила нам утилита Outline. Но, перед установкой утилиты на сервер, необходимо обновить репозитории системы и загрузить недостающие пакеты. Для этого выполняем в консоли несколько команд:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Затем:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add —
Потом:
sudo apt update
sudo add-apt-repository «deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable»
И:
sudo apt update
sudo apt install docker-ce
После успешного завершения работы команд можно вставить текст из Outline в командную строку и нажать Enter:
Консольный вывод зеленого цвета и есть та самая «фраза», необходимая для продолжения настройки Outline.
P.S. Скорее всего понадобится открыть порты для доступа Outline к серверу. Для этого производим еще несколько манипуляций в командной строке. А именно — устанавливаем iptables и конфигурируем, вводя поочередно следующие команды:
sudo apt install iptables
iptables -L -v -n
sudo iptables -F
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
sudo iptables -A INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
Не забываем после каждой команды нажать Enter. После проделанной работы возвращаемся к утилите.
Не хочу много печатать, хочу все и сразу — продолжение
Наконец-то мы вернулись в родной графический интерфейс, где все просто и понятно. Вводим ту самую зеленую команду во второе окошко:
И попадаем в панель управления:
Все, теперь можно расслабиться и предвкусить скорое подключение по собственному каналу VPN. Дело осталось за малым — создать ключи доступа для устройств-клиентов. Для этого необходимо нажать кнопку «Добавить новый ключ» и передать приглашение пользователю, которого необходимо подключить к сети. Мы отправим ссылку на подключение себе на мобильное устройство.
Переходим по ссылке через мобильный браузер, который предложит установить необходимую утилиту.
Система переадресует в магазин приложений.
Устанавливаем, соглашаемся с предложениями и наблюдаем готовый VPN.
Тестируем работу
Ради интереса сравним скорость подключения — все-таки сервер обещает стабильное подключение до 1 Гбит/с. Правда придется сделать поправку на расстояние до сервера в километрах — от юга России до Амстердама рукой подать не получится.
Первое изображение — до подключения к серверу, второе — после. Вуаля, быстрый и стабильный интернет без границ подан! А еще безопасный, насколько это возможно в рамках VDS-арендодателя, утилиты Outline и базовых защитных алгоритмов Linux.
OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.
В этой статье, мы покажем, как установить OpenVPN сервер на компьютер с Windows 10, настроить OpenVPN клиент на другом Windows хосте и установить защищенное VPN подключение.
Содержание:
- Установка службы OpenVPN сервера в Windows
- Создаем ключи шифрования и сертификаты для OpenVPN
- Конфигурационный файл OpenVPN сервера в Windows
- Настройка OpenVPN клиента в Windows
Установка службы OpenVPN сервера в Windows
Скачайте MSI установщик OpenVPN для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.5-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.5-I602-amd64.msi).
Запустите установку.
Если вы планируете, OpenVPN сервер работал в автоматическом режиме, можно не устанавливать OpenVPN GUI. Обязательно установите OpenVPN Services.
Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.
Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.
Запустите установку.
По умолчанию OpenVPN устаналивается в каталог C:\Program Files\OpenVPN.
После окончания установки появится новый сетевой адаптер типа Wintun Userspace Tunnel. Этот адаптер отключен, если служба OpenVPN не запущена.
Создаем ключи шифрования и сертификаты для OpenVPN
OpenVPN основан на шифровании OpenSSL. Это означает, что для обмена трафиком между клиентом и серверов VPN нужно сгенерировать ключи и сертификаты с использованием RSA3.
Откройте командную строку и перейдите в каталог easy-rsa:
cd C:\Program Files\OpenVPN\easy-rsa
Создайте копию файла:
copy vars.example vars
Откройте файл vars с помощью любого текстового редактора. Проверьте пути к рабочим директориям.
Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"
Можете заполнить поля для сертификатов (опционально)
set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Company" set_var EASYRSA_REQ_EMAIL " [email protected] " set_var EASYRSA_REQ_OU " IT department "
Срок действия сертификатов задается с помощью:
#set_var EASYRSA_CA_EXPIRE 3650 #set_var EASYRSA_CERT_EXPIRE 825
Сохраните файл и выполните команду:
EasyRSA-Start.bat
Следующие команды выполняются в среде EasyRSA Shell:
Инициализация PKI:
./easyrsa init-pki
Должна появится надпись:
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
Теперь нужно сгенерировать корневой CA:
./easyrsa build-ca
Задайте дважды пароль для CA:
CA creation complete and you may now import and sign cert requests.
Данная команда сформировала:
- Корневой сертификат центра сертификации: «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»
- Ключ центра сертификации «C:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key»
Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:
./easyrsa gen-req server nopass
Утилита сгенерирует два файла:
req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key
Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:
./easyrsa sign-req server server
Подтвердите правильность данных, набрав yes.
Затем введите пароль CA от корневого CA.
В каталоге issued появится сертификат сервера («C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt»)
Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh
Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам SSL/TLS, инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN сервером. Это защитит вас от сканирования порта VPN сервера, DoS атак, переполнения буфера SSL/TLS.
Сгенерируйте ключ tls-auth:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key
Должен появиться файл «C:\Program Files\OpenVPN\bin\ta.key». Переместите его в каталог C:\Program Files\OpenVPN\easy-rsa\pki
Теперь можно сформировать ключи для клиентов OpenVPN. Для каждого клиента, который будет подключаться к вашему серверу нужно создать собственные ключи.
Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы создадим на сервере ключ клиента и защитим его паролем:
./easyrsa gen-req kbuldogov
./easyrsa sign-req client kbuldogov
Данный ключ («C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key») нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov_use.key"
Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:
./easyrsa gen-req имяклиента nopass
На сервере с OpenVPN вы можете создать неограниченное количество ключей и сертификатов для пользователей. Аналогичным образом сформируйте ключи и сертфикаты для других клиентов.
Вы можете отохвать скомпрометированные сертификаты клиентов:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke kbuldogov
Итак, мы сгенерировали набор ключей и сертификатов для OpenVPN сервера. Теперь можно настроить и запустить службу OpenVPN.
Конфигурационный файл OpenVPN сервера в Windows
Скопируйте типовой конфигурационный файл OpenVPN сервера:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Я использую следующий конфиг для OpenVPN:
# Указываем порт, протокол и устройство port 1194 proto udp dev tun # Указываем пути к сертификатам сервера ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt" cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt" key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" # Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты server 10.24.1.0 255.255.255.0 #если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется) #duplicate-cn # TLS защита tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0 cipher AES-256-GCM # Другая параметры keepalive 20 60 persist-key persist-tun status "C:\\Program Files\\OpenVPN\\log\\status.log" log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" verb 3 mute 20 windows-driver wintun
Сохраните файл.
OpenVPN позволяет использовать как TCP, так и UDP для подключения. В этом примере я запустил OpenVPN на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.
Не забудьте открыть на файерволе порты для указанного вами порта OpenVPN на клиенте и на сервере. Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow
Правило для клиента:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow
Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:
Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service
Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Wintun теперь активен. Если нет, смотрите лог «C:\Program Files\OpenVPN\log\server.log»
Если при запуске OpenVPN вы видите в логе ошибку:
Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with..
Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.
Данный конфиг позволит удаленным клиентам получить доступ только к серверу, но другие компьютеры и сервисы в локальной сети сервера для них недоступны. Чтобы разрешить клиентам OpenVPN получить доступ к внутренней сети нужно:
Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f
Добавьте в конфгурационный файл сервера OpenVPN маршруты до внутренней IP сети:
push "route 10.24.1.0 255.255.255.0" push "route 192.168.100.0 255.255.255.0"
Если нужно, назначьте клиенту адреса DNS серверов:
push "dhcp-option DNS 192.168.100.11" push "dhcp-option DNS 192.168.100.12"
Если нужно завернуть все запросы клиента (в том числе Интернет трафик) на ваш OpenVPN сервер, добавьте опцию:
push "redirect-gateway def1"
Настройка OpenVPN клиента в Windows
Создайте на сервере шаблонный конфигурационный файла для клиента VPN (на базе iшаблона client.ovpn) со следующими параметрами (имя файла kbuldovov.ovpn)
client dev tun proto udp remote your_vpn_server_address 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert kbuldogov.crt key kbuldogov.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-GCM connect-retry-max 25 verb 3
В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.
Скачайте и установите клиент OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).
Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:
- ca.crt
- kbuldogov.crt
- kbuldogov.key
- dh.pem
- ta.key
- kbuldogov.ovpn
Теперь импортируйте файл с профилем *.ovpn и попробуйте подключиться к вашему VPN серверу.
Если все настроено правильно, появится такая картинка.
Проверьте теперь лог OpenVPN на клиенте «C:\Program Files\OpenVPN Connect\agent.log»
Mon Dec 27 08:09:30 2021 proxy_auto_config_url Mon Dec 27 08:09:31 2021 TUN SETUP TAP ADAPTERS: guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection' Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED TAP-Windows Driver Version 9.24 ActionDeleteAllRoutesOnInterface iface_index=22 netsh interface ip set interface 22 metric=1 Ok. netsh interface ip set address 22 static 10.24.1.6 255.255.255.252 gateway=10.24.1.5 store=active IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1
Клиент успешно подключится к OpenVPN серверу и получил IP адрес 10.24.1.6.
Проверьте теперь лог на сервере («C:\Program Files\OpenVPN\log\openvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.
2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled) 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6
Пошаговая инструкция-тред от программиста и автора блога о финансах selfDemanDeD.
- Для пользователей Windows
- Для пользователей iOS
- Для пользователей macOS
На тему VPN-а. Лучше всего обзавестись собственным (персональным) сервером. Потому что сервисы тоже будут блочить (некоторые уже заблокированы), а персональный проживёт дольше.
Это сильно проще, чем кажется, я постараюсь объяснить на пальцах.
Будет тред. Лайк, репост.
Для пользователей Windows
Для начала вам понадобится VPS (виртуальный приватный сервер), на котором будет жить ваш VPN.
Вбиваем «VPS hosting» в гугле, видим большой выбор. Естественно, нужно выбирать зарубежный, иначе толку будет ноль.
Брать можно самый дешевый тариф с 1 CPU/5+ GB диск/500+ GB трафика.
Я пользуюсь https://www.time4vps.com/?affid=6409 (да, ссылка реферальная, дело ваше, использовать её или вбить адрес так). Выбирал по рекомендации человека, которому доверяю.
За первый год просят 25 евро, потом 50. Дают 1 CPU, 20 GB диска, 4 TB трафика (хватит за глаза), канал 100 mbit.
Само собой, вы можете выбрать любой другой VPS-хостинг, если вам какой-то приглянулся больше.
Важно: ваш виртуальный сервер – оплот вашей безопасности в сети. Назначайте сложный пароль к аккаунту и храните его в надёжном месте.
Покупайте лучше сразу на год, а то мало ли что.
Итак, у вас есть VPS, а дальше что? Буду показывать на примере моего.
Сначала вам нужно установить ОСь. Делается элементарно.
Идёте в Services->Linux VPS->Reinstall OS, выбираете Ubuntu 20.04, тыкаете Yes под Are you sure, а потом Install.
Установка занимает несколько минут, после чего на том же экране появляется информация с вашим IP и паролем. Они вам потребуются, но не волнуйтесь, вы всегда их сможете посмотреть на этой странице.
Дальнейшие шаги делаем из под винды. Качаем WinSCP: https://winscp.net/eng/download.php
Устанавливаем прогу (можно стандартную установку), запускаем.
Для начала нужно настроить подключение к своему VPS.
Для этого выбираем New Site, вводим IP и логин root (это админский аккаунт). Сохраните на будущее.
ПАРОЛЬ НЕ СОХРАНЯЙТЕ, ЭТО НЕБЕЗОПАСНО!
Сохранив сессию, жмём Login.
Вот тут у вас запросят пароль, скопируйте его со странички из панели управления.
P.S. Для удобного и достаточно безопасного хранения паролей используйте, например, KeePass (прога) или LastPass (сервис).
Ах да, при первом запуске выберите режим интерфейса Commander (который с двумя панелями), так будет удобнее.
После аутентификации увидите вот такое окно (у вас файлов справа пока не будет, они появятся после установки VPN).
Выберите Open Terminal.
Вас спросят: хотите открыть отдельную shell-сессию? Да, хотите.
Винда. Нажимаем кнопки Windows + R. Открывается окошечко «Выполнить», вбиваем туда cmd и жмём Ctrl+Shift+Enter, чтобы запустить консоль с правами администратора.
Вас спросят «Разрешить этому приложению вносить изменения на вашем устройстве?» Нажимайте «Да».
Нужно будет выполнить три команды. Первая это:
certutil -f -importpfx «c:\vpn\vpnclient.p12» NoExport
(если вы сохранили файл в другом месте, не забудьте поправить)
Вас спросят пароль PFX – он пустой, просто жмите Enter.
Дальше идёт:
powershell -command «Add-VpnConnection -ServerAddress ‘ТУТ АЙПИ ВАШЕГО VPS’ -Name ‘Мой VPN’ -TunnelType IKEv2 -AuthenticationMethod MachineCertificate -EncryptionLevel Required -PassThru»
Это создаст VPN-соединение в винде.
И 3-е:
powershell -command «Set-VpnConnectionIPsecConfiguration -ConnectionName ‘Мой VPN’ -AuthenticationTransformConstants GCMAES128 -CipherTransformConstants GCMAES128 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -PfsGroup None -DHGroup Group14 -PassThru -Force»
Этот шаг завершает конфигурацию. Всё, ваша винда великолепна!
Чтобы активировать VPN-подключение, нажмите на иконку своего Wi-Fi в трее и увидите сверху «Мой VPN».
Нажимаете «Подключить» – и вот вы уже безопасно и свободно пользуетесь интернетом!
Дополнение: при первом подключении к вашему VPS вы получите вопрос от WinSCP, доверять ли неизвестному серверу. Нужно, само собой, ответить «Да» – это ваш сервер, вы можете ему доверять. 🙂
Для пользователей iOS
Теперь iOS. Вам нужно будет куда-то положить файл vpnclient.mobileconfig – например, на свой iCloud Drive.
Только не шарьте его ни с кем, кроме тех, кому хотите дать доступ к вашему VPN-у.
После этого открываете на телефоне/планшете (макбуке, кстати, тоже) местоположение файла в приложении Файлы и жмакаете по нему.
Получаете такое сообщение и идёте в Настройки->Основные->VPN и управление устройством.
Там увидите загруженный профиль «IKEv2 VPN» с айпишником вашего сервера. Заходите внутрь, а потом жмите «Установить».
У вас спросят код-пароль, а потом ещё предупредят, что VPN-сервер может всякое делать с вашим трафиком, а ещё он не подписан. Но это ваш личный сервер, так что снова жмём «Установить». (А потом ещё раз внизу.)
Почти все готово, остался один шаг.
Возвращаетесь в «VPN и управление устройством», заходите в «VPN», нажимаете на (i) у вашего IKEv2 VPN, активируете «Подкл. по запросу» – тогда ваш айфон/айпад ВСЕГДА будет ходить в интернет через VPN.
Если хотите включать/выключать вручную – не активируйте эту опцию.
Для пользователей macOS
Сперва нужно повторить шаги из первых пяти Twitter-публикаций в разделе «Для пользователей Windows» — они выше. Далее выполнить эти:
На маке нам понадобится программа Terminal (так и вбивайте в поиске). Она откроет страшное чёрное окно, но вы не пугайтесь. Подключимся к VPS.
Вводите: ssh root@ip-вашего-сервера
Вас спросят: доверять хосту? Yes.
Введите пароль (он не покажет даже звёздочек, это нормально).
После завершения установки пишите команду «exit», чтобы выйти из SSH. Но не закрывайте консоль, нам ещё качать файл для настройки VPN-соединения на нашем маке.
Пишем: scp root@ip-вашего-сервера:/root/vpnclient.mobileconfig ~/Desktop/
Потом пароль. Вуаля, файл на рабочем столе!