VPN на сутки, при необходимости повторить
Будет интересно при наличии ограничений провайдера, в частности мобильный интернет от Yota и т.п. В первую очередь молодым людям, еще не сильно разобравшихся в вопросе, и дядькам (таким, как я), которые когда-никогда хотят скачать вареза или свежего кинца сугубо лицензионные вещи с торрента. Описаный мной способ решает вопрос ограничения на скачивание торрентов у провайдера, а также в некоторых случаях исправляет пинг для онлайн-игр. Не подходит для статического IP-адреса. Абсолютно бесплатно.
Началось всё с чего...
Имею: симка Yota и ноутбук.
Задача: по выходным качать торренты и играть в онлайн-игру WarThunder.
Проблема: p2p трафик блокируется, а пинг в онлайн играх намеренно завышается.
Решение: VPN. Только с ним удаётся в танки погонять да торрентов покачать. Но денег то жалко, не так часто пользуюсь, чтобы 250-500 рублей отдавать. А бесплатные VPN разве что для чтения запрещённых сайтов пригодны. Можно использовать Socks5 для торрентов... 100р/месяц, можно и бесплатные поискать, методом перебора. Но бесплатные недолговечные. Надоело. А деньги из принципа платить не хочу))
Мой вариант: Бесплатный пробный VPN на сутки, при необходимости повторить =)
А теперь реализация. Лично я знаю пару сайтов, предоставляющих платные услуги VPN, и дающие сутки безвозмездно на пробу. Если Вам знакома схема с одноразовыми почтовыми ящиками и подобные сайты, дальнейшая часть поста Вам будет не нова и не интересна. Для остальных, в картинках и пошагово, как/что делать.
1. Заходим на сайт, предоставляющий VPN бесплатно на пробу на сутки, ищем заветную кнопку "Бесплатно". Нас попросят ввести свой почтовый ящик...
2. ...Но мы умнее. Не реклама, но лучше не видел - temp-mail.org. Сервис бесплатно генерирует временные почтовые ящики. Cервис VPN, в свою очередь, проверяет, получал ли пользователь под Вашим ip тестовый период, а также с Вашим почтовым ящиком. В последнее время иногда ругается на недопустимую почту, пробуйте с другой. Как сменить динамический IP? Да просто перезагрузите устройство интернет дающее)) У меня это модем 4G.
3. Получен заветный код. Далее пути могут расходиться... Лёжа на диване с телефоном, я использую приложение от VPN сервиса с этим кодом. Для компьютера необходимо скачать и установить программу OpenVPN. Открывать её и разбираться с ней нам не понадобится. Просто получаем от VPN сервиса файлы конфигурации, используя код:
4. Файлы конфигурации у нас. Распаковываем архив, заходим в папку. Программа OpenVPN установлена, а значит в контекстном меню, что по правой кнопке мыши открывается, видим пункт - Start OpenVPN on this config file, и смело жмакаем его.
5. Откроется окошко командной строки. Там побегают страшные слова, если последнее "Complete" - то Вы подключены к VPN на сутки, пока окошко открыто. Немного советов... Выбирайте российские сервера для файлов и игры из России (на скриншоте Россия, Москва 5), и иностранные, если нужный вам ресурс почему-то не открывается.
6. Через сутки или по необходимости, Вы меняете IP-адрес, почтовый ящик, в редких случаях чистите данные сайта в браузере и вуаля! Опять сутки бесплатно.
Мне уже на протяжении более года этот способ помогает ирать в Warthunder (yota режет пинг жёстко), а также иногда скачивать с торрентов для моего телевизора и PS3. Пользуюсь тарифом Yota для телефона, безлимитным.
ЗЫ: статистика моего "свистка" за последний год.
Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 3)
После публикации второй части, число подписчиков утроилось. Это хорошо, чем раньше мы все перейдем на личные VPN, тем раньше (я наивно надеюсь), наши законотворцы осознают своё бессилие в борьбе с Интернетом.
Настало время подключить к VPN серверу наш смартфон (или любое другое устройство).
Как вы заметили выше, клиенту нужно отдать файл конфигурации .ovpn и четыре ключа к нему. Всего пять файлов. Это не удобно. Поэтому мы сделаем проще, мы «засунем» ключи в файл конфигурации клиента.
Создавать файл мы будем на компьютере. Можете создать его рядом с уже имеющимся файлом (в нашем примере это test_pc.ovpn), заодно сразу проверим, что он работает.
Итак создаем файл с произвольным названием и расширением .ovpn. Я сделаю файл test_smart.ovpn
Содержимое файла
client
dev tun
proto udp
remote 123.123.123.123 443
resolv-retry infinite
nobind
block-outside-dns
persist-key
persist-tun
mute-replay-warnings
remote-cert-eku "TLS Web Server Authentication"
remote-cert-tls server
tls-client
auth SHA512
key-direction 1
<tls-auth>
</tls-auth>
<ca>
</ca>
<cert>
</cert>
<key>
</key>
cipher AES-256-CBC
comp-lzo
verb 3
Здесь вместо 123.123.123.123 вставьте IP-адрес вашего VPN-сервера.
Обратите внимание, что у нас ушли строчки с указанием имени файлов ключей, но добавились секции вида <ca> </ca>. Вот в эти секции мы и будем добавлять ключи. Для этого в WinCSP, в левой панели найдем поочередно необходимые файлы (ca.crt, ta.key, test_smart.key, test_smart.crt) и откроем их. В каждом файле будет запись вида (на примере ca.crt):
-----BEGIN CERTIFICATE-----MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow
FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF
TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6
2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M
USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/
lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd
-----END CERTIFICATE-----
Мы должны скопировать эту запись и вставить её в соответствующую секцию нашего ovpn файла. Получится как-то так:
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
0b9b161b4494f29b1684a7cf3acf5ef8
38b5d9ae30c000f28d6fe0185058e6a6
170fe69d48d2705441ac467b7896aa5e
9298c21d680c67c7b8bfb2adf2c8250e
886954d66b8037be62269eeb0f554b9d
5285ed47136703030d5e5b8c7b712212
-----END OpenVPN Static key V1-----
</tls-auth><ca>
-----BEGIN CERTIFICATE-----
MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow
FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF
TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6
2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M
USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/
lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd
-----END CERTIFICATE-----
</ca><cert>
-----BEGIN CERTIFICATE-----
MIIFPjCCAyagAwIBAgIBAzANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtFYXN5
LVJTQSBDQTAeFw0xNzA2MDExMTI0MjlaFw0yNzA1MzAxMTI0MjlaMBUxEzARBgNV
BAMUCnRlc3Rfc21hcnQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCs
/ULqWUKxtzlgkkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zx
tMzVTUuta4tj+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQ
RVE=
-----END CERTIFICATE-----
</cert><key>
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCs/ULqWUKxtzlg
kkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zxtMzVTUuta4tj
+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQyxLWlQxGrj1+
TcJ4zLUeCfiRqtiSxi/gJBLpMjJVdQWOarsbD1f7vGMzekLJGmCPxdnm1HCOOYi+
DzvvhwDG9NL0+8OQSvgur417mQ1UZS5TLtHUgxkkDMybtIT/UR23pGRnWSSuRqvD
/HUmGQwEHk2AjW6nV+dmBfeeP0ZMH1iaii7Iv9Tt2404QW8FStp2aNHexup1gQeP
P2ZvHMdf6MGsd1QT8tFuHKsCsmi/wvTc8BgEiiPbwEHnjuqtElsW4Av6uuKLRUKq
-----END PRIVATE KEY-----
</key>
Количество строк с абракадаброй в показанной выше записи я уменьшил, у вас их будет больше. Не пугайтесь, это норма.
Обратите внимание на строчку
key-direction 1
Она обязательно должна быть перед секцией <tls-auth> </tls-auth>
Сохраним файл ovpn и поместим его в папку C:\Program Files\OpenVPN\config\
Теперь, если щелкнуть по значку OpenVPN в трее, увидим еще одну строчку
и пробуем подключиться. Все должно быть хорошо. Если подключение зависло, попробуйте нажать кнопку «Переподключиться» в окне с логом подключения. Если всё равно зависает, значит вы накосячили в файле ovpn. Проверяйте.
После проверки можете убрать файл из папки C:\Program Files\OpenVPN\config\
Теперь на своем устройстве устанавливаем клиент OpenVPN Connect. Они есть и для Android (https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=ru) и для IOS (https://itunes.apple.com/ru/app/openvpn-connect/id590379981?mt=8). И у той, и у той функционал убог, но у обоих есть функция Import profile, а большего нам и не нужно.
Чтобы передать файл конфигурации на устройство, отправим его сами себе на тот e-mail, к которому у вас есть доступ с этого устройства. Открываем на устройстве это письмо и сохраняем файл .ovpn в любое удобное место. Главное не забыть – куда.
Можно передать конечно и другим способом. Например, через любой облачный ресурс (Google Drive, iTunes, Hubic, Yandex Disk и пр.). Тут как вам удобнее.
На андроиде:
Можно попробовать просто открыть файл .ovpn. В большинстве случаев сразу откроется приложение OpenVPN Connect. Появится запрос, нужно ли установить файл .ovpn. Подтвердите данное действие.
Если так не получилось, то запускаем OpenVPN Connect
Выбираем Import -> Import Profile from SD card
Находим наш .ovpn файл, становимся на него и жмём SELECT
Ну и жмем Connect
В строке статуса, вверху, появится ключик. Всё, ваше устройство теперь подключено к интернету через VPN-сервер.
Для iPhone / iPad
Всё очень похоже.
Также передаем на устройство файл .ovpn любым удобным способом (см. выше).
При попытке открыть файл .ovpn на смартфоне / планшете iOS сразу откроется приложение OpenVPN Connect. Появится запрос, нужно ли установить файл .ovpn. Нажмите кнопку “+” и установите файл .ovpn.
Теперь запустите OpenVPN Connect, выберите импортированный файл и нажмите по переключателю “Off”. Появится статус «Connected».
Вверху, в строке состояния появится пиктограмма VPN.
Теперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохраняли при переносе на устройство.
ВАЖНО:
После импортирования файла .ovpn в OpenVPN Connect файл записан в хранилище программы. Теперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохраняли при переносе на устройство. И письмо с этим файлом, если переносили через почту. И из облака (если переносили через облако). И из корзины. Отовсюду!
Домашнее задание для подписчиков:
1. нагенерируйте сертификов для всех своих гаджетов;
2. сделайте .ovpn файлы и подключите гаджеты к VPN серверу.
Если будут трудности, спрашивайте в комментариях.
Хотим свободы и анонимности в сети или еще раз про свой VPN сервер для чайников (часть 2)
Первая часть статьи особого ажиотажа не вызвала, но после неё на меня подписалась 10 человек, а значит они ждут продолжения. 10 человек, это не мало. Поэтому продолжаем.
Мы выполнили необходимый минимум подготовительных работ, наш сервер неплохо защищен от злонамеренных воздействий. Теперь пора сделать, для чего мы всё это затевали.
Немного теории, для понимания того, что мы сечас будем делать. VPN (Virtual Private Network) — виртуальная частная сеть. Идея в том, что мы строим свою сеть «поверх» других сетей.
Допустим вы решили зайти на запрещенный ресурс (да на любой ресурс). Какой маршрут вашего интернет трафика? В большинстве случаев схема такая:
Безусловно, это очень упрощенная схема. Но для понимания процесса достаточна. Как видите, у провайдера есть некий-фильтр, который «просматривает» весь ваш трафик и принимает решения, пропустить или нет (настучать на вас или нет :) ). Фактически ваша точка выхода в интернет – это внешние маршрутизаторы вашего провайдера. Именно тут принимается решение, увидите вы тот или иной ресурс или нет.
Что сейчас сделаем мы, запустив наш трафик через интернет:
На наших личных устройствах (компьютер, смартфон, планшет и т.д.) будут установлены и настроены программы-клиенты для VPN сервера. На нашем VPS будет установлена и настроена программа-сервер VPN. Как только они соединятся между собой, появляется наш виртуальный зашифрованный канал поверх всех остальных каналов (красная пунктирная линия на рисунке). Теперь никто не знает, что содержится в трафике между нашими устройствами и нашим VPN сервером, весь трафик надёжно зашифрован. Фактически, теперь наша точка выхода в интернет – это наш VPS. Именно его IP-адрес будут видеть все те Интернет-ресурсы, на которые мы будем заходить. Теперь никакой товарищ майор не узнает, какие видосики вы смотрите, на какие сайты вы ходите и какие сообщения на форумах пишете. Да, если получить доступ к вашему VPS, можно узнать содержимое вашего трафика. Но ведь наш VPS в другой стране, надавить авторитетом на хостера не получится, у него пердставительств и имущества на территории нашей страны и нашего товарища майора пошлют. Нужно затевать полноценное расследование, привлекать международные соглашения, Интерпол, направлять обоснованный (причем обоснованный с точки зрения законодательства страны хостера) запрос. В общем, если вы не натворите чего-нибудь совсем плохого, никто ничего и не получит. Единственное, что от вас требуется: аккуратное обращение с ключами и паролями. Вернёмся к этому вопросу позже.
Хватит теории, переходим к практике.
У вас уже запущены и соединены с сервером PuTTY и WinCSP. Переходим к консоли PuTTY и выполняем следующие команды:
yum install wget -y
yum install unzip zip -y
yum install openvpn -y
Создадим папку для ключей установим её текущей. Для это выполним в консоли команды:
mkdir /etc/openvpn/keys
cd /etc/openvpn/keys
Для генерации ключей мы используем утилиту Easy-RSA. Для начала скачем её себе:
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
Распакуем:
unzip master.zip
Создадим файл с настройками из приложенного образца:
cp vars.example vars
Перейдем в папку с утилитой:
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
Свернём пока консоль и развернём WinCSP. Перейдём в папку /etc/openvpn/keys/easy-rsa-master/easyrsa3.
Примечание: если в правой панели WinCSP вы вдруг не видите каких-либо файлов или папок, которые там должны быть, нажмите кнопку обновления:
Находим и открываем файл vars. Находим строчки
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "me@example.net"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
и убираем в начале каждой символ #
Теперь можно включить фантазию и изменить под себя значения в кавычках. Например:
set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "Moscow"
set_var EASYRSA_REQ_CITY "Moscow"
set_var EASYRSA_REQ_ORG "RosComNadzor"
set_var EASYRSA_REQ_EMAIL "admin@rkn.ru"
set_var EASYRSA_REQ_OU "Otdel besnennogo printera"
Эти параметры обязательны при генерации ключа, но, в нашем случае, ни на что не влияют. Далее находим и приводим к указанному виду следующие параметры:
Строчку
#set_var EASYRSA_KEY_SIZE 2048
превращаем в:
set_var EASYRSA_KEY_SIZE 4096
Строчку
#set_var EASYRSA_DIGEST "sha256"
превращаем в:
set_var EASYRSA_DIGEST "sha512"
В этом файле можно еще много чего поправить, например, срок действия ключа. Но мы не будем этого делать. Перегенерировать ключ раз 180 дней – не так уж и сложно. Закрываем файл с сохранением.
Возвращаемся к консоли PuTTY. Создаем инфраструктуру публичных ключей (PKI, Public Key Infrastructure). Выполним команду:
./easyrsa init-pki
Easy-RSA отвечает нам, что создан каталог /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/
Не буду расписывать, что такое PKI. Про это есть отличная статься с картинками в Википедии.
Нам важно знать, что ключи создаются парами – закрытый и открытый. Для обмена с кем-то защищаемой информацией мы обмениваемся открытыми ключами. В данном случае у сервера будет свой закрытый ключ и открытые ключи клиентов. У клиентов свои закрытые ключи и открытый ключ сервера. А удостоверять подлинность ключей, будет созданный нами же удостоверяющий центр. Его корневой сертификат будет у всех участников обмена.
Создадим свой удостоверяющий центр (СА). По-хорошему, его бы надо создавать не здесь, а на какой-то отдельной машине и, в идеале, не подключенной к интернету. Но, в нашем частном случае, это чрезмерная паранойя. Не будем забывать, что наша задача просто выйти из-под регулирования законодательства своей страны. Если кто-то получит возможность покопаться в нашем сервере, он и так всё узнает. Поэтому не будем усложнять.
Выполним команду:
./easyrsa build-ca
Нас просят придумать пароль:
Да-да, опять пароль. Требования к сложности примерно такие же, как и для пароля ключа SSH. Зачем этот пароль: если корневой сертификат вашего удостоверяющего центра попадёт в чужие руки, то любой сможет сгенерировать пользовательские сертификаты и подключиться к вашему VPN-серверу. Поэтому вы должны беречь от разглашения и закрытый ключ корневого сертификата (файл ca.key), и пароль к нему. Забывать этот пароль также не стоит. Восстановить его нельзя и придется заново создавать корневой сертификат и все пользовательские сертификаты. Не смертельно, но не приятно. В общем придумываем и вводим пароль. Нас попросят ввести его два раза. На следующий вопрос:
просто жмём Enter (также будем поступать для всех остальных ключей). У нас появились файлы ca.crt (корневой сертификат. Он открытый, мы его будем передавать клиентам)
и ca.key (закрытый ключ удостоверяющего центра, его нужно беречь от разглашения. Это самая ценная для вас вещь на вашем сервере).
Теперь создадим пару (открытый, закрытый) ключей для нашего VPN-сервера. Закрытый ключ сервера мы не будем защищать паролем, так как вводить этот пароль пришлось бы при каждой перезагрузке сервера. Создаём запрос на сертификат:
./easyrsa gen-req server nopass
На запрос ввести Common Name просто жмём Enter.
Как видите, на выходе у нас два файла: server.key – это закрытый ключ сервера; server.req – это запрос нашему CA на удостоверение (подписывание) сертификата. Скормим запрос нашему CA:
./easyrsa sign-req server server
CA просит подтвердить, что мы в своём уме и действительно хотим подписать сертификат. Убедим его в этом: наберём yes и нажмём Enter.
Теперь введём пароль от нашего закрытого ключа CA
И вот CA создал подписанный открытый ключ нашего сервера /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt
А теперь мы сделаем очень нужную штуку. Мы создадим ключ Диффи-Хелмана. Этот ключ защитит наш трафик от расшифровки даже в случае похищения ключей сервера и клиентов. Т.е. если товарищ майор записывал весь ваш шифрованный трафик, скрипя зубами от досады, что не может понять, что ж такое вы делаете. А потом он вдруг заполучит все ваши ключи, то он всё равно не сможет расшифровать тот трафик, который у него записан. Вот такая вот магия математики. Берегите математиков, они умные и защищают нас от товарища майора.
Вводим в консоли команду:
./easyrsa gen-dh
и идём пить чай ибо процесс это не быстрый. А учитывая, что процессор у VPS весьма слабенький, генерация может занять до 15 минут (а может и больше). В общем ждите, магия быстро не делается.
Когда генерация завершится, мы получим файлик /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem
Еще мы сделаем список отозванных сертификатов. Он нам пригодится, чтобы сделать недействительными какие-либо клиентские ключи. Например, при утере смартфона с настроенным VPN-клиентом.
Выполним команду:
./easyrsa gen-crl
И получим файл /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/crl.pem. В нём и будет список отозванных сертификатов. Отзывать сертификаты мы потренируемся позже, пока оставим так.
Теперь подкинем VPN-серверу все необходимые ключи. Для этого выполним несколько команд:
cp pki/ca.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp pki/crl.pem /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
Получится вот так:
И сделаем текущей папку VPN-сервера:
cd /etc/openvpn
Еще не много магии для усиления безопасности. Сделаем HMAC (ищите описание на Хабре и в Википедии). Выполним команду:
openvpn --genkey --secret ta.key
Рядом с нашими ключами в папке /etc/openvpn будет создан файл ta.key. Его мы также будем отдавать клиентам.
Теперь с помощью WinCSP поправим права на файлы: ca.crt, crl.pem, dh.pem, server.crt. Сделаем для всех 0644.
А для файлов server.key, ta.key установим права 0600 (по-идее они сразу такие и есть, но на всякий случай проверьте).
В принципе VPN-сервер можно уже сконфигурировать и запускать, но нам пока нечем к нему подключиться. Поэтому создадим ключи для клиента. Вернёмся в папку утилиты Easy-RSA:
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
Для создания ключа и запроса на подпись используется команда (не спешите вводить, сначала прочитайте то, что ниже):
./easyrsa gen-req client_name nopass
Для подписания запроса и создания открытого ключа команда:
./easyrsa sign-req client client_name
Всё также, как и при создании ключей сервера. Если возникнут вопросы, смотри выше, как мы там это делали.
Обратите внимание на следующее:
- ключ nopass вы можете использовать, а можете не использовать. С ключом nopass вам не потребуется придумывать пароль для закрытого ключа клиента. Тогда, при подключении к VPN-серверу, и вводить его не придётся. Но в этом случае любой, кто завладеет ключом клиента, сможет подключиться к вашему VPN-серверу. Однако, вводить каждый раз пароль не удобно. Ищите компромисс. Например, на домашнем компьютере ключ без пароля, на рабочем – с паролем. Если ваше переносное устройство не имеет дополнительных мер защиты (шифрование накопителя, контроль доступа и пр.) и есть риск потерять устройство, или иным образом скомпрометировать – сделайте ключ с паролем.
- client_name это произвольное, понятное вам название того клиента, который будет им пользоваться. Например, для домашнего компьютера можно сделать имя my_home_pc. Тогда команды будут выглядеть так:
./easyrsa gen-req my_home_pc nopass
./easyrsa sign-req client my_home_pc
А для своего смартфона сделать ключи с именем my_smartphone и с защитой паролем. Тогда команды будут выглядеть так:
./easyrsa gen-req my_smartphone
./easyrsa sign-req client my_smartphone
В общем делайте удобное и понятное имя, чтобы не запутаться в ключах.
Для данной статьи я сделаю тестовые ключи для компьютера и смартфона с именами test_pc и test_smart
Сначала покажу как настроить подключение с компьютера. Мы проверим, что наш VPN работает, а потом расскажу, как настроить на смартфоне.
Клиенту нужно будет передать следующие файлы:
- сгенерированную пару ключей клиента (в моём случае test_pc.crt и test_pc.key)
- открытый сертификат CA (ca.crt)
- ta.key
Никаких других ключей и сертификатов у клиента быть не должно!
Ну вот, все ключи у нас есть. Давайте уже конфигурировать и запускать.
В папке /etc/openvpn создадим файл server.conf (если он там уже есть, удалите и создайте заново). Как создавать файлы, было написано ранее. Содержимое файла будет следующее:
port 443
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
crl-verify crl.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
remote-cert-eku "TLS Web Client Authentication"
keepalive 10 120
tls-server
tls-auth ta.key 0
tls-timeout 120
auth SHA512
cipher AES-256-CBC
comp-lzo
max-clients 10
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 4
Описание опций файла выходит за рамки статьи. О некоторых опциях я расскажу ниже, в процессе.
Сохраним файл. Проверим, чтобы права были 0644.
Теперь пробуем запустить сервер. В консоли команда:
systemctl start openvpn@server
Проверяем, что запустился.
Сначала посмотрим на состояние службы сервера командой:
systemctl status -l openvpn@server
Если всё хорошо, то это будет выглядеть вот так:
Но может быть и плохо:
Смотрим лог (/etc/openvpn/openvpn.log) и видим там, например:
us=64300 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
us=64310 Exiting due to fatal error
Т.е. не найден TUN/TAP драйвер. Об этом я писал в начале статьи. В случае моего текущего хостера это решается просто. В письме (смотри раздел про аренду VPS), которое содержало IP-адрес сервера и пароль на SSH, была дана ссылка на панель управления сервером и логин-пароль к ней. Заходим в эту панель и видим:
Так включим же его. После включения сервер уйдет в перезагрузку, придется закрыть PuTTY и WinCSP, открыть их заново и подключиться к серверу. Возможно, в случае другого хостера, для включения TUN/TAP вам придется написать в тех.поддержку.
Еще раз пробуем запустить службу и проверить её состояние. Всё должно стать хорошо. Если не стало, смотрим логи. Тут универсального рецепта нет. Например, может мешать SELinux (это такая система безопасности Linux). Чиним командой:
semanage port -a -t openvpn_port_t -p udp 443
И опять пробуем запустить службу и проверить состояние.
Еще проверим, что служба VPN-сервера слушает нужный порт (у нас 443):
netstat -tulnp | grep 443
Если напишет что-то типа: -bash: netstat: command not found, то выполняем команду:
yum install net-tools -y
И потом снова:
netstat -tulnp | grep 443
Должно быть так:
Убедившись, что служба стартует без проблем, добавляем её в автозагрузку:
systemctl enable openvpn@server
Ну и отключим логи. На всякий случай ;) Для этого откроем для редактирования файл /etc/openvpn/server.conf и строчку:
log openvpn.log
переделываем в:
log /dev/null
сохраняем и закрываем. Делаем перезапуск службы, чтобы применился новый конфиг:
systemctl restart openvpn@server
И удаляем файл /etc/openvpn/openvpn.log
Нет у нас логов, товарищ майор.
Пришла пора подключиться к нашему серверу. Речь пойдет о компьютерах под управлением операционной системы семейства Windows. Если у вас Linux, то я не пойму, зачем вы всё это читаете.
И устанавливаем. В процессе убираем галочку с OpenVPN Service
Остальное не трогаем.
После установки открываем папку C:\Program Files\OpenVPN\config\ и создаем в ней файл client_name.ovpn
В данном случае client_name это произвольное имя, можете сделать его совпадающим с именем ключей.
Содержимое файла:
client
dev tun
proto udp
remote 123.123.123.123 443
resolv-retry infinite
nobind
block-outside-dns
persist-key
persist-tun
mute-replay-warnings
remote-cert-eku "TLS Web Server Authentication"
remote-cert-tls server
tls-client
tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1
auth SHA512
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\test_pc.crt"
key "C:\\Program Files\\OpenVPN\\config\\test_pc.key"
cipher AES-256-CBC
comp-lzo
verb 3
Вместо 123.123.123.123 вписываем IP-адрес своего сервера. Вместо test_pc.crt, test_pc.key вписываем правильные названия своих клиентских ключей. В общем-то ключи совсем не обязательно должны лежать в папке C:\Program Files\OpenVPN\config\, даже было бы намного лучше, чтобы они здесь не лежали, а находились на флешке и были всегда под контролем. Тогда путь выглядел бы примерно так:
ca "E:\\my_keys\\ca.crt"
Но мы не будем пока мудрить и сделаем так. Сохраняем файл.
При помощи WinCSP скопируем к себе на компьютер все необходимые ключи с сервера:
И запускаем OpenVPN GUI (кнопка Пуск -> OpenVPN -> OpenVPN GUI)
Так как у вас всего один файл .ovpn в папке C:\Program Files\OpenVPN\config\, то соединение должно начаться автоматически. Появится окно с логом соединения:
А как только соединение будет установлено, в трее появится соответствующий значок зеленого цвета:
Щелкнув правой кнопкой мыши на этом значке, можно увидеть меню управления клиентом (отключиться, подключиться, настройка).
Если значок желтый, то клиент в процессе установление соединения.
Если серый, клиент не подключен к VPN-серверу.
Если подключиться не получается, проверяйте настройки файрволла сервера, как это написано выше (в предыдущей части статьи).
Проверяем, что теперь наш видимый в интернете IP-адрес совпадает с IP-адресом сервера. Например, по пройдем по адресу http://myip.ru/ и посмотрим.
Всё, ваша личная VPN сеть работает, товарищ майор больше не может отслеживать ваш трафик.













































