Tinc — настройка VPN в Ubuntu
Tinc — это открытый сетевой протокол и программная реализация, используемая для сжатых и зашифрованных виртуальных частных сетей. Это проект был начат в 1998 году Гусом Слипеном, Иво Тиммермансом и Весселем Данкерсом под лицензией GPL.
К его основным достоинствам относится:
1) Распределенная топология (нет необходимости в мощном сервере VPN).
2) Работет поверх сетей любой топологии, в том числе за NAT и поверх других VPN.
3) Поддерживает активное соединение даже после переключения сети (например с wi-fi на 4g) или при входе и выходе из других VPN.
4) Работет в большинстве операционных систем, в том числе Windows XP.
К этому можно добавить, что tinc входит во все дистирбутивы Linux, то есть его можно установить и сразу пользоваться.
При этом tinc у широкой публики не пользуется популярностью. Одна из причин — очень лаконичная документация, которая создавалась в университетской среде, и поэтому является скорее академической, чем доступной для быстрого прочтения.
В этом сообщении я опишу конфигурацию tinc VPN в операционной истеме Ubuntu.
Устанавливаем пакет sudo apt-get install tinc.
Поскольку сеть имеет ячеистую топологию — нет сереверного или клиентского варианта программного обеспечения.
В нашем примере будет две машины. Первую условно назовем «сервер» — будет открыта для доступа из интернет по имени alpha.example.com (или по ip адресу). Вторая машина будет в некоторой сети не имея открытого в интернет ip адреса (4g, wi-fi, условно назовем ее «домашний компьютер»)
Теперь нам нужно выбрать имя для сети. В нашем примере это будет alpha.
Сначла работем на «сервере» с адресом alpha.example.com. Создаем структуру каталогов для конфигов sudo mkdir -p /etc/tinc/alpha/hosts.
Создаем конфиг сети alpha /etc/tinc/alpha/tinc.conf:
В каталоге /etc/tinc/alpha/hosts будут храниться открытые ключи текущей машины и других доступных в сети alpha машин. Создадим файл /etc/tinc/alpha/hosts/server_01:
Address задается в случае если у машины есть доступный адрес (например публичный адрес в сети интернет) или доменное имя.
Subnet = 10.0.0.1/32 задает адрес машины в сети alpha.
Subnet = 0.0.0.0/0 включается только в том случае, когда неоходимо весь трафик от других машин в интернет направить через текущую машину (это не обязательно).
Сгенерируем открытый и закрытый ключ командой sudo tincd -n alpha -K 4096.
Создадим файлы, которые будут выполняться при старте и остановке сети
/etc/tinc/alpha/tinc-up:
Сделаем эти файлы выполняемыми sudo chmod 755 /etc/tinc/alpha/tinc-*
Запустим сеть alpha на текущей машине sudo tincd -n alpha -D -d5
Теперь перейдем на «домашний компьютер» и повторим все действия (с небольшими изменениями):
sudo apt-get install tinc
sudo mkdir -p /etc/tinc/alpha/hosts
sudo tincd -n alpha -K 4096.
sudo chmod 755 /etc/tinc/alpha/tinc-*
sudo tincd -n alpha -D -d5
Теперь неободимо обменяться публичными ключами в каталогах /etc/tinc/alpha/hosts, чтобы их содержимое на обоеих машинах было одинаковое.
Итак, сеть настроена. С компьютера 10.0.0.1 доступен компьютер 10.0.0.2 и наоборот.
Иногда необходимо, чтобы вест трафик с «домашнео компьютера» шел через «сервер» (то для чего сейчас VPN используется довольно часто).
Напомню, что для этого в конфиге сервера мы предусмотрели параметр Subnet = 0.0.0.0/0
Кроме этого, необходимо изменить скрипты конфигурирования сети на «домашнем компьютере:
После этого весь Ваш трафик будет направлен на „сервер“. Но это еще не означает что сервер будет его пересылать на другие адреса. Для этого нужно еще дополнительно настроить сеть на „сервере“. Дальнейшие действия будут сильно зависеть от конфигурации сети. В наиболее простом случае помогут команды, которые можно выполнять только если Вы знаете что они делают:
Установка и настройка сервера OpenVPN в Ubuntu 20.04
Виртуальная частная сеть (VPN) позволит вам работать в незащищенных сетях, как если бы вы находились в частной сети. Она предоставляет возможность получить безопасный и защищенный доступ к сети Интернет со смартфона или ноутбука при подключении к недоверенной сети, например Wi-Fi в отеле или в кафе.
В сочетании с соединениями HTTPS данная схема позволяет защитить учетные данные и транзакции в беспроводной сети. Вы можете обойти географические ограничения и цензуру и скрыть свое местоположение, а также любой незашифрованный трафик HTTP при работе в незащищенной сети.
OpenVPN — это полнофункциональное решение VPN с открытым исходным кодом, которое использует протокол TLS и позволяет использовать широкий круг конфигураций. В этом обучающем руководстве мы установим OpenVPN на сервере Ubuntu 20.04 и настроим его для доступа с клиентского компьютера.
Примечание. Если вы планируете настроить сервер OpenVPN на DigitalOcean Droplet, то мы, как и многие поставщики хостинга, будем взимать плату за превышение лимита пропускной способности. По этой причине необходимо следить за объемом трафика, который обрабатывает ваш сервер.
Дополнительную информацию можно найти на этой странице.
Предварительные требования
Для данного обучающего руководства вам потребуется следующее:
- Один сервер Ubuntu 20.04 с пользователем sudo без привилегий root и активированным брандмауэром. Чтобы выполнить настройку сервера, воспользуйтесь нашим руководством по начальной настройке сервера Ubuntu 20.04. В этом обучающем руководстве мы будем называть его сервером OpenVPN.
- Отдельный сервер Ubuntu 20.04 настроенный в качестве частного центра сертификации (Certificate Authority, CA), который мы далее будем называть сервером ЦС. После выполнения шагов руководства по начальной настройке сервера вы можете выполнить шаги 1–3 руководства Установка и настройка центра сертификации в Ubuntu 20.04.
Примечание. Хотя технически возможно использовать ваш сервер OpenVPN или ваш локальный компьютер в качестве центра сертификации, делать это не рекомендуется, поскольку это открывает ваш VPN для ряда уязвимостей. Согласно официальной документации OpenVPN, вы должны разместить ЦС на отдельном компьютере, который будет отвечать за импорт и подписание запросов сертификатов. По этой причине в данном обучающем модуле предполагается, что ваш ЦС располагается на отдельном сервере Ubuntu 20.04, где также имеются пользователь без привилегий root с привилегиями sudo и базовый брандмауэр.
Помимо этого вам потребуется клиентский компьютер, который вы будете использовать для подключения к вашему серверу OpenVPN. В этом обучающем руководстве мы будем называть его клиентом OpenVPN. В целях данного руководства рекомендуется использовать ваш локальный компьютер в качестве клиента OpenVPN.
После выполнения всех предварительных требований вы можете начать установку и настройку сервера OpenVPN в Ubuntu 20.04.
Примечание. Обратите внимание, что если вы отключите аутентификацию с помощью пароля при настройке этих серверов, то можете столкнуться с трудностями при передаче файлов между ними, как предусматривается последующими разделами этого обучающего руководства. Чтобы устранить эту проблему, вам нужно будет заново включить аутентификацию с помощью пароля на каждом сервере. Также вы можете сгенерировать пару ключей SSH для каждого сервера и добавить публичный ключ SSH сервера OpenVPN в файл authorized_keys на компьютере ЦС, и наоборот. Дополнительные инструкции по этим решениям можно найти в обучающем модуле Настройка ключей SSH в Ubuntu 20.04.
Шаг 1 — Установка OpenVPN и Easy-RSA
Первый шаг этого руководства подразумевает установку OpenVPN и Easy-RSA. Easy-RSA — это инструмент управления инфраструктурой открытых ключей (PKI), который вы будете использовать на сервере OpenVPN для генерации запроса сертификата, который вы затем будете проверять и подписывать на сервере ЦС.
Для начала обновите указатель пакетов сервера OpenVPN и установите OpenVPN и Easy-RSA. Оба пакета доступны в репозиториях Ubuntu по умолчанию, и поэтому вы можете использовать apt для установки:
Далее вам потребуется создать новую директорию на сервере OpenVPN от имени вашего пользователя non-root user с названием
Теперь вам нужно создать символьную ссылку из скрипта easyrsa , установленного пакетом в директории
/easy-rsa , которую вы только что создали:
Примечание. Хотя другие руководства могут предписывать скопировать файлы пакета easy-rsa в директорию PKI, в этом обучающем руководстве мы используем подход на основе символьных ссылок. Таким образом, любые изменения пакета easy-rsa будут автоматически отражаться в ваших скриптах PKI.
В заключение убедитесь, что владельцем директории является ваш пользователь non-root user с привилегиями sudo, и ограничьте доступ с помощью команды chmod :
После установки этих программ и их перемещения в нужные локации в вашей системе следующим шагом будет создание инфраструктуры открытых ключей (PKI) на сервере OpenVPN, чтобы вы могли запрашивать и управлять сертификатами TLS для клиентов и других серверов, которые будут подключаться к вашему VPN.
Шаг 2 — Создание PKI для OpenVPN
Прежде чем вы сможете создавать закрытый ключ и сертификат вашего сервера OpenVPN, вам нужно создать локальную директорию инфраструктуры открытых ключей на сервере OpenVPN. Вы будете использовать эту директорию для управления запросами сертификата сервера и клиентов, вместо того чтобы получать их прямо на сервере ЦС.
Для создания директории PKI на сервере OpenVPN вам нужно указать в файле vars ряд значений по умолчанию. Используйте команду cd для перехода в каталог easy-rsa , а затем создайте и отредактируйте файл vars с помощью nano или другого предпочитаемого текстового редактора:
После открытия файла вставьте следующие две строки:
Эти две строки потребуются вам в файле vars на сервере OpenVPN, поскольку он не будет использоваться в качестве ЦС. Они будут гарантировать, что ваши закрытые ключи и запросы сертификата будут настроены для использования современной криптографии на эллиптических кривых (Elliptic Curve Cryptography, ECC) при генерации ключей и защищенных подписей для ваших клиентов и сервера OpenVPN.
Под настройкой использования ECC для ваших серверов OpenVPN и ЦС подразумевается, что, когда клиент и сервер будут пытаться установить общий симметричный ключ, они будут использовать алгоритмы эллиптической кривой для обмена. Использование ECC для обмена ключами значительно быстрее, чем использование простого алгоритма Диффи — Хеллмана с классическим алгоритмом RSA, поскольку числа намного меньше, а вычисления выполняются быстрее.
Справка: когда клиенты подключаются к OpenVPN, они используют асимметричное шифрование (также известное как открытый/закрытый ключ) для выполнения TLS-рукопожатия. Однако при передаче шифрованного VPN-трафика сервер и клиенты используют симметричное шифрование, которое также известно как шифрование общедоступного ключа.
Симметричное шифрование требует гораздо меньшего количества вычислений по сравнению с асимметричным: используемые числа гораздо меньше, и современные процессоры имеют инструкции для выполнения оптимизированного симметричного шифрования. Для переключения с асимметричного на симметричное шифрование сервер OpenVPN и клиент будут использовать алгоритм Диффи — Хеллмана на эллиптических кривых для согласования общего секретного ключа в максимально короткие сроки.
После добавления в файл vars данных вы можете перейти к созданию директории PKI. Для этого воспользуйтесь скриптом easyrsa с опцией init-pki . Хотя вы уже использовали эту команду на сервере ЦС в соответствии с предварительными требованиями, необходимо запустить ее здесь, поскольку сервер OpenVPN и сервер ЦС имеют разные директории PKI.
Обратите внимание, что на сервере OpenVPN не нужно создавать центр сертификации. Ваш сервер ЦС отвечает за валидацию и подпись сертификатов. PKI на вашем сервере VPN используется только в качестве удобного и централизованного места хранения запросов сертификата и публичных сертификатов.
После инициализации PKI на сервере OpenVPN вы можете перейти к следующему шагу и создать запрос сертификата и закрытого ключа сервера OpenVPN.
Шаг 3 — Создание запроса сертификата и закрытого ключа сервера OpenVPN
Теперь, когда на вашем сервере OpenVPN установлено все необходимое, на следующем шаге мы сгенерируем закрытый ключ и запрос подписи сертификата на вашем сервере OpenVPN. После этого вы передадите запрос в ваш центр сертификации для подписи, создав необходимый сертификат. После подписи сертификата вы передадите его назад на сервер OpenVPN и установите его для использования на сервере.
Для начала перейдите в директорию
/easy-rsa на сервере OpenVPN, используя вашего пользователя non-root user:
Теперь вы можете вызвать easyrsa с опцией gen-req , за которой необходимо указать стандартное имя для компьютера. Вы можете использовать любое стандартное имя, но лучше всего выбрать запоминающийся вариант. В этом обучающем руководстве для сервера OpenVPN будет использоваться стандартное имя server . Обязательно добавьте опцию nopass . Без этого файл запроса будет защищен паролем, что впоследствии может привести к проблемам с разрешениями.
Примечание. Если вы выберете любое другое имя, а не server , вы должны будете следовать некоторым из приведенных ниже инструкций с изменениями. Например, при копировании сгенерированных файлов в директорию /etc/openvpn вам нужно будет указать правильные имена. Позднее вам нужно будет изменить файл etc/openvpn/server.conf , чтобы он указывал на соответствующие файлы .crt и .key .
В результате будет создан закрытый ключ для сервера и файл запроса сертификата с именем server.req . Скопируйте ключ сервера в директорию /etc/openvpn/server :
В результате выполнения этих шагов вы успешно создали закрытый ключ для вашего сервера OpenVPN. Также вы создали запрос на подпись сертификата для сервера OpenVPN. Запрос на подпись сертификата теперь готов к подписи в вашем центре сертификации. В следующем разделе этого обучающего руководства вы узнаете, как подписать запрос на подпись сертификата с помощью закрытого ключа вашего сервера ЦС.
Шаг 4 — Подпись запроса сертификата сервера OpenVPN
На предыдущем шаге вы создали запрос на подпись сертификата (CSR) и закрытый ключ для сервера OpenVPN. Теперь сервер ЦС должен узнать о сертификате server и выполнить его валидацию. После подтверждения сертификата сервером ЦС и его отправки назад на сервер OpenVPN клиенты, которые доверяют вашему ЦС, также смогут доверять серверу OpenVPN.
На сервере OpenVPN от имени вашего пользователя non-root user воспользуйтесь запросом на передачу или другим методом передачи для копирования запроса сертификата server.req на сервер ЦС для подписи:
Если вы выполнили предварительное требование обучающего модуля «Установка и настройка Центра сертификации (ЦС) в Ubuntu 20.04», следующим шагом будет войти на сервер ЦС как пользователь без привилегий root, которого вы создали для управления ЦС. Вы использовали команду cd для перехода в каталог
/easy-rsa , где вы создали и импортируйте запрос сертификата с помощью скрипта easyrsa :
Далее подпишите запрос, запустив скрипт easyrsa с опцией sign-req и указанием типа запроса и стандартного имени. В качестве типа запроса может использоваться client или server . Поскольку мы работаем с запросом сертификата сервера OpenVPN, необходимо использовать тип запроса server :
В выводе вам будет нужно подтвердить, что запрос поступил из надежного источника. Введите yes , а затем нажмите ENTER для подтверждения:
Обратите внимание, что если вы зашифровали закрытый ключ ЦС, вам будет предложено ввести пароль в данный момент.
В результате выполнения этих шагов вы успешно подписали запрос сертификата сервера OpenVPN с помощью закрытого ключа сервера ЦС. Полученный файл server.crt содержит открытый ключ шифрования сервера OpenVPN, а также новую подпись от сервера ЦС. Смысл подписи состоит в том, чтобы сообщить всем, кто доверяет серверу ЦС, что они также могут доверять серверу OpenVPN при подключении к нему.
Для завершения настройки сертификатов скопируйте файлы server.crt и ca.crt с сервера ЦС на сервер OpenVPN:
Теперь вернитесь на ваш сервер OpenVPN, скопируйте файлы из /tmp в /etc/openvpn/server :
Теперь ваш сервер OpenVPN почти готов к принятию подключений. На следующем шаге вы выполните ряд дополнительных шагов для повышения безопасности сервера.
Шаг 5 — Настройка криптографических материалов OpenVPN
В качестве дополнительного уровня безопасности мы добавим дополнительный общий секретный ключ, который будет использовать сервер и все клиенты, с помощью директивы OpenVPN tls-crypt . Эта опция используется, чтобы «затемнить» сертификат TLS, используемый, когда сервер и клиент первоначально подключаются друг к другу. Также она используется сервером OpenVPN для выполнения быстрых проверок входящих пакетов: если пакет подписан с помощью предварительно предоставленного ключа, сервер обрабатывает его, если подпись отсутствует, сервер понимает, что пакет получен из непроверенного источника, и может отклонить его, не выполняя дополнительную работу по расшифровке.
Эта опция поможет убедиться, что ваш сервер OpenVPN может справляться с неудостоверенным трафиком, сканированием портов и DoS-атаками, которые могут связывать ресурсы сервера. Она также затрудняет выявление сетевого трафика OpenVPN.
Для получения предварительно предоставленного ключа tls-crypt запустите следующую команду на сервере OpenVPN в директории
В результате вы получите файл с именем ta.key . Скопируйте его в директорию /etc/openvpn/server/ :
После получения этих файлов на сервере OpenVPN вы можете переходить к созданию клиентских сертификатов и файлов ключей для ваших пользователей, которые вы будете использовать для подключения к VPN.
Шаг 6 — Создание сертификата клиента и пары ключей
Хотя вы можете сгенерировать закрытый ключ и запрос сертификата на клиентской системе и отправить их в ЦС для подписания, в этом обучающем руководстве мы рассмотрим процесс генерирования запроса сертификата на сервере OpenVPN. Преимущество этого подхода заключается в том, что мы можем создать скрипт, который будет автоматически генерировать файлы конфигурации клиентов, содержащие все необходимые ключи и сертификаты. Благодаря этому вам не нужно будет передавать ключи, сертификаты и файлы конфигурации на клиентские системы, и процесс подключения к VPN ускорится.
В этом обучающем руководстве мы создадим одну пару из ключа и сертификата для клиентской системы. Если у вас несколько клиентских систем, вы можете повторить этот процесс для каждой такой системы. Обратите внимание, что для каждого клиента в скрипте нужно указать уникальное имя. В этом обучающем руководстве мы будем использовать первую пару сертификат/ключ под именем client1 .
Вначале создайте в домашней директории структуру директорий, где будут храниться файлы сертификатов и ключей клиентской системы:
Поскольку в этой директории будут храниться пары сертификат/ключ ваших клиентов и файлы конфигурации, для нее следует закрыть все разрешения:
Вернитесь в директорию EasyRSA и запустите скрипт easyrsa с опциями gen-req и nopass , указав обычное имя клиента:
Нажмите ENTER , чтобы подтвердить обычное имя. Скопируйте файл client1.key в ранее созданную директорию
Затем передайте файл client1.req на сервер ЦС, используя безопасный метод:
Теперь выполните вход на ваш сервер ЦС. Затем перейдите в директорию EasyRSA и импортируйте запрос сертификата:
Затем подпишите запрос, как вы делали это для сервера на предыдущем шаге. Однако в этот раз обязательно укажите тип запроса client :
При запросе введите yes , чтобы подтвердить, что вы планируете подписать запрос сертификата и что он поступил из доверенного источника:
Если вы зашифровали свой ключ ЦС, вам будет предложено ввести пароль.
В результате будет создан файл клиентского сертификата с именем client1.crt . Переместите этот файл обратно на сервер.
Вернитесь на ваш сервер OpenVPN, скопируйте клиентский сертификат в директорию
Затем скопируйте файлы ca.crt и ta.key в директорию
/client-configs/keys/ и предоставьте соответствующие разрешения для вашего пользователя sudo:
В результате вы сгенерировали ключи и сертификаты для сервера и клиента и сохранили их в соответствующих директориях на вашем сервере OpenVPN. С этими файлами еще предстоит выполнить несколько действий, но к ним мы вернемся позднее. Теперь вы можете перейти к настройке OpenVPN.
Шаг 7 — Настройка OpenVPN
Как и во многих широко используемых инструментах с открытым исходным кодом, OpenVPN имеет множество доступных параметров настройки для кастомизации вашего сервера согласно вашим нуждам. В этом разделе мы предоставим инструкции по настройке конфигурации сервера OpenVPN на основе одного из примеров файлов конфигурации, который включен в документацию для этого программного обеспечения.
Вначале скопируйте файл server.conf в качестве отправной точки для вашего собственного файла конфигурации:
Откройте новый файл для редактирования в текстовом редакторе по вашему выбору. В нашем случае мы будем использовать nano:
Нам нужно изменить несколько строк в этом файле. Сначала необходимо найти раздел HMAC в конфигурации, выполнив поиск директивы tls-auth . Эта строка должна быть разкомментирована. Закомментируйте ее, добавив ; в начало строки. Затем добавьте после нее новую строку, содержащую только значение tls-crypt ta.key :
Затем найдите раздел криптографических шифров, выполнив поиск строк с текстом cipher . По умолчанию установлено значение AES-256-CBC , однако шифр AES-256-GCM обеспечивает более высокий уровень шифрования, производительности и лучше поддерживается современными клиентами OpenVPN. Мы закомментируем значение по умолчанию, добавив ; в начало этой строки, а затем добавим другую строку после нее, содержащую обновленное значение AES-256-GCM :
Сразу после этой строки добавьте директиву auth для выбора алгоритма выборки сообщений HMAC. Для этого хорошо подойдет SHA256 :
Затем найдите строку с директивой dh , которая определяет параметры алгоритма Диффи — Хеллмана. Поскольку мы настроили все сертификаты для использования криптографии на эллиптических кривых, нет необходимости в использовании файла прототипа Диффи — Хеллмана. Закомментируйте существующую строку dh dh2048.pem или dh dh.pem . Имя файла для ключа Диффи — Хеллмана может отличаться от того, что перечислено в примере файла конфигурации сервера. Затем добавьте строку после нее с содержанием dh none :
Далее нам нужно запустить OpenVPN без привилегий, с которыми он запущен, поэтому нам нужно указать на необходимость запуска с пользователем nobody и группой nogroup. Чтобы активировать эту возможность, найдите и разкомментируйте строки user nobody и group nogroup , удалив ; в начале каждой строки:
(Необязательно) Изменение DNS для перенаправления всего трафика через сеть VPN
Вышеуказанные настройки создадут соединение VPN между вашим клиентом и сервером, но не будут заставлять соединения использовать туннель. Если вы хотите использовать VPN для перенаправления всего вашего клиентского трафика, вам нужно будет передать дополнительные настройки на клиентские компьютеры.
Для начала найдите и разкомментируйте строку push "redirect-gateway def1 bypass-dhcp" . Она будет сообщать вашему клиенту о необходимости перенаправлять весь трафик через ваш сервер OpenVPN. Обратите внимание, что при активации этой функции могут возникать проблемы с подключением к другим сетевым службам, например SSH:
Под этой строкой найдите раздел dhcp-option . Удалите ; в начале обеих строк, чтобы разкомментировать эти строки:
Эти строки будут сообщать вашему клиенту о необходимости использования бесплатных интерпретаторов OpenDNS на перечисленных IP-адресах. Если вы предпочитаете использовать другие интерпретаторы DNS, вставьте их на место выделенных IP-адресов.
Это поможет клиентам изменить настройки DNS, чтобы туннель VPN использовался как шлюз по умолчанию.
(Необязательно) Изменение порта и протокола
По умолчанию сервер OpenVPN использует для подключения клиентов порт 1194 и протокол UDP. Если вам потребуется использовать другой порт из-за ограничений сети клиента, вы можете изменить номер порта . Если вы не храните веб-контент на сервере OpenVPN, вам подойдет порт 443 , поскольку его обычно не запрещают правила брандмауэра.
Чтобы заставить OpenVPN прослушивать порт 443, откройте файл server.conf и найдите строку, которая выглядит следующим образом:
Измените ее, указав порт 443:
Довольно часто этот порт также ограничивает протокол. В этом случае найдите строку proto под строкой port и измените протокол с udp на tcp :
Если вы действительно смените протокол на TCP, вам нужно будет изменить значение директивы explicit-exit-notify с 1 на 0 , поскольку эта директива используется только протоколом UDP. В противном случае при запуске службы OpenVPN возможны ошибки протокола TCP.
Найдите строку explicit-exit-notify в конце файла и измените значение на 0 :
Если вам не нужно использовать другие порт и протокол, лучше всего оставить эти настройки без изменений.
(Необязательно) Указание на учетные данные, отличающиеся от используемых по умолчанию
Если вы выбрали другое имя при вводе команды ./easyrsa gen-req server ранее, измените строки cert и key в файле конфигурации server.conf , чтобы они указывали на соответствующие файлы .crt и .key . Если вы использовали имя по умолчанию server , можно считать, что все уже настроено корректно:
После завершения редактирования сохраните и закройте файл.
Вы успешно завершили настройку общих параметров OpenVPN. На следующем шаге мы настроим сетевые параметры сервера.
Шаг 8 — Настройка конфигурации сети сервера OpenVPN
Чтобы OpenVPN мог правильно перенаправлять трафик через сеть VPN, необходимо изменить некоторые параметры конфигурации сети сервера. Прежде всего нужно изменить параметр IP forwarding, который определяет необходимость перенаправления IP-трафика. Это необходимо для реализации функций VPN, обеспечиваемых вашим сервером.
Чтобы изменить используемые по умолчанию настройки IP-передачи сервера OpenVPN, откройте файл /etc/sysctl.conf с помощью nano или предпочитаемого редактора:
Добавьте следующую строку в конец файла:
Сохраните файл и закройте его после завершения.
Чтобы прочитать файл и загрузить значения для текущей сессии, введите:
Теперь ваш сервер OpenVPN сможет перенаправлять входящий трафик из одного сетевого устройства на другое. Эта настройка гарантирует, что сервер сможет направлять трафик от клиентов, подключенных к виртуальному интерфейсу VPN, на другие физические сетевые устройства. Эта конфигурация будет передавать весь веб-трафик от вашего клиента через IP-адрес вашего сервера, а открытый IP-адрес клиента будет фактически скрыт.
На следующем шаге вам нужно настроить ряд правил брандмауэра, чтобы гарантировать корректную передачу входящего и исходящего трафика на вашем сервере OpenVPN.
Шаг 9 — Настройка брандмауэра
К настоящему моменту вы установили OpenVPN на ваш сервер, настроили его и создали ключи и сертификаты, необходимые вашему клиенту для доступа к VPN. Однако вы еще не предоставили OpenVPN какие-либо инструкции о том, куда нужно отправлять входящий веб-трафик от клиентов. Вы можете указать, как сервер должен обрабатывать клиентский трафик, добавив ряд правил брандмауэра и настроив конфигурацию маршрутизации.
Если вы выполнили предварительные требования, указанные в начале этого обучающего модуля, у вас на сервере должен быть установлен и запущен ufw . Чтобы разрешить OpenVPN через брандмауэр, вам нужно будет включить маскировку. Маскировка — это концепция таблиц iptables, на основе которой выполняется автоматическая трансляция сетевых адресов (NAT) для правильной маршрутизации клиентских соединений.
Прежде чем открыть файл конфигурации брандмауэра для добавления правил маскарадинга, нужно предварительно найти публичный сетевой интерфейс компьютера. Для этого введите:
Строка после слова «dev» в этой команде — это ваш публичный интерфейс. Например, в этом результате показан интерфейс с именем eth0 , который выделен ниже:
Когда у вас будет интерфейс, связанный с маршрутом по умолчанию, откройте файл /etc/ufw/before.rules , чтобы добавить соответствующую конфигурацию:
Правила UFW обычно добавляются с помощью команды ufw . Правила, перечисленные в файле before.rules , считываются и активируются до загрузки обычных правил UFW. Добавьте в верхнюю часть файла выделенные ниже строки. После этого будет задана политика по умолчанию для цепочки POSTROUTING в таблице nat , и любой трафик из VPN будет маскироваться. Обязательно замените eth0 в строке -A POSTROUTING на интерфейс, определенный с помощью следующей команды:
Сохраните файл и закройте его после завершения.
Затем вам нужно будет указать UFW разрешать перенаправление пакетов по умолчанию. Для этого откройте файл /etc/default/ufw :
Найдите в файле директиву DEFAULT_FORWARD_POLICY и измените значение с DROP на ACCEPT :
Сохраните файл и закройте его после завершения.
Затем измените настройки брандмауэра, чтобы разрешить трафик OpenVPN. Если вы не изменили порт и протокол в файле /etc/openvpn/server.conf , вам нужно будет открыть трафик UDP на порту 1194 . Если вы изменили порт или протокол, замените выбранные здесь значения.
Если вы забыли добавить порт SSH при выполнении обязательного обучающего модуля, добавьте его сейчас:
После добавления этих правил отключите и заново включите UFW, чтобы загрузить изменения из всех измененных файлов:
Теперь ваш сервер настроен для правильной обработки трафика OpenVPN. После создания правил брандмауэра мы можем запустить службу OpenVPN на сервере.
Шаг 10 — Запуск OpenVPN
OpenVPN работает как служба systemd , поэтому мы можем использовать systemctl для управления. Мы настроим для OpenVPN запуск при загрузке, чтобы вы могли подключаться к вашей VPN в любое время, пока ваш сервер работает. Для этого активируйте службу OpenVPN, добавив ее в systemctl :
Затем запустите службу OpenVPN:
Еще раз проверьте, что служба OpenVPN активна, воспользовавшись следующей командой. Вы должны увидеть в выводе active (running) :
Мы успешно завершили конфигурацию OpenVPN на стороне сервера. Далее вам нужно будет настроить клиентский компьютер и подключиться к серверу OpenVPN.
Шаг 11 — Создание инфраструктуры конфигурации клиентских систем
Создание файлов конфигурации для клиентов OpenVPN может быть связано с этой задачей, поскольку каждый клиент должен иметь собственную конфигурацию, и каждая из этих конфигураций должна соответствовать параметрам, заданным в файле конфигурации сервера. Вместо создания единого файла конфигурации, который можно использовать только для одного клиента, на этом шаге мы определим процесс создания инфраструктуры клиентской конфигурации, который вы сможете использовать для быстрого генерирования файлов конфигурации. Вначале вы создадите «базовый» файл конфигурации, а затем сценарий, который позволит по мере необходимости генерировать уникальные файлы конфигурации клиентов, сертификаты и ключи.
Для начала создайте новую директорию для хранения файлов конфигурации клиентов в ранее созданной директории client-configs :
Затем скопируйте файл с образцом конфигурации клиента в директорию client-configs , чтобы использовать ее как базовую конфигурацию:
Откройте новый файл в nano или предпочитаемом текстовом редакторе:
Найдите в файле директиву remote . Она указывает клиенту адрес сервера OpenVPN, т. е. публичный IP-адрес вашего сервера OpenVPN. Если вы решили изменить порт, который будет прослушивать сервер OpenVPN, вам нужно будет заменить 1194 на выбранный порт:
Протокол должен соответствовать значениям, используемым в конфигурации сервера:
Разкомментируйте директивы user и group , удалив символ ; в начале каждой строки:
Найдите директивы, задающие ca , cert и key . Поставьте знак комментария перед строками этих директив, поскольку вы вскоре добавите сертификаты и ключи в сам файл:
Затем закомментируйте директиву tls-auth , поскольку вы добавите ta.key прямо в файл конфигурации клиента (а сервер настроен на использование tls-crypt ):
Создайте зеркало настроек cipher и auth , заданных в файле /etc/openvpn/server/server.conf :
Затем добавьте в файл директиву key-direction . Вы должны задать значение «1», чтобы VPN правильно работала на клиентском компьютере:
В заключение добавьте несколько закомментированных строк для обработки различных методов, которые клиенты VPN на базе Linux будут использовать для разрешения DNS. Также мы добавим два похожих, но отдельных набора закомментированных строк. Первый набор предназначен для клиентов, которые не используют systemd-resolved для управления DNS. Эти клиенты используют утилиту resolvconf для обновления информации DNS для клиентов Linux.
Теперь добавьте другой набор строк для клиентов, которые используют systemd-resolved для разрешения DNS:
Сохраните файл и закройте его после завершения.
На шаге 13 «Установка конфигурации клиента» этого обучающего модуля вы узнаете, как определять, работает ли разрешение DNS для клиентов Linux, и какой раздел нужно разкомментировать.
Далее создайте простой скрипт, который скомпилирует базовую конфигурацию с соответствующим сертификатом, ключом и файлами шифрования, и поместите сгенерированную конфигурацию в директорию
/client-configs/files . Откройте новый файл с именем make_config.sh в директории
Добавьте в файл следующее:
Сохраните файл и закройте его после завершения.
Прежде чем продолжить, отметьте этот файл как исполняемый, введя следующую команду:
Этот скрипт создает копию созданного вами файла base.conf , собирает все созданные вами для клиента файлы сертификатов и ключей, извлекает их содержимое, добавляет их в копию базового файла конфигурации и экспортирует все это в новый файл конфигурации клиента. Это означает, что вся необходимая информация хранится в одном месте, и вам не нужно по отдельности управлять файлами конфигурации клиента, сертификатами и ключами. Преимущество такого метода состоит в том, что если в будущем вам потребуется добавить клиент, вы можете просто запустить этот скрипт, чтобы быстро создать файл конфигурации, а вся важная информация будет храниться в одном удобном для доступа месте.
Учтите, что при добавлении каждого нового клиента вам нужно будет сгенерировать для него новые ключи и сертификаты, прежде чем запускать этот скрипт и генерировать файл конфигурации. На следующем шаге вы сможете потренироваться в использовании этого скрипта.
Шаг 12 — Создание конфигураций клиентов
Если вы следовали указаниям руководства, на шаге 6 вы создали клиентский сертификат и ключ с именами client1.crt и client1.key соответственно. Вы можете сгенерировать файл конфигурации для этих учетных данных, перейдя в директорию
/client-configs и запустив скрипт, созданный в конце предыдущего шага:
При этом файл client1.ovpn будет создан в директории
Этот файл нужно будет переместить на устройство, которое вы планируете использовать в качестве клиента. Например, это может быть ваш локальный компьютер или мобильное устройство.
Хотя конкретные приложения для передачи зависят от операционной системы устройства и ваших предпочтений, один из наиболее надежных и безопасных способов — использовать SFTP (протокол передачи файлов SSH) или SCP (защищенное копирование) на стороне сервера. При этом файлы аутентификации VPN вашего клиента будут передаваться через шифрованное соединение.
Здесь представлен пример команды SFTP, которую можно запустить с локального компьютера (под управлением macOS или Linux). Она будет копировать файл client1.ovpn , который мы создали на последнем шаге, в вашу домашнюю директорию:
Ниже представлено несколько инструментов и обучающих руководств для безопасной передачи файлов с сервера OpenVPN на локальный компьютер:
Шаг 13 — Установка клиентской конфигурации
В этом разделе рассказывается о том, как установить клиентский профиль VPN в Windows, macOS, Linux, iOS и Android. Эти инструкции не зависят друг от друга, так что вы можете сразу перейти к той, которая относится к вашему устройству.
Подключение OpenVPN будет иметь имя, совпадающее с именем файла .ovpn . В этом обучающем руководстве это означает, что соединение будет иметь имя client1.ovpn , что соответствует первому сгенерированному клиентскому файлу.
Windows
Установка
Загрузите клиентское приложение OpenVPN для Windows со страницы загрузки OpenVPN. Выберите подходящую версию программы установки для вашей версии Windows.
Примечание. Для установки OpenVPN требуются права администратора.
После установки OpenVPN, скопируйте файл .ovpn в:
При запуске OpenVPN профиль будет автоматически обнаружен и сделан доступным.
Вы должны запускать OpenVPN от имени администратора каждый раз, даже если используете учетную запись администратора. Чтобы вам не нужно было при каждом запуске VPN нажимать правую кнопку мыши и выбирать Запуск от имени администратора, такой запуск следует настроить в учетной записи администратора. Это также означает, что обычным пользователям нужно будет ввести пароль администратора, чтобы использовать OpenVPN. Обычные пользователи не смогут правильно подключиться к серверу, если у приложения OpenVPN на клиентской системе нет прав администратора, поэтому необходим повышенный уровень привилегий.
Чтобы настроить приложение OpenVPN для запуска от имени администратора при каждом запуске, нажмите правой кнопкой мыши на его ярлык и выберите пункт Свойства. Внизу вкладки Совместимость нажмите кнопку Изменить параметры для всех пользователей. В новом окне установите отметку Запускать эту программу от имени администратора.
Подключение
При каждом запуске графического интерфейса OpenVPN операционная система Windows будет спрашивать, разрешаете или вы этой программме внести изменения на вашем компьютере. Нажмите Да. При запуске клиентского приложения OpenVPN в области задач появляется значок приложения, с помощью которого вы сможете подключать и отключать соединение VPN; соединение VPN не устанавливается автоматически.
После запуска OpenVPN нажмите правой кнопкой на значок OpenVPN в области задач, чтобы создать соединение. Откроется контекстное меню. Выберите client1 в верхней части меню (это ваш профиль client1.ovpn ) и нажмите Подключиться.
Откроется окно состояния, где будут выведены данные журнала при установке соединения, и после подключения клиента будет выведено сообщение.
Отключение от VPN выполняется аналогично: перейдите в область задач, нажмите значок приложения OpenVPN правой кнопкой мыши, выберите профиль клиента и нажмите Отключиться.
macOS
Установка
Tunnelblick — бесплатный клиент OpenVPN с открытым исходным кодом для macOS. Вы можете загрузить последний образ этого клиентского приложения со страницы загрузки Tunnelblick. Дважды нажмите загруженный файл .dmg и следуйте указаниям по установке.
В конце процесса установки Tunnelblick спросит, есть ли у вас файлы конфигурации. Укажите ответ У меня есть файлы конфигурации и дайте Tunnelblick завершить работу. Откройте окно Finder и дважды нажмите client1.ovpn . Tunnelblick установит клиентский профиль. Для этого требуются привилегии администратора.
Подключение
Запустите Tunnelblick, дважды щелкнув значок Tunnelblick в папке Приложения. После запуска Tunnelblick в панели меню в правом верхнем углу экрана появится значок Tunnelblick для управления соединениями. Нажмите на значок, а затем нажмите на пункт меню Подключить client1, чтобы создать соединение VPN.
Linux
Установка
Если вы используете Linux, существуют различные инструменты в зависимости от вашего дистрибутива. Диспетчер окон или среда рабочего стола также могут содержать утилиты для подключения.
Однако проще всего будет использовать для этой цели программное обеспечение OpenVPN.
В Ubuntu или Debian вы можете установить его так же, как и на сервере, введя следующую команду:
В CentOS вы можете активировать репозитории EPEL и выполнить установку, введя следующую команду:
Настройка клиентов, использующих systemd-resolved
Вначале определите, использует ли ваша система systemd-resolved для разрешения DNS, проверив файл /etc/resolv.conf :
Если ваша система настроена для использования systemd-resolved для разрешения DNS , IP-адрес после опции nameserver будет иметь значение 127.0.0.53 . Также в файле должны быть комментарии, в частности информация о том, как systemd-resolved управляет файлом. Если у вас отображается не 127.0.0.53 , а другой IP-адрес, то есть вероятность, что ваша система не использует systemd-resolved . В этом случае вы можете перейти к следующему разделу, предназначенному для настройки клиентов Linux, использующих скрипт update-resolv-conf .
Для поддержки этих клиентов нужно предварительно установить пакет openvpn-systemd-resolved . Он содержит скрипты, принудительно запускающие использование systemd-resolved для разрешения DNS сервером VPN.
После установки пакета настройте клиент для его использования и отправки всех запросов DNS через интерфейс VPN. Откройте файл VPN клиента:
Разкомментируйте следующие строки, добавленные вами ранее:
Настройка клиентов, использующих update-resolv-conf
Если ваша система не использует systemd-resolved для управления DNS, проверьте наличие в вашем дистрибутиве скрипта /etc/openvpn/update-resolv-conf :
Если в вашем клиенте имеется файл update-resolv-conf , измените ранее переданный файл конфигурации клиента OpenVPN:
Разкомментируйте три добавленные вами строки для изменения настроек DNS:
Если вы используете CentOS, измените директиву group с nogroup на nobody для соответствия доступным группам дистрибутива:
Сохраните и закройте файл.
Подключение
Теперь для подключения к VPN вы можете просто указать команде openvpn файл конфигурации клиента:
Эта команда должна установить подключение к вашей VPN.
Примечание. Если ваш клиент использует systemd-resolved для управления DNS, проверьте правильность применения настроек, запустив команду systemd-resolve —status :
Результат будет выглядеть следующим образом:
Если вы видите IP-адреса серверов DNS, настроенные вами на сервере OpenVPN, и настройку
. для DNS Domain в выводе, это означает, что вы правильно настроили клиент для управления DNS на сервере VPN. Также вы можете проверить отправку запросов DNS через VPN используя сайт DNS leak test.com или другой подобный сайт.
Установка
Найдите в магазине приложений iTunes App Store приложение OpenVPN Connect, официальный клиент OpenVPN для iOS, и установите его. Чтобы переместить конфигурацию клиента iOS на устройство, подключите его к компьютеру напрямую.
Здесь описан процесс завершения передачи с помощью iTunes. Откройте iTunes на компьютере и нажмите iPhone > приложения. Прокрутите страницу до раздела Общий доступ к файлам и нажмите на приложение OpenVPN. Пустое окно справа OpenVPN Documents предназначено для общего доступа к файлам. Перетащите файл .ovpn в окно OpenVPN Documents.
Запустите приложение OpenVPN на iPhone. Вы получите уведомление, что новый профиль готов к импорту. Нажмите зеленый значок плюс, чтобы импортировать его.
Подключение
Приложение OpenVPN готово к использованию нового профиля. Установите соединение, передвинув кнопку Подключиться в положение Вкл. Для отключения передвиньте эту же кнопку в положение Выкл.
Примечание. Переключатель VPN в разделе Настройки нельзя использовать для подключения к VPN. Если вы попробуете сделать это, вы получите уведомление о том, что для подключения нужно использовать приложение OpenVPN.
Android
Установка
Откройте магазин приложений Google Play Store. Найдите приложение Android OpenVPN Connect, официальное клиентское приложение OpenVPN для Android, и установите его.
Вы можете переместить профиль .ovpn , подключив устройство Android к вашему компьютеру через интерфейс USB и скопировав файл. Если у вас в компьютере есть разъем для SD-карт, вы можете извлечь SD-карту из устройства, скопировать на нее профиль и вставить карту обратно в устройство Android.
Запустите приложение OpenVPN и нажмите меню FILE , чтобы импортировать профиль.
Затем перейдите в местоположение сохраненного профиля (на снимке экрана используется расположение /storage/emulated/0/openvpn ) и выберите файл .ovpn . Нажмите кнопку IMPORT , чтобы завершить импорт этого профиля.
Подключение После добавления профиля вы увидите следующий экран:
Для подключения нажмите кнопку-переключатель рядом с профилем, который вы хотите использовать. Вы увидите статистические данные вашего подключения в режиме реального времени и трафик, проходящий через ваш сервер OpenVPN:
Для отключения просто нажмите кнопку-переключатель слева еще раз. Вам будет предложено подтвердить, что вы хотите отключиться от VPN.
Шаг 14 — Тестирование соединения VPN (необязательно)
Примечание. Этот метод тестирования подключения VPN будет работать только в случае, если вы выбрали перенаправление всего трафика через VPN на шаге 7 при редактировании файла server.conf для OpenVPN.
После завершения установки нужно провести простую проверку, чтобы убедиться, что все работает нормально. Не активируйте соединение VPN, откройте браузер и перейдите в DNSLeakTest.
Сайт покажет IP-адрес, назначенный вашим интернет-провайдером и видный остальному миру. Чтобы проверить настройки DNS через этот же сайт, нажмите Расширенный тест, и вы увидите, какие серверы DNS вы используете.
Теперь подключите клиент OpenVPN к VPN вашего дроплета и обновите браузер. Вы увидите совершенно другой IP-адрес (адрес вашего сервера VPN), и именно этот адрес будет виден остальному миру. Итак, в приложении DNSLeakTest функция Расширенный тест проверит ваши настройки DNS и подтвердит, что вы используете параметры DNS, заданные вашей VPN.
Шаг 15 — Отзыв сертификатов клиента
Иногда вам может понадобиться отозвать клиентский сертификат, чтобы предотвратить дальнейший доступ к серверу OpenVPN.
Для этго используйте пример из предварительного обучающего модуля «Установка и настройка центра сертификации в 20.04» из раздела «Отзыв сертификата».
После отзыва сертификата для клиента с помощью этих инструкций вам нужно будет скопировать созданный файл crl.pem на ваш сервер OpenVPN в директорию /etc/openvpn/server :
Затем откройте файл конфигурации сервера OpenVPN:
Добавьте в конце файла опцию crl-verify , чтобы сервер OpenVPN проверял созданный нами список отзыва сертификатов при каждой попытке подключения:
Сохраните и закройте файл.
Перезапустите OpenVPN, чтобы завершить отзыв сертификата:
Клиент больше не сможет подключаться к серверу, используя старые учетные данные.
Чтобы запретить доступ другим клиентам, повторите эту процедуру:
- Для отзыва сертификата используется команда ./easyrsa revoke client_name .
- Создайте новый список CRL.
- Переместите новый файл crl.pem на сервер OpenVPN и скопируйте его в директорию /etc/openvpn/server/ , чтобы перезаписать старый список.
- Перезапустите службу OpenVPN.
С помощью этой процедуры вы можете отозвать любые сертификаты, которые ранее выпустили для вашего сервера.
Заключение
Теперь у вас должна быть полностью готовая к использованию виртуальная частная сеть, запущенная на вашем сервере OpenVPN. Вы можете просматривать веб-ресурсы и загружать контент, не беспокоясь о том, что злоумышленники смогут отслеживать вашу активность.
Для дальнейшей кастомизации вашей установки OpenVPN можно выполнить несколько шагов, например, настроить для вашего клиента автоматическое подключение к VPN или задать специальные правила и политики доступа для конкретного клиента. При выполнении этих действий по кастомизации OpenVPN вы должны ознакомиться с официальной документацией для OpenVPN.
Для настройки большего числа клиентов вам нужно выполнить шаги 6 и 11–13 для каждого дополнительного устройства. Чтобы запретить доступ клиентским системам, следуйте указаниям в шаге 15.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Создаём свой VPN-сервер IPsec / L2TP за пару минут на бесплатном VPS сервере от Oracle с ОС Ubuntu 20.04 (автоматизированная настройка)
По многочисленным просьбам трудящихся, после публикации моего предыдущего поста (Установка Ubuntu 20.04 на бесплатный VPS сервер от Oracle для нужд Умного дома) поменял приоритет тематики своих постов и сегодня создадим свой VPN-сервер.
Такс, с чего начать? )))
Выберем протокол для VPN.
Мне известны эти: OpenVPN, PPTP, IPsec L2TP и IKEv2.
OpenVPN — считается самым простым и популярным вариантом, у которого скорость, защита и надежность на высоком уровне, но требует установки клиентского приложения, что не всегда удобно.
L2TP/IPSec — собственно, именно этот протокол мы будем использовать в этой статье, т.к. найденный на github сценарий автоматической установки и настройки мне показался самым простым для новичков и «чайников» + подойдёт для установки не только на Ubuntu но и на Debian и CentOS. Недостаток этого протокола, пожалуй в том, что он считается медленным и стандартные порты может закрыть ваш интернет-провайдер или сетевой администратор.
PPTP — устаревший протокол, у которого конечно же достойная скорость подключения, но в плане защиты и конфиденциальности он на самом низком уровне и использовать его в проектах «Умного дома», я точно не рекомендую!
IKEv2 — считается протоколом с самой высокой степенью безопасности, стабильно подключается после разрыва соединения, быстрее, чем L2TP, но не очень простой в плане самостоятельной установки на сервер.
Я даже начал написание своего поста с него, адаптируя эту инструкцию под VPS сервер от Oracle:
но в итоге она мне показалось сложной для новичков и «чайников», удалил её и решил оставить просто эту ссылку на оригинал, для продвинутых пользователей 😉
На самом деле инструкций по ручной и автоматической установке VPN — сервера по любому протоколу в интернете существует +100500 и ещё столько же, поэтому напомню про свой disclaimer )))
Ну и наконец переходим к самому главному — установим VPN — сервер.
— Инкапсулирует весь трафик VPN в UDP — протокол ESP не нужен;
— Протестировано с Ubuntu, Debian, CentOS / RHEL и Amazon Linux 2
Вся наша установка сводится к запуску сценария автоматической настройки с githab, мы лишь подготовим систему, пропишем 20-и значный ключ IPSec, логин и пароль для VPN + откроем порты для VPN в VPS от Oracle.
Подключаемся через PuTTy по SSH к своему серверу (Как? В конце предыдущего поста мы это уже делали.)
1) Для получения списка новых пактов, выполните:
sudo apt-get update
2) Для выполнения обновления пакетов, выполните:
sudo apt-get upgrade
Не забываем нажать «»Y» — «Enter» ))
3) Скачиваем скрипт командой:
4) После завершения, открываем vpnsetup.sh для редактирования:
5) Сохраняем и закрываем файл, нажав CTRL + X, Y, а затем ENTER.
6) Запускаем скрипт и идём на пару минут пить кофе ))
В С Ё . Готово . 🙂
В случае с нашим бесплатном VPS сервере от Oracle конечно ещё не всё )))
Нужно ещё открыть порты UDP 500 и 4500 для VPN на VPS от Oracle.
Для этого открываем ссылку в письме, которая пришла после регистрации в Oracle, вводим логин и пароль и попадаем в свою учетку, где следуем по пути:Сети — Виртуальные облачные сети — vcn- (ВАШ) — Сведения о списках безопасности
где добавляем правила для входящего трафика:
Теперь В С Ё . Готово . 🙂
Если не знаете, как настроит клиентов IPsec / L2TP VPN, то можете почитать например — ЗДЕСЬ.
Скорость этого VPN соединения (локальная 80 МБ/сек) с сервером в Амстердаме у меня получилась такая:
Всем пока и «бобра» 😉
sudo iptables —policy INPUT ACCEPT
sudo iptables -F
sudo iptables -A INPUT -p tcp —dport 500 -m state —state NEW -j ACCEPT
sudo iptables -A INPUT -p tcp —dport 4500 -m state —state NEW -j ACCEPT
sudo netfilter-persistent save
sudo ufw disable
В посте, на который идет данный ответ, автор не упомянул такую штуку как WireGuard. Хотя в комментариях он упоминался. Как по мне, это реально самый простой метод поднять VPN туннель с высокой и стабильной скоростью.
Из реального опыта пользования:
Уже год ввиду некоторой специфики держу на нем сервера игры Minecraft + MySql + DiscordApps + HTTP траффик, ну и парочка девайсов для общего пользования интернетом.
Общая картина сети выглядит примерно так (paint master ON):
Извиняюсь за «пэинтность» картинки, нарисовал по быстрому в сплане.
Для общего понимания — через построенный VPN туннель на базе WireGuard у меня в месяц идет трафик порядка 4ТБ. Аптайм каналов равняется аптайму самих серверов. За год было только три сбоя с самим WG — два раза это обновления/патчи ПО, связанного с сетью, после чего трафик заворачивался в «дулю», и один раз хостер на основной VPS изменил настройки сети и у меня «отвалился» порт.
Пинги у игроков выходят крайне низкие, скорость доступа высокая, никаких заморочек для повторных соединений не требуется.
Из минусов WireGuard стоит отметить дополнительную нагрузку на ЦП, что на мобильных устройствах сказывается на повышенном потреблении заряда батареи.
Так что же это за зверь такой, WireGuard?
А теперь проще. Для запуска VPN-туннеля нам потребуется только 1 сервер, с которым мы будем соединятся и с которого мы будем «ходить» в сеть. На клиентских устройствах нет необходимости иметь «белый» Ip, пробрасывать порты и заниматься подобным безобразием, так как WG работает с помощью широковещательной рассылки — основной сервер «слушает» нужный порт и отвечает на приходящие запросы.
На примере ниже опишу как настроить канал клиент-сервер на примере Ubuntu 18.04 и Android, но для других ОС процесс практически не отличается, почитать можно на английском тут
В качестве заметки — рекомендую использовать для SSH Bitvise SSH Client, как по мне он очень удобный.
(Далее текст частично копипаста)
WireGuard поддерживает свой собственный репозиторий APT, из которого мы будем устанавливать пакет и обновлять его при появлении новой версии.
Обновите список пакетов и установите инструменты, необходимые для управления системными репозиториями. Скорее всего, у вас уже есть пакет на вашем компьютере:
Добавьте репозиторий WireGuard:
При появлении запроса нажмите Enter, чтобы продолжить. add-apt-repository также автоматически обновит список пакетов.
Установите пакет WireGuard:
WireGuard работает как модуль ядра, который скомпилирован как модуль DKMS. В случае успеха вы увидите следующий вывод:
При обновлении ядра модуль WireGuard будет скомпилирован с новым ядром.
Настройка.
WireGuard поставляется с двумя инструментами командной строки: wg и wg-quick, которые позволяют вам настраивать и управлять интерфейсами вашего туннеля.
Выполните следующую команду, чтобы сгенерировать открытый и закрытый ключи:
Файлы будут сгенерированы в каталоге /etc/wireguard. Вы можете просматривать файлы с помощью cat или less. Закрытый ключ никогда не должен никому передаваться.
Теперь, когда ключи сгенерированы, нам нужно настроить туннельное устройство, которое будет маршрутизировать трафик VPN.
Устройство можно настроить либо из командной строки с помощью ip и wg, либо путем создания файла конфигурации с помощью текстового редактора.
Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:
Интерфейс может быть назван как угодно, однако рекомендуется использовать что-то вроде include wg0 или wgvpn0. Настройки в разделе интерфейса имеют следующее значение:
Адрес – разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0. Используйте IP-адреса из диапазона, зарезервированного для частных сетей (10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16).
ListenPort – порт, на который WireGuard будет принимать входящие соединения.
PrivateKey – закрытый ключ, сгенерированный командой wg genkey. (Чтобы увидеть содержимое файла запуска: sudo cat /etc/wireguard/privatekey)
SaveConfig – при значении true текущее состояние интерфейса сохраняется в файле конфигурации при завершении работы.
PostUp – команда или скрипт, который выполняется до запуска интерфейса. В этом примере мы используем iptables для включения маскировки. Это позволит трафику покинуть сервер, предоставив VPN-клиентам доступ в Интернет. Обязательно замените ens3 после -A POSTROUTING, чтобы соответствовать имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс, выполнив следующую команду:
PostDown – команда или сценарий, который выполняется перед выключением интерфейса. Правила iptables будут удалены после отключения интерфейса.
Файлы wg0.conf и privatekey не должны быть доступны для чтения для обычных пользователей. Используйте chmod для установки разрешений 600:
Когда закончите, приведите wg0 интерфейс в действие, используя атрибуты, указанные в файле конфигурации:
Команда выдаст вывод, подобный следующему:
Запустите wg show wg0 для проверки состояния интерфейса и конфигурации:
sudo wg show wg0
interface: wg0
public key: r3imyh3MCYggaZACmkx+CxlD6uAmICI8pe/PGq8+qCg=
private key: (hidden)
listening port: 51820
Чтобы вывести интерфейс WG во время загрузки системы, выполните следующую команду:
sudo systemctl enable wg-quick@wg0
Сеть сервера и настройка брандмауэра
Чтобы NAT работал, нам нужно включить IP-пересылку. Откройте файл /etc/sysctl.conf и добавьте или раскомментируйте следующую строку:
Сохраните файл и примените изменения:
Если вы используете UFW для управления брандмауэром, вам нужно открыть UDP-трафик через порт 51820:
Вот и все. Пир Ubuntu, который будет действовать как сервер, был настроен.
Настройка клиентов Linux и других ОС.
Инструкции по установке для всех поддерживаемых платформ доступны по адресу https://wireguard.com/install/ . В системах Linux вы можете установить пакет с помощью менеджера дистрибутива и в MacOS с помощью brew. После установки WireGuard выполните следующие действия, чтобы настроить клиентское устройство.
Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Начните с создания открытого и закрытого ключей:
Создайте файл wg0.conf и добавьте следующее содержимое:
Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:
Адрес – разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0.
PrivateKey – Чтобы увидеть содержимое файла на клиентском компьютере, выполните: sudo cat /etc/wireguard/privatekey
Одноранговый раздел содержит следующие поля:
PublicKey – открытый ключ партнера, к которому вы хотите подключиться. (Содержимое файла сервера /etc/wireguard/publickey).
Конечная точка – IP-адрес или имя хоста узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, который прослушивает удаленный узел.
AllowedIPs – разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для узла и на который направляется исходящий трафик для этого узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.
Если вам нужно настроить дополнительные клиенты, просто повторите те же шаги, используя другой частный IP-адрес.
Добавьте клиентский узел на сервер
Последний шаг – добавить открытый ключ и IP-адрес клиента на сервер (выполнить команду на сервере):
Убедитесь, что вы изменили открытый ключ CLIENT_PUBLIC_KEY, сгенерированный на клиентском компьютере ( sudo cat /etc/wireguard/publickey), и измените IP-адрес клиента, если он другой. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.
После этого вернитесь на клиентский компьютер и откройте туннельный интерфейс.
Клиенты Linux
На клиентах Linux выполните следующую команду, чтобы открыть интерфейс:
Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашего клиентского компьютера должен направляться через него. Вы можете проверить соединение с:
Теперь осталось только открыть браузер, зайти на сайт 2ip.ru (или аналогичный), и увидеть Ip своего сервера VPN.
Чтобы остановить туннелирование, отключите интерфейс wg0:
sudo wg-quick down wg0
Теперь про Android.
Здесь все проще некуда. Для начала идем в плеймаркет и устанавливаем приложение WireGuard:
Далее жмем синий плюс внизу
Теперь осталось заполнить поля, согласно скриншоту ниже. Первый раздел идет как клиентский. После его заполнения жмем «Добавить пира» и вводим данные сервера. Не забудьте добавить публичный ключ клиента на сам сервер:
Остался только пункт «Все приложения». Если его оставить как есть — то VPN будет работать для всех приложений на вашем смартфоне. В случае, если вы хотите чтобы только некоторые приложения ходили в сеть через VPN, нажмите на данный пункт и выберете раздел «Исключить» или «Только включить». В первом случае, из VPN-туннеля будут исключены выбранные вами приложения, во втором случае в туннеле будут работать только указанные.
После завершения настройки останется в главном меню только включить ползунок напротив вашего туннеля. На сервере можно будет проверить подключившегося клиента как в мануале выше:
Создаём свой VPN сервер IPsec / L2TP + Wireguard.
Будем ходить в интернет легко и по большому.
Во-первых спасибо амиго HUNY за интересный и полезный цикл постов.
Все повторяется без проблем, хотя я столкнулся с одной неожиданностью и одной трудностью.
Неожиданностью оказался звонок из Оракла, видимо из-за резкого наплыва пользователей они решили в ручном режиме что-то провер[и|я]ть. Мне позвонила англоговорящая тётенька, представилась что она из Оракла, я спросил чем бы я ей мог помочь, она сказала что хочет узнать как меня зовут и в какой компании я работаю. Я подтвердил что меня зовут Вася Пупкинсон, а вот насчет компании я сказал, что я написал в регистрационной форме «Home» поскольку собираюсь протестировать их сервисы исключительно в личных целях. Видимо я был достаточно вежлив и убедителен так что она сказала что немедля отправит мне имейл с подтверждением регистрации и доступом к телу (сервера).
Амиго HUNY написал очень толковую инструкцию, так что в скором времени у меня был свой работающий VPN сервер, но . возникла маленькая трудность — мой телефон Xiaomi Redmi Note 8T напрочь отказался подключаться к этому серверу. Быстрое гугление показало что я не одинок в своих проблемах, пользователи xiaomi уже давно жалуются на неработающий vpn в телефонах https://c.mi.com/thread-2569606-1-0.html?mobile=no
Я подумал — а что если мне, на этот уже работающий VPN сервер, сверху еще доставить альтернативный vpn сервер Wireguard, тогда может быть можно будет подключаться к vpn хоть так хоть эдак. Не буду рассказывать как я боролся со всяческим файрволами, перейду сразу к инструкциям.
Итак по инструкциям HUNY вы получили работающий VPN сервер.
Добрые люди приготовили для нас легкий инсталлятор Wireguard, он лежит на https://github.com/angristan/wireguard-install
Зайдите в свой сервер и терминале напишите команды
Скрипт задаст вам несколько вопросов и быстренько всё установит:
Welcome to the WireGuard installer!
I need to ask you a few questions before starting the setup.
You can leave the default options and just press enter if you are ok with them.
IPv4 or IPv6 public address: СЮДА ВЫ ВПИСЫВАЕТЕ РЕАЛЬНЫЙ IP ВАШЕГО СЕРВЕРА
Public interface: ens3
WireGuard interface name: wg0
Server’s WireGuard IPv4: 172.22.22.1 ЕСЛИ В ВАШЕЙ ЛОКАЛКЕ НЕТ АДРЕСОВ 172.22.x.x ТОГДА ПИШИТЕ ЭТО
Server’s WireGuard IPv6: fd42:42:42::1
Server’s WireGuard port [1-65535]: 4600 ПИШИТЕ 4600, ПОТОМ ФАЙРВОЛ БУДЕМ НАСТРАИВАТЬ
First DNS resolver to use for the clients: 94.140.14.14
Second DNS resolver to use for the clients (optional): 94.140.15.15
Okay, that was all I needed. We are ready to setup your WireGuard server now.
You will be able to generate a client at the end of the installation.
Press any key to continue.
Через несколько минут скрипт все установит, задаст еще пару вопросов
Tell me a name for the client.
The name must consist of alphanumeric character. It may also include an underscore or a dash and can’t exceed 15 chars.
Client name: Xiaomi8T ИМЯ ВАШЕГО ПЕРВОГО КЛИЕНТА ДЛЯ ВПН, ПРИДУМАЙТЕ ЧТО НИБУДЬ
Client’s WireGuard IPv4: 172.22.22.2 АДРЕС ДЛЯ НЕГО, ОСТАВЬТЕ ПО УМОЛЧАНИЮ
Client’s WireGuard IPv6: fd42:42:42::2
Here is your client config file as a QR Code:
и выведет на экран картинку QR кода.
Оставьте это окно терминала как есть, оно вам пригодится чтобы не вводить руками в телефон все данные для vpn подключения. Или прямо сейчас возьмите смартфон, установите на него клиент WireGuard https://play.google.com/store/apps/details?id=com.wireguard.
в клиенте нажмите на создание нового соединения и сосканируйте QR код и пока отложите смартфон, нам надо будет еще немного поработать напильником.
Если вы не сосканировали код тогда откройте еще одно соединение с сервером (запустите еще раз putty). Напишите команду
sudo nano /etc/iptables/rules.v4
найдите там строку
-A INPUT -p udp -m multiport —dports 500,4500 -j ACCEPT
и сделайте из нее
-A INPUT -p udp -m multiport —dports 500,4500,4600 -j ACCEPT
Сохраните файл Ctrl-X Y и Enter
sudo nano /etc/wireguard/wg0.conf
Найдите там длинную строку
PostUp = iptables -A FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
В этой строке все -A на поменять на -I (i большое) так что строка будет вот такой
PostUp = iptables -I FORWARD -i ens3 -o wg0 -j ACCEPT; iptables -I FORWARD -i wg0 -j ACCEPT; iptables -t nat -I POSTROUTING -o ens3 -j MASQUERADE; ip6tables -I FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -I POSTROUTING -o ens3 -j MASQUERADE
Сохраните файл Ctrl-X Y и Enter
И последнее действие, надо в глобальном Оракловском файрволе добавить проброс порта 4600 (вспоминайте инструкцию HUNY, он там прокидывал порты 500 и 4500) см. картинку ниже.
Перезагрузите сервер sudo reboot и теперь можно пробовать подключаться смартфоном.
Клиенты WireGuard для различных ОС можно скачать тут — https://www.wireguard.com/install/
Пока мы с вами создали подключение для одного клиента/устройства, чтобы создать еще подключения запустите в терминале еще раз скрипт
Как фантастический рассказ прочитал. Не понял не хрена, но интересно было.+
Сервер поднялся, скрипт установился, порты открылись.. Подключиться — не получается) где косяк-то.
Ответ на пост «CloudFlare WARP + WireGuard через NetworkManager»
Вы в очень скором времени обнаружите, что заворачивая весь домашний трафик через впн, станут недоступны часть внутрироссийских ресурсов которые либо решили закуклится внутри страны, либо в какой то момент ДДОСов отключили доступность и забыли откатить, либо просто имеют кривых админов-проектировщиков, которые сделали херню. Так же, поскольку вы используете публичный сервис, многие сайты на своей стороне добавили в блоклист по разным причинам подсети сервиса. Следовательно, вам понадобится внятный механизм маршрутизации с возможностью писать эксклюды. Кинетик в этом смысле, достаточно хороший инструмент, т.к имеет возможность отдавать клиентам разные профили + имеет возможность сбоку поставить Entware, где возможно реализовать работающие механизмы удобного маршрутизирования.
И, при всем уважении, VPS с односкриптовой установкой WG там, гораздо проще. Дополнительно, когда вам потребуется какой-то еще протокол, вы сможете это сделать. И дополнительно, все что массово-публичное, в первую очередь попадает под идиотизм РКН и прочих организаций.
CloudFlare WARP + WireGuard через NetworkManager
Долгое время пользовался ssh-туннелем для «разблокировки» некоторых сетевых ресурсов, доступ к которым был ограничен для IP Российского диапазона (ну, драйверы там скачать с сайта производителя, и т.п.).
Но — всему приходит конец. Моему терпению — тоже. Надоело постоянно переключать потребителей на работу через прокси (privoxy), чтобы завернуть трафик в socks-прокси туннеля. TOR стали прикручивать, что привело к очень долгому поиску мостов. И лень моя победила (в очередной раз).
Очевидно — нужен был способ попроще, да ещё — без особых затрат. Ставить VPN сервер (в том или ином виде) на VPS — хотелось ещё меньше, чем кидать туннель. Всякие платные прокси (типа Mullvad) — они удобны, позволяют выбрать «точку выхода», но — надо изыскивать возможность их оплатить. Бесплатные — обычно, работают так себе.
Тут я вспомнил, что есть же CloudFlare и его WARP, причем — в бесплатной версии, да со всей мощью клаудфлэровских серверов, да без ограничений скорости, да ещё и — должен, теоретически, работать через нативный клиент WireGuard. «Надо попробовать» — подумал Штирлиц.
Настройка WARP в Linux
В целом, процесс достаточно понятный, на современных системах — проблем быть не должно (на современных — это где Network Manager поддерживает WireGuard, иначе — можно и через консоль поднимать/гасить интерфейс VPN, но это менее удобно).
Сгенерировать конфиг для WARP — консольной утилитой или онлайн-генератором на её базе. Ещё есть неофициальный CLI, мне он не пригодился.
Полученный конфиг можно сунуть в /etc/wireguard/ и попробовать поднять через systemctl start wg-quick@название-конфига.conf. Но вряд ли это заработает, конфиг придется править.
Конфиг WireGuard для WARP
А чтобы не править его, передергивая интерфейс вручную из консоли, — проще сразу добавить в Network Manager. Подобрать рабочие настройки там, затем — перенести в конфиг. И получить основной (через графический интерфейс) и резервный (из консоли) способы работы с WARP. Чем и займёмся.
Настройка Network Manager
Тут всё тоже несложно: ПКМ на аплете менеджера — Соединения VPN — Настроить VPN — WireGuard — ‘+’ (добавить новое соединение).
Дальше настроить по картинке (скопировать значения из файла конфига):
Но вот адрес для Endpoint придется поподбирать — на разных провайдерах работают разные IP. Я прошелся по адресам с 162.159.193.0 по 162.159.193.10, пока не нашел работающий.
В целом — соединение уже должно работать (надо только Address в Параметры IPv4 вписать, как ниже показано), проверить можно через 2ip.ru . Вот такая картина у меня:
Подключается не всегда с первого раза, бывает, нужно несколько раз вкл/выкл VPN.
Google DNS и Wire Guard WARP
Но радость была бы не полной, если бы не ещё одна чудесная возможность WireGuard — он позволяет для соединения легко поменять адрес DNS сервера. Это не защитит от утечки DNS на сто процентов, но позволяет обойти блок, выставляемый на некоторых ресурсах на основе географической принадлежности DNS сервера (а клаудфлэровский — в Москве).
В настройки IPv4 надо вписать гугловый DNS, в настройки IPv6 — можно по аналогии (IPv6-адрес DNS ищется в гугле же), а можно и обойтись только IPv4.
WireGuard Google public DNS
Итого
Вот теперь «разблокировка» должна работать нормально.
Из плюсов — VPN включается сразу на уровне системы, приложения ходят через него. Не надо, как в случае с ssh-туннелем, заворачивать приложения для работы с через туннель.
Второй плюс — ровно тем же способом можно включить WARP на Android. Клиент WireGuard под Android есть (ставил из F-Droid), надо только поправить сгенерированный конфиг по аналогии (как в заметке), затем — импортировать его в клиенте на телефоне. Всё!
Следующим шагом — можно настроить подключение WARP на роутере, чтобы всю внутреннюю сеть пускать в интернет через VPN. Я на своём Keenetic планирую так и сделать, но это «уже совсем другая история».
Xfce 4.18 — превращается в KDE ? Удивил! Новое в elementaryOS (В текстовом формате)
Обновление elementaryOS 6.1
Основная работа компании направлена на разработку EOS версии 7.0, но при этом они умудряются производить обновления текущих версий, хоть и очень медленно и долго.
Немного про дистрибутив
Изначально дистрибутив был основан на всеми известном Ubuntu, использует её пакетную базу, и при этом развивает свое собственное рабочее окружение Pantheon, напомним что в Ubuntu на данный момент, по умолчанию используется GNOME, не считая отводки от канонов по типу xfce, kde, lxqt и т.д.
Особое внимание в Pantheon уделяется внешнему виду и минимализму. Для данного дистрибутива пишут свои программы. Из особенностей EOS так-же отмечается магазин приложений, где многие продукты скачиваются по принципу: «Плати сколько хочешь или не плати», правда работает это не на все приложения, на некоторых стоит зафиксированная цена. Кстати говоря, при скачивании образа дистрибутива с официального сайта, так-же настойчиво просят заплатить за него, что можно так-же благополучно не делать, но факт есть факт. Автор видеоролика «Pingvinus», опасается что дистрибутив и вовсе станет платный.
Обновление «Проводника»
Теперь в EOS 6.1 можно вызвав контекстное меню, выбрать режим при котором клики по папкам, будут выделять их, что несомненно удобно для тех, кто работает с папками или файловыми системами.
Так-же присутствует изменение в горячих клавишах и ряд исправленных проблем, что не может ни радовать.
Представлена новая программа
В EOS 6.1 была представлена новая программа для разработчиков, название ей: «Icon Browser» — данная утилита позволяет интегрировать системные иконки в свои программы, позволяя совершать поиск по иконкам и выдавая пример кода, который можно легко скопировать и вставить в нужном месте.
Как выглядит программа:
Изменения в системе обоев на рабочем столе
В новой версии дистрибутива, теперь загруженные пользователем обои будут появляться сверху, а не как это было сделано снизу.
Изменение крошечное и так-же была добавлена функция отмены при удалении обоев из списка, чтобы пользователь случайно не мог их удалить.
Обновление терминала
В EOS 6.1 была обновлена система оформления терминала, как пишут разработчики, это хорошо сказалось на производительности.
Теперь в меню приложения можно выбрать использование системной темы или настроить оформления самим, так-же появилась новая бежевая тема.
Синхронизация списка дел
В утилите для создания списков дел, появились улучшения синхронизации, добавлена автоматическая синхронизация при выборе списков — а так-же поддержка автономного режима.
Обновление «CODE»
В их собственном текстовом редакторе кода для разработчиков, добавлена поддержка регулярных выражений при поиске текста, а в боковой панели теперь показываются скрытые папки. Теперь можно переключать ветки GIT, если есть неотслеживаемые файлы.
Улучшенная поддержка принтеров
В EOS 6.1 появилась улучшенная поддержка принтеров, так-же возможность очистки очереди печати для каждого принтера по отдельности. Был обновлен интерфейс диалога дял работы с принтерами.
Переработка некоторых настроек
Были переработаны некоторые настройки рабочего стола, а так-же многозадочности. Теперь можно настроить каждый угол и даже задать свою собственную комманду при касании курсора угла, что несомненно плюс.
Долгожданный резил XFCE 4.18
Теперь речь пойдет об рабочем окружении XFCE, коротко о нем:
Xfce — это облегченная среда рабочего стола для UNIX-подобных операционных систем. Она стремится быть быстрой и потреблять мало системных ресурсов, при этом оставаясь визуально привлекательной и удобной для пользователя.
Что нового?
Обновление основной библиотеки.
Зависимости Xfce 4.18 изменены и скомпилированы с использованием следующих версий.
Так-же теперь настройки апплета «clock», является не только настройкой времени но теперь и даты, что очень и удобно, ведь они теперь одно целое, а не два отдельных компонента.
Ещё было исправлено масштабирование интерфейса, а так-же размытие иконок из-за него.
Обновление «Проводника» XFCE 4.18
Одним из самых заметных изменений, это внешний вид проводника, теперь его можно разделить на две части.
В режиме просмотра таблицы теперь можно вывести количество директорий и добавлена новая колонка: «Дата создания файла».
Добавлена новое отдельное место в боковой панели, для предпросмотра изображений. Так-же её можно разместить справа как отдельную панель.
Цвета файлов
Ещё из нововведений это подсветка файлов с помощью настраиваемого цвета, причем для каждого файла можно установить как цвет фона, так и шрифта.
Очень интересная функция, странно что она впервые не вышла в KDE:
Не отходя от проводника, можно так-же отметить что теперь, появилась редактирование панели инструментов в верхнем меню:
Поиск файлов
Теперь поиск файлов доступен прямо в проводнике, что несомненно удобно!
Заключение
Изменения были глобальные, многие интересные и очень полезные. ElementaryOS в этом плане порадовал меньше всего, но и там были полезные фишки. Данная статья является переводом в текст видеоролика: https://www.youtube.com/watch?v=YmGlQq3H-o4; По просьбе пользователя из Pikabu. Спасибо что остаетесь со мной, всем хорошего вчера!
Как я делал умный дом
Началось всё с того, что я затеял ремонт в новостройке. Из опыта жизни в предыдущей квартире вынес ненависть к слепящему свету в туалете ночью. Так появились мысли об умном доме.
При этом хотелось, чтобы при каких-то сбоях «умной» техники, дом либо сам по себе, либо моими минимальными усилиями превращался в обычный «тупой» дом. А то ведь жена все мои эксперименты проклянет.
Так же хотелось, чтобы «ум» дома заключался в сценариях, а не в управлении лампочкой с мобилки.
Прочитал 2 раза весь интернет. И остановился на диммерах Fibaro Dimmer 2, работающих по технологии z-wave. Не могу ясно объяснить почему я выбрал z-wave, а не zigbee. Но субъективно z-wave показался каким-то более надежным.
Эти диммеры устанавливаются под выключатели и соответственно позволяют никак не ограничивать себя в выборе выключателя и светильника. Что в плане дизайна очень удобно. Отсюда возникло особое требование к электрику — завести во все выключатели в квартире нулевой провод. Fibaro Dimmer 2 умеет работать и без «нуля». Но там есть свои нюансы.
Я решил, пока есть такой шанс, предусмотреть возможность в будущем любой выключатель сделать умным. Я не буду делать их сразу все умными, понятия не имею зачем оно мне может понадобиться. Но если вдруг в будущем какие-то мысли в голову придут, такая возможность будет.
Таким образом, благодаря Home Assistant диммеры в санузлах меняют яркость освещения по расписанию. И ночью в меня больше не светит прожектор.
Другая идея, которая в течение ремонта пришла в голову — аварийная подсветка коридора (ну чтобы ночью не совсем-совсем темно было). Она изначально была запланирована с проходными выключателями. Но аппетит приходит во время еды и я подумал, что было бы интересно автоматически включать её в темное время суток.
Так как выключатель здесь не один, решение использованное в санузлах не годилось. Тут я нашел Qubino DIN Dimmer. Он так же управляется через z-wave и устанавливается на DIN-рейку в щиток. Соответственно вместо обычной схемы проходных выключателей, здесь мне понадобилось завести все выключатели и освещение в щиток и там уже подключить через диммер.
К моему удивлению электрик с трудом понял что я от него хочу, ему хотелось обычную схему проходных выключателей сделать. Мы это долго обсуждали, но в итоге справились.
На самом деле немного перебор и хватило бы реле, т.к. функцией диммирования я в итоге и не пользуюсь. Home Assistant включает подсветку на закате и выключает на восходе.
На этом было всё. Ремонт закончился, мы заехали. Но тут я обнаружил, что вентиляционная установка поддерживает работу через протокол modbus и её тоже можно подключить к Home Assistant.
Первый сценарий тут — зависимость приточной температуры от температуры вытягиваемого воздуха. Если из квартиры выходит слишком теплый воздух, то на вход подается 18 градусов. Если температура ниже комфортной планки, то 20 градусов. Это конечно не заменяет кондиционер. Не те мощности. Но добавляет капельку комфорта. Ну и экономия электричества небольшая. Тут я еще ищу оптимальные цифры.
В гостинной стоит монитор воздуха Qingping Air Monitor Lite. Который подключился к Home Assistant через Mi Home. Это позволило сделать сценарий запуска вентустановки в интенсивном режиме при превышении порога содержания CO2.
Сам Qingping Air Monitor Lite мне нравится. Но не нравится, что он работает через облако. Если кто-то посоветует аналог работающий локально, я был бы благодарен.
Вот так на текущий момент выглядит мой умный дом. Еще я знаю, что посудомойку можно подключить к Home Assistant. Но пока не придумал, зачем это может быть нужно.
Из планов на будущее, хотелось бы иметь мониторы воздуха не только в гостиной. Но Qingping-и я покупать не хочу по описанной выше причине, а хорошей замены еще не нашел.
Еще хочется управлять вентиляторами вытяжки в санузлах, когда влажность выше заданной планки. Тут уже начинает сказываться то, что ремонт завершен и ничего глобально не переделать. Заказал на али датчики влажности и температуры HEIMAN, жду. Тоже z-wave. Работают от батареек, отправляют показания раз в 2 часа, либо когда показания выходят за установленные рамки. Это конечно решает мою задачу, но не так круто как если бы они отправляли показания в реальном времени, батарейку нужно экономить. Ну и сюда же понадобятся еще реле для включения вентилятора. Планирую поставить под выключатель. Пока не купил, но там и Fibaro, и Qubino имеют что сказать, я думаю, проблем не будет. Тем более нулевой провод у меня там есть и ждет своего часа.
Такая вот моя история.
Сканер Epson perfection 3590 photo и Ubuntu 22.04
Значительное время возился пытаясь подружить сканер Epson perfection 3590 photo с Ubuntu 22.04 . Перечитаны форумы, применены всевозможные руководства и лайфхаки, под конец обновил ядро до 5.19 в надежде на добавленный список драйверов для поддержки старого оборудования. Ну ничего не помогает.
Сегодня воткнул в соседнюю машину с Kubuntu 22.04 и.. о чудо, сканер работает. Тыааак… ОС ни при чём.
Идём в BIOS пациента (материнка AsRock fm2a68m dg3+) /расширенная/ Контроллер USB3/ переключаем «авто» на «используется». Всё. Моментально подхватился аппарат. Заодно пропала козявка с самоотключением компа при выходе из спящего режима.
BIOS всегда использовал по умолчанию а тут оказалось что и от него могут быть проблемы.
Всем хорошего дня
LED home 3.0
Набрал я, значит, подсветок и дружу их между собой. Превратил их в один светильник с 3мя режимами и управляю ими
Благодаря чудесному багу с помощью Node-Red в HomeKit можно создать светильник с таким же переключателем как источники на телевизоре. Вот о режимах в которые можно так легко переключить мою евродвушку я и хочу рассказать.
Тут все просто, выбираешь цвет и вся квартира перекрашивается. Это касается всех без исключения цветных светильников.
Подсветка в гостиной начинает реагировать на происходящее на экране. Кроме подсветки самого телевизора так же в этом режиме подсветка тумбы, колонок, дивана и Барной стойки, а верхние споты отключаются
Подсветка разделяется на 2 отдельных светилька. Теплый и цветной в HomeKit можно сменить только дополнительный цвет, а вот на кухонном планшете можно сменить оба
Когда подсветка включена, в проходных помещениях при отсутствии движения она не выключается, а меняет яркость на минимальную и разгорается при обнаружении движения
Использовать Linux — это как.
OpenVPN. Инструкция по применению (копия с Хабра)
Виртуальные частные сети (VPN) давно вошли в повседневную жизнь. Множество технологий и реализаций сервиса приватных сетей (как для частного применения, так и для использования внутри периметра организаций), обеспечивающих определённый уровень безопасности, доступны для использования широкому кругу ИТ-специалистов.
Не смотря на обилие технологий, предлагаю остановиться на старом добром OpenVPN (в связке с EASY-RSA). Решение от Джеймса Йонана отличается гибкостью, функциональностью, надёжностью и непрерывностью разработки на протяжении приличного временного периода. Так сказать, мастодонт от мира VPN-решений.
Спойлер — ссылка на довольно функциональное решение (ничего особенного, чистый бэкэнд), написанное на bash некоторое время назад, ждёт вас в конце публикации (в виде github-репозитория под именем «openvpn_helper»), а здесь же уделю внимание общей структуре и некоторым аспектам использования набора скриптов и OpenVPN.
Список необходимых компонентов (используемая ОС — AlmaLinux 8):
2. Описание общей структуры репозитория
2.1. Директория «ovpn-server»
Директория содержит файлы и поддиректории двух типов: статичные (входящие в репозитория непосредственно) и генерируемые автоматически.
Статичные:
* « main.sh » — файл, содержащий основную кодовую базу репозитория.
* «vpn.env» — основной файл конфигурации.
* « full_setup_vpn_server.sh » — скрипт полной установки VPN-сервера. После запуска исполняет следующие действия:
1) инициация структуры файлов/директорий для управления ключами easyrsa («./easyrsa init-pki»);
2) создание корневого сертификата («./easyrsa build-ca»);
3) генерация ключа Диффи-Хелмана («./easyrsa gen-dh»);
4) создание запроса на выпуск сертификата VPN-сервера («./easyrsa gen-req vpn-server»);
5) импорт и подписание сертификата VPN-сервера («./easyrsa sign-req server vpn-server»);
6) генерация списка отозванных сертификатов («./easyrsa gen-crl»);
7) генерация секретного ключа ta.key («/usr/sbin/openvpn —genkey —secret «$PKI_DIR/ta.key»»), используемого как на стороне сервера, так и на стороне клиента. Необходим для обеспечения дополнительного уровня безопасности (защищает от сканирования прослушиваемых VPN-сервером портов, переполнения буфера SSL/TLS, DoS-атак и flood-атак, а также вводит дополнительный механизм аутентификации между сервером и клиентом);
8) генерация файла конфигурации для VPN-сервера, вспомогательных скриптов и файлов со справочной информацией;
9) копирование всех необходимых сертификатов и файлов конфигурации, необходимы для работы VPN-сервера, в директорию «/etc/openvpn/server».
* « create_cli_cert_and_conf.sh » — скрипт генерации клиентского набора сертификатов и файла конфигурации.
* « revoke_client_cert.sh » — скрипт отзыва клиентских сертификатов.
* « gen_crl_and_restart_ovpn.sh » — скрипт генерации CRL-сертификата (Certificate Revocation List или список отозванных сертификатов), содержащего сведения о всех отозванных клиентских сертификатах (отозванных посредством « revoke_client_cert.sh »). Скрипт необходимо запускать каждый раз после отзыва клиентского сертификата.
* « get_client_cert_expire_info.sh » — скрипт проверки клиентских сертификатов на предмет устаревания.
* « get_server_cert_expire_info.sh » — скрипт проверки серверных сертификатов на предмет устаревания.
Файлы и директории, формируемые на этапе полной установки VPN-сервера ( full_setup_vpn_server.sh ):
* директория «pki_root/pki» — содержит развёрнутую структуру файлов/директорий для управления ключами easyrsa. Краткое описание файлов/директорий структуры:
1) certs_by_serial — директория хранения выпущенных сертификатов (в рамках данной структуры pki), ранжированных по серийным номерам;
2) issued — директория хранения выпущенных сертификатов, ранжированных по имени (CN);
3) private — директория хранения закрытых ключей (в т.ч. и закрытого ключа корневого сертификата) к соответствующим сертификатам;
4) renewed — директория хранения обновлённых сертификатов. В рамках «openvpn_helper» не используется.
5) reqs — директория хранения запросов на выпуск сертификатов.
6) revoked — директория хранения отозванных запросов/сертификатов/закрытых ключей;
7) ca.crt — корневой сертификат;
8) crl.pem — список отозванных сертификатов;
9) dh.pem — ключ Диффи-Хеллмана;
10) index.txt — актуальная база данных всех сертификатов в рамках данной структуры управления ключами/сертификатами;
11) index.txt.attr — содержит параметр «unique_subject = yes», запрещающий создание сертификатов с одинаковыми именами до процедуры отзыва;
12) index.txt.attr.old — предыдущее значение параметра index.txt.attr;
13) index.txt.old — предыдущее содержание базы данных сертификатов index.txt. Изменяется, например, после отзыва клиентского сертификата);
14) openssl-easyrsa.cnf — стандартные для данной структуры параметры с указанием имён переменных, которые возможно переопределить через переменные окружения;
15) safessl-easyrsa.cnf — содержание аналогично файлу openssl-easyrsa.cnf, но с указанием конкретных значений;
16) serial — используется для промежуточного хранения серийного номера генерируемого сертификата до момента его подписания. После подписания серийный номер перемещается в файл “serial.old”;
17) serial.old — содержит серийный номер последнего сгенерированного (и подписанного) сертификата;
18) ta.key — секретный ключ для реализации tls-аутентификации.
* «RESTART_OVPN-$ VPN_SERVER_NAME_S.sh » (где VPN_SERVER_NAME_S — параметр из vpn.env) — скрипт перезапуска экземпляра OpenVPN, основанного на конфигах и сертификатах, сгенерированных посредством « full_setup_vpn_server.sh » (на основе файла конфигурации «vpn.env», расположенного в текущей директории).
* «SET-STATIC-IP-FOR-CLIENTS.txt» — заполняется в формате «username,ip-address», если требуется, чтобы клиентам VPN-сервера выдавались статичных ip-адреса. После внесения изменений необходимо запустить скрипт «RESTART»
* «STOP_OVPN-$ VPN_SERVER_NAME_S.sh » (где VPN_SERVER_NAME_S — параметр из vpn.env) — полный останов VPN-сервера.
* «README_MAIN.txt» — краткая инструкция об использовании VPN-сервера.
* «README-user-management.txt» — памятка об управлении пользователями. Возможность коннекта к VPN (помимо сертификатов) ограничивается локальными УЗ, созданными на хосте и состоящими в определённой группе пользователей.
* «readme-firewalld-rules.txt» — памятка о настройке файервола (firewalld).
* «readme-selinux-rules.txt» — памятка о конфигурации selinux.
* «SAVED_CERT_PASSWORDS.txt» — сохранённые пароли (от корневого сертификата и сертификата VPN-сервера).
Файлы и директории, формируемые на этапе генерации клиентских сертификатов ( create_cli_cert_and_conf.sh ):
* директория «cli_certs» — содержит поддиректории вида «CLIENT_CERT_NAME-files», где расположен набор клиентских конфигов и сертификатов, а также архив для передачи пользователю.
=================
2.2. Директория «run_if_dnsmasq_is_not_installed»
Скрипт « run.sh ». Простой скрипт, осуществляющий установку сервиса dnsmasq.
Файл конфигурации «dnsmasq.conf». Содержит пример конфигурации сервиса без вышестоящих dns-серверов.
Для использования DNS-сервера, установленного на хосте с OpenVPN, необходимо подкорректировать правила firewalld. Рекомендации по настройке смотреть в файле «readme-firewalld-rules.txt» (после развёртывания VPN-сервера).
2.3. Директория «run_if_openvpn_is_not_installed»
Скрипт « run.sh » устанавливает необходимый для работы VPN набор софта: dnf-репозиторий «epel-release», openvpn, easy-rsa.
2.4. Директория «run_if_selinux_enabled»
Директория содержит 2 файла:
* selinux-модуль «ovpn_mod0.te»;
* скрипт « run.sh », устанавливающий пакет «selinux-policy» и применяющий selinux-модуль «ovpn_mod0».
2.5. Директория «run_if_zip_is_not_installed»
Скрипт « run.sh » устанавливает zip-архиватор, используемый при создании архивов для передачи конечному пользователю.
2.6. Файл-инструкция «if_need_another_vpnserver_on_this_host.txt»
Документ, кратко описывающий алгоритм развёртывания второго (и последующих) VPN-сервисов на одном и том же хосте.
Алгоритм таков (для примера):
1) создаём директорию, например, «ovpn-server0»;
2) переносим в неё содержание директории «ovpn-server» (исключения: cli_certs, pki_root);
3) редактируем в директории «ovpn-server0» файл «vpn.env», уделяя особое внимание параметрам: VPN_SERVER_NAME_S,
Разрешает форвардинг (перенаправление) трафика ipv4, что важно для осуществления доступа из VPN-сети в интранет.
3. Описание основного файла конфигурации vpn.env
Параметры, относящиеся только к генерации сертификатов и конфига (например, «/etc/openvpn/server/server.conf») VPN-сервера ( full_setup_vpn_server.sh ):
* VPN_CONF_DIR_S — директория хранения файлов конфигурации OpenVPN. Дефолтное значение — «/etc/openvpn/server».
* VPN_SERVER_NAME_S — имя VPN-сервера в контексте возможности запуска нескольких экземпляров VPN в зависимости от имени файла конфигурации. Желательно, чтобы этот параметр совпадал с частью (ovpn-XXX) имени директории, где расположен файл «vpn.env»).
* IP_VPN_SERVER_S — ip-адрес интерфейса, смотрящего в Интернет.
* VPN_PORT_S — порт интерфейса, смотрящего в Интернет. Должен быть уникален, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_SERV_LOG_DIR_S — директория размещения логов VPN-сервера. Значение по умолчанию — /var/log/openvpn.
* VPN_MAX_CLIENTS_S — максимальное количество клиентов VPN-сервера. В топологии «subnet» при использовании подсети для VPN с маской 24 (или 255.255.255.0) максимально возможное кол-во клиентов равно 83. Значение по умолчанию — 32.
* VPN_NETWORK_S — описание VPN-сети в формате «SUBNET SUBNET-mask». Значение по умолчанию — «172.16.10.0 255.255.255.0». Должно быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_DHCP_IP_S — адрес встроенного DHCP. Значение по умолчанию — 172.16.10.1. Должен быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_INTERNAL_NETWORK_ROUTE_S — маршрут до интранета (параметр передаётся клиентам VPN-сервера при подключении), к которой необходим доступ из VPN-сети. Заполнять в соответствии с конкретными параметрами вашей сети.
* VPN_SERVER_LOG_LEVEL_S — уровень логирования VPN-сервера. Значение по умолчанию — 0.
* VPN_NETWORK_MASQUERADE_SRC_S — описание подсети VPN-сервера, необходимое при отправке директив фаерволу (firewalld). Должно быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_INTERNAL_NETWORK_MASQUERADE_DST_S — описание внутренней подсети, необходимое при отправке директив фаерволу (firewalld).
* VPN_INTERNAL_IP_DEV_NAME_S — имя интерфейса, смотрящего во внутреннюю сеть.
* VPN_TUN_DEV_NAME_S — имя интерфейса, используемого при старте VPN-сервера. Должен быть уникальным в случае, если в рамках одного хоста настроено более одного VPN-сервера.
* VPN_SERVER_INT_FIREWALLD_ZONE_S — зона фаервола, к которой должны принадлежать интерфейсы:
в) интерфейс, являющийся дефолтовым гейтвэем для VPN-сервера.
Пункт (в) необходим только в том случае, если VPN-сервер предполагается использовать как шлюз по умолчанию для VPN-клиентов.
Параметры, относящиеся только к генерации клиентских сертификатов и конфига ( create_cli_cert_and_conf.sh ):
* IP_VPN_SERVER_CL — белый (и статичный) ip-адрес (или доменное имя), к которому необходимо обратиться VPN-клиенту для доступа к интрасети.
* VPN_PORT_CL — соответствующий порт для параметра IP_VPN_SERVER_CL.
* VPN_CLI_LOG_DIR_LINUX_CL — директория хранения лог-файлов, если клиент VPN-сервера — это хост с ОС Linux.
* VPN_CLI_LOG_LEVEL_CL — уровень логирования VPN-клиента.
Параметры EASY-RSA (используются как при генерации сертификатов как для VPN-сервера, так и для клиента):
* EASY_RSA_DIR_C — место расположения исполняемого файла easyrsa. Дефолтовое значение — /usr/share/easy-rsa/3.
* EASYRSA_CERT_EXPIRE_EV — время устаревания (в днях) выпущенных сертификатов (в т.ч. и корневого). Дефолтовое значение — 3654 дней (10 лет).
* EASYRSA_CRL_DAYS_EV – время устаревания (в днях) списка отзыва сертификатов (CRL). Дефолтовое значение — 3654 дней (10 лет).
* EASYRSA_KEY_SIZE_EV – размер ключа шифрования.
* EASYRSA_REQ_COUNTRY_EV – страна.
* EASYRSA_REQ_PROVINCE_EV – область.
* EASYRSA_REQ_CITY_EV – город.
* EASYRSA_REQ_ORG_EV – организация.
* EASYRSA_REQ_OU_EV – подразделение организации.
* EASYRSA_REQ_CN_EV – имя сервера.
* EASYRSA_REQ_EMAIL_EV – email-адрес администратора.
4. Заключение
Не смотря на функциональность и гибкость (особенно при наличии оснастки, описанной, например, выше), у OpenVPN есть недостаток (присутствует и у аналогичных решений) — механизм списка отозванных сертификатов (который CRL).
Если удалить клиентский сертификат из директории «issued» (структура управления ключами easyrsa), то его отзыв (посредством команды revoke) при компрометации окажется недоступным, что создаёт вероятность использования такого сертификата злоумышленниками. И в этом случае единственным вариантом обезопасить интранет от посторонних глаз — перевыпуск корневого сертификата, что влечёт за собой необходимость перевыпуска остальных сертификатов.
Логично было бы генерировать не список отозванных сертификатов (CRL), а список актуальных сертификатов (например, Cert Actual List), но, видимо, разработчики OpenVPN (а также Easy-RSA), когда-то решили иначе, что создаёт необходимость очень тщательно следить за всеми выпущенными/отозванными сертификатами.
Продолжение поста «Как развернуть свой VPN сервер»
Многие в комментариях резонно указали, что сервер не настроен, его взломают, и будет он трудится в каком-нибудь ботнете. На что я отвечу:
1. Убирать рут не вижу смысла. На сервере нет никаких важных данных и рут нужен почти всегда.
2. Вход с помощью ключей. Можно установит, но это добавляет проблем с настройкой и подключением. Ради защиты большого ничего, также не вижу смысла этим заниматься.
Что необходимо сделать:
Для защиты сервера имеет смысл изменить SSH порт на какой-нибудь другой, это отсеет большинство атак ботов, установить fail2ban, для защиты от перебора паролей и настроить Firewall. Как это сделать расписано ниже.
Изменяем порт SSH:
Вводим в терминал
Управление стрелочками. Удаляем # перед Port и вместо 22 вводим любой от 1024 до 65535.
Нажимаем Ctrl+X потом Y и Enter.
Перезапускаем ssh командой:
Теперь при подключение используйте новый SSH порт
Устанавливаем fail2ban командой:
Для наших целей настройка из коробки сгодится.
Установим и настроим Firewall
Нажимаем Y и Enter
Всё. Дальнейшую настройку для данного сервера, я считаю избыточной.
Как развернуть свой VPN сервер
Стоимость: 14$ в год.
Инструкция очень подробная и рассчитана на начинающих.
В свете последних событий растет потребность в VPN для обхода разных блокировок.
Можно использовать какой-нибудь VPN сервис
+ Проще(Но не сильно)
— Ненадежно(Уже сейчас забанены популярные VPN сервисы и РКН планирует заблокировать ещё больше. Есть обходы этих блокировок, но это танцы с бубном, что убирает главный плюс данного варианта)
— Небезопасно(Если использовать малоизвестные сервисы, то безопасность и анонимность ваших данных будет находится под большим вопросом, а о надежности и речи быть не может)
— Низкая скорость(Относится к малоизвестным сервисам)
Можно использовать свой VPN на арендованном сервере
+Безопасность(Только вы знаете, что происходит на вашем сервере)
+Надежность(IP вашего сервера никогда не забанят, ведь пользуетесь им только вы)
+Высокая скорость(Сервером пользуетесь только вы и ваша семья)
—Возможные проблемы с арендой VPS сервера
1.Покупка VPS
Первым делом нам нужно купить VPS(Виртуальный приватный сервер).
В данной статье я покажу как купить VPS на примере RackNerd, так как в апреле у них можно купить VPS по цене 14$ в год c 2500 GB трафика в месяц, да и без скидок у них дешевые и качественные VPS. Другие дешевые VPS можно найти здесь. Нам сгодится самый дешевый. Ориентируйтесь на скорость и количество трафика в месяц.
Выбираем операционную систему Ubuntu 20 и нужное вам расположение сервера
Нажимаем Continue => Checkout
Дальше вводим свои данные, насколько правдивыми они будут решать вам, но email должен быть настоящим.
Способов оплаты много. Выбирайте наиболее удобный для вас. Я выбрал webmoney, так как для меня он единственный рабочий.
После оплаты на email придёт письмо с данными для подключения к серверу. Также в письме будет ссылка и логин, пароль к панели управления сервером. В ней можно настраивать сервер. но в дальнейшем она нам не понадобится, но иногда после всех установок может потребоваться перезагрузка сервера, она делается именно в панели управления.
2.Подключение к VPS
Скачиваем и устанавливаем PuTTY
Открываем и в поле Host Name вводим IP адрес из письма. В поле Port вводим SSH port из письма.
Нажимаем Open
Далее нажимаем Accept
Вводим имя пользователя, в нашем случае root, нажимаем Enter
Далее копируем Root Password из письма, вставляем его в с помощью ПКМ и нажимаем Enter.(Пароль не отображается при вводе)
3.Установка и настройка VPN сервера.
Есть много разных VPN серверов. Я буду использовать Wireguard, так как он современный, лёгкий и быстрый. Устанавливать и настраивать его вручную не вижу смысла, если вы хотите обычный VPN сервер. Вместо этого, мы будем использовать скрипт, который очень упростит весь процесс.
Копируем и вставляем(ПКМ для вставки в терминал) данную команду.
Вводим нужный вам порт, если вам без разницы просто нажмите Enter.
Придумываем и вводим имя клиента который будет подключаться к VPN.
Выбираем нужный DNS сервер, если вам без разницы просто нажмите Enter.
Нажимаем Enter ещё раз.
Мы создали и конфиг файл(нужен для подключения), также в терминале появится его QR-code для подключения с телефона(подробнее в разделе 4.Подключение к VPN).
Для каждого пользователя нужно создавать свой конфиг файл. Для этого вводим эту команду и проделываем предыдущие действия.
3.5 Скачивание конфиг файла
Для того чтобы скачивать файлы с сервера нам понадобится программа WinSCP
Скачиваем, устанавливаем и запускаем.
Вводим те же данные, что мы вводили в PuTTY и нажимаем войти.
Далее просто переносим конфиг файл(имя клиента.conf) на свой пк.
4.Подключение к VPN
Устанавливаем, открываем, нажимаем Добавить туннель, выбираем наш конфиг файл и нажимаем кнопку Подключить.
Скачиваем WireGuard из Google.Play или F-Droid
Открываем, тапаем по плюсику, выбираем либо импорт из файла или архива, тогда выбираем наш конфиг файл, либо сканируем QR-код из терминала.
Надеюсь данная инструкция окажется для кого-нибудь полезна.
Спасибо за прочтение.
P.S. Извините, что забыл открыть.
Простейшая настройка собственного VPN
Добрый день, пикабушники!
Сразу скажу: я не собираюсь строить из себя эксперта в этой области, но в последнее время тема стала крайне актуальной, просили помочь с установкой и настройкой многие друзья и родственники, и даже тут, на пикабу, пришлось пару раз отметиться по этому вопросу, где меня и попросили запилить пост. (@Warspirit, ты в телевизоре). Ну что ж, мне не трудно, многим полезно.
Получилось очень, очень много букв, но ответственно заявляю, что по этой инструкции смогла купить сервер и подключиться к инстаграму моя бабушка, а это многого стоит. Если есть критика или дополнение – буду только рад услышать ваше мнение в комментариях.
В итоге у нас будет: недорогой VPN, работающий на арендованном нами сервере по протоколу OpenVPN, работающий быстрее всех бесплатных аналогов и очень многих платных. Самый простой, без всяких плюшек вроде маскировки туннеля, выбора отдельных сайтов, которые через этот туннель будут открываться и прочих финтифлюшек, простая рабочая машина, которая обеспечивает отличные скорость и конфиденциальность вкупе с обходом блокировок, а большего нам и не нужно. Итак, поехали.
Для начала определимся с терминологией на случай, если кому-то еще не прожужжали на эту тему все уши.
• VPN –надежный «туннель» от вас до удаленного сервера. Все провайдеры, спецслужбы и прочие заинтересованные лица снаружи могут увидеть только пункт назначения и гору непонятных буковок, которые представляют собой шифрованное «что, куда и откуда».
• VPS/VDS – между двумя этими понятиями для нас разницы нет. По сути, это виртуальный компьютер где-то далеко, на котором мы и будем поднимать VPN-сервер.
• VPN-сервер – программа, которая стоит на удаленном компьютере и является одной из сторон создания туннеля. Вторая сторона – ваш компьютер/телефон.
• OpenVPN – одна из технологий создания VPN-туннеля, созданная еще 20 лет назад, но с тех пор только прибавившая актуальности. Поддерживает десятки алгоритмов шифрования, имеет огромный пласт возможностей, но из всего этого нам надо знать то, что он быстр, он надежен и его еще никто не взломал. Во всяком случае, об этом не известно широкой аудитории, а абсолютно надежных систем не существует. Имеет приложения для Windows, Linux, Mac, Android и iPhone. Вероятность того, что ваше устройство не в этом списке, исчезающе мала.
• Хостер – тот, кто сдал вам в аренду сервер.
Затем нужно определиться с выбором сервера. Минимальные системные требования настолько минимальны, что подойдет практически любой VPS, который существует на рынке. В данный момент у меня трудится сервер с 512 МБ RAM, 10 ГБ ROM и одним 3 ГГц ядром процессора, а обычная нагрузка по всем показателям не превышает 10-20%. Единственное, на что стоит обратить внимание – наличие TUN/TAP устройства (если вам нужна эта статья, то никакой практической пользы эта информация вам не принесет, так что можете не вникать), но о его отсутствии обычно предупреждается большими красными буквами. Кроме того, обязательная характеристика – линукс. (проблем тут он вам не доставит). Желательно – Debian или CentOS последней версии, которая доступна на сайте. Windows не брать ни в коем случае, она дороже и не подходит для быстрой установки описанным способом. Операционная система выбирается при покупке сервера, потом ее можно переустановить.
С требуемыми характеристиками разобрались. Осталось определить местоположение сервера.
Если вам нужна конфиденциальность, то наилучшим вариантом, конечно же, будет зарубежный сервер. Как минимум потому, что вытащить информацию о том, куда ходил такой-то IP, из другой страны на порядок сложнее, чем потребовать ее от своего провайдера. Сам протокол OpenVPN предоставляет достаточную надежность, чтобы не бояться прослушки канала провайдером и заинтересованными лицами, особенно если поэкспериментировать с настройками шифрования (каждое изменение стандартных настроек, особенно алгоритма хеширования, усложняет взлом в разы при условии использования надежных алгоритмов). Ну а если вы решили обзавестись VPN только ради обхода блокировок, как я, то, скорее всего, подойдет и любой российский сервер. Не все провайдеры «последней мили» тратятся на установку дорогого оборудования, осуществляющего блокировки, а уж среди облачных гигантов таких и вовсе единицы. Мне пока что попадался только один из более чем десятка опробованных, и я спокойно вернул деньги по причине «не устроили условия».
После недавних колебаний курса цены на зарубежный VPS в общем выросли, но пока что еще держатся в пределах разумного (надеюсь, это надолго, но, возможно, при покупке имеет смысл оплатить сразу на несколько месяцев, чтобы потом не потратить лишнего). Сразу могу предупредить, что легко мог пропустить хорошее предложение, поэтому прошу добавить в комментариях, если у кого есть более вкусные варианты. Кроме того, я не знаю, что сейчас творится с оплатой зарубежных сервисов, так что эту сторону вопроса я попросту не учитывал.
Самый простой вариант выбора – загуглить «аренда vps в европе». Цены будут нормальными, но все же гораздо выше, чем если подбирать вдумчиво. Например, https://gcorelabs.com/ru/hosting/vds/europe/ За 240 рублей в месяц вы получаете вполне приятный по характеристикам сервер, несколько европейских столиц на выбор и 200 мбит/с канал с безлимитом по трафику. Но я бы все же рекомендовал открыть страницу с подбором сервера, как эта https://hostinghub.ru/vps-search/ и подобрать себе подходящий вариант в любой стране мира.
Из российских серверов подойдет практически любой. Я пользуюсь https://skyhost.ru за 84-80 руб/мес (в зависимости от периода оплаты. Довольно распространенная практика), но канал тут только 10 мбит/с, мне больше и не надо. Есть и дешевле, но там либо проблемы со стабильностью, либо большие ограничения. Если хотите скорости – https://justhost.ru/ , то же самое, но с каналом 200 мбит/с и на 20 рублей дороже. Хотите что-то интереснее – десятки сайтов-агрегаторов к вашим услугам по запросу «подбор vps.
Итак, с провайдером вы определились. Показывать процесс регистрации не имеет смысла — создаете аккаунт, выбираете сервер, операционную систему, оплачиваете. В случае возникновения трудностей пишите в комментарии или в службу поддержки. Второй вариант надежнее.
После оплаты вам на почту через некоторое время падает IP-адрес, логин и пароль. Выглядит это примерно так:
Обращаю ваше внимание, в письме одновременно может быть и адрес панели управления, но нам сейчас нужен блок, в котором находится IP (четыре числа, разделенных точкой).
Логин-пароль мы получили. Пользователи Linux и MacOS открывают терминал и вводят туда «ssh root@<IP-адрес сервера>, мы же идем на сайт https://www.chiark.greenend.org.uk/
Открываем, соглашаемся с предупреждением, если оно возникает, устанавливаем. В меню программ появляется папка PuTTy, в ней мы открываем одноименный файл PuTTy. Появляется вот такое окно. В указанное окошко вводим IP, нажимаем Open. Больше ничего не меняем.
В итоге у всех вылезло черное окно терминала, в котором система просит нас ввести логин и пароль или просто пароль. (При первом подключении будет предупреждение о неизвестном сервере, соглашаемся). Вводим. (Копирование и вставка осуществляются с помощью нестандартных Ctrl+Shift+C/V, кроме того, вставить можно просто кликом правой кнопкой мыши по окну. Символы пароля при вводе не отображаются даже в виде звездочек. Не пугайтесь, они есть, просто невидимы. Ошиблись – три секунды держите кнопку «стереть»). Иногда случается так, что присланный пароль не работает ни в какую, тогда мы идем на сайт хостера и через панель клиента меняем его на свой. Обычно там все написано, но если возникли проблемы – опять же, комментарии или техподдержка.
В итоге у нас есть вот такое окно, в которое последовательно вставляем три команды, после каждой нажимаем «ввод» и дожидаемся завершения (снова появится вот такая строка-приглашение к вводу)
Команды взяты со страницы разработчика скрипта: https://github.com/angristan/openvpn-install . Все проверено, вирусов нет. Копируем полностью, от первого символа до последнего, точки не забываем, пробелы в конце и в начале простительны
После этого программа начинает работать сама, вам нужно лишь нажимать Ввод, когда она просит, оставляя все как есть, и дожидаться того момента, когда она попросит придумать имя нового подключения. Займет это около минуты. Приглашение выглядит так:
Придумываем не слишком сложное имя и два раза нажимаем Ввод, пока снова не появится приглашение ко вводу. Вводим команду ls (эл-эс английские, маленькие)
Появится список всех файлов в данной директории. Среди них будет один под названием <введенное_вами_имя>.ovpn Печатаем:
Выделяем снизу вверх все от “</tls-crypt> до строчки “client”, строка приглашения к вводу в выделение попасть не должна. Копируем сочетанием клавиш Ctrl+Shift+C. Открываем блокнот и вставляем. Сохраняем где-нибудь на рабочем столе с любым именем файла, но заканчиваться оно должно на .ovpn. Обратите внимание на рамочку на скриншоте, там должно значиться именно «Все файлы».
Идем на сайт https://openvpn.net/vpn-client/ и скачиваем приложение под свою систему. Устанавливаем. Открываем. Окно выглядит так. Переходим на вкладку File и перетягиваем в окошко наш файлик, сохраненный на рабочем столе, либо открываем его же с помощью кнопки Browse
Нажимаем оранжевую кнопочку Connect и наслаждаемся, блокировки нас уже не волнуют. Значок программы появился на панели задач, когда надо включить или отключить VPN (некоторые сайты, тот же авито, отказываются через него работать) мы нажимаем на нее и используем зеленый переключатель в левом верхнем углу.
Приложение для телефона можно скачать в Play Market или App Store. Для него потребуется точно такой же файлик, можно даже этот. Но два одновременных соединения с помощью одного файлика (он называется профиль) установить не получится, поэтому для создания второго, третьего и десятого, которые можно распространить по всей семье или среди друзей, мы снова подключаемся к серверу, как и раньше, и вводим команду
Выпадает небольшое меню, в котором мы можем добавить новый профиль, удалить один из существующих (он больше не сможет подключиться) или вовсе удалить OpenVPN с сервера. Выбираем 1, придумываем имя, два раза нажимаем на ввод и опять копируем вывод команды cat <введенное_вами_имя>.ovpn в файлик на рабочем столе, откуда его можно передать куда угодно. Работает пересылка по ватсап и телеграм, а также по другим мессенджерам. На принимающей стороне надо всего лишь установить приложение и нажать на присланный файл, после чего соединиться.
Как-то так. В ближайшем будущем планировал записать нормальное видео, как это делается, и добавить в комментарии, но пока что существует только текстовая инструкция. Создано под давлением родственников и знакомых)
Ubuntu VPN – Complete Setup Guide (PPTP, SSTP, OpenVPN)
If you are looking for a way to fortify the online security and privacy of your Ubuntu OS, there’s no better choice than using a VPN for Ubuntu.
Ubuntu is an open source operating system, and perhaps it is the very reason that makes it fairly popular, especially in the tech-savvy community. Though there is no clear category of Ubuntu users, it is a common belief in the community that the OS attracts the most privacy conscious.
Well, it may be a myth or not, but one thing that you and we can’t ignore is the fact that a VPN gives an added layer of security as well as privacy to Ubuntu.
Well, let’s find out the possible reasons behind using a VPN for Ubuntu and how to set up a VPN on the OS using PPTP VPN, SSTP VPN and OpenVPN.
Why You Need a VPN Software for Ubuntu?
There could be several reasons why you, an Ubuntu user, would need a VPN. You would need it to:
- Make secure transactions when using a public Wi-Fi or hotspot
- Browse the Internet while keeping your IP hidden from prying eyes
- Keep your device secure against online threats like malware, etc.
- Override geo-blocks when streaming your favorite channels or services
- Connect with your loved ones abroad where VoIP services are not accessible
It is just the tip of the iceberg!
Looking for a good Ubuntu VPN?
PureVPN offers a global server network, best-in-class encryption, 10 multi-logins, and more. Grab the 5-year subscription for only $1.32 per month this Black Friday!
Top Reasons That Make PureVPN the Best VPN for Ubuntu
You want to put your trust on a reliable VPN, don’t you? If so, then subscribe to PureVPN.
Our VPN service boasts one of the largest networks of VPN servers in the industry. We are currently standing at the top with 6,500+ VPN servers and 300,000+ IPs. With such a huge network, you can expect universal access to all the content on the web including services like Netflix, Hulu and more.
Our military-grade encryption technology keeps your data out of the reach of cybercriminals. As a result, you get a safer Internet that you and your family can experience. Moreover, we have dedicated servers for streaming, security, downloading, gaming and VoIP.
VPN Setup Guide for Ubuntu
How to Setup a VPN on Ubuntu (PPTP)
- Hit the Network Connection icon
- Click VPN Connections and then select Configure VPN
- After that click Add
- Now from the drop-down menu, select Point-to-Point Tunneling Protocol (PPTP)
- Click Create
- Do the following:
- Type Connection name “PureVPN PPTP”
- Enter the desired server in Gateway
- Enter PureVPN Username and Password
- Hit Advanced
- Use Point-to-Point encryption (MPPE)
- Allow BSD data compression
- Allow Deflate data compression
- Use TCP header compression
- Uncheck “EAP”
- Now click OK
How to Setup a VPN on Ubuntu (SSTP)
Note: Download and install the package for your respective Ubuntu version.
- Click the Network Manager icon
- Go to the VPN Connection, then Configure VPN and click Add
- From drop-down menu, select Secure Socket Tunneling Protocol (SSTP)
- Click Create
- Now follow these steps:
- Type “PureVPN SSTP” in the Connection Name field
- Enter the desired server in Gateway
- Enter PureVPN Username and Password
- Don’t forget to check the Ignore certificate warnings option
- Hit Advanced
- Check following options
- Allow BSD Data compression
- Allow Deflate data compression
- Use TCP header compression
- Send PPP echo packets
- Click OK to proceed
How to Setup a VPN on Ubuntu (OpenVPN)
- Click Dash and type Terminal to search and open it
- Insert command:
- sudo apt-get install network-manager-openvpn
- and click Enter
- sudo apt-get install network-manager-openvpn
- sudo apt-get install network-manager-openvpn-gnome
- Insert PureVPN OpenVPN in the Connection name field
- Enter the Gateway (from .ovpn file in the OpenVPN folder)
- Enter Username and Password
- Click the folder icon from CA Certificate
- Use custom gateway port: For UDP insert 53 and For TCP insert 80
- Use LZO data compression
- For TCP connection select “Use a TCP connection” (If required)
- From Cipher: Select AES-256-CBC or desired encryption
- From HMAC Authentication: Select SHA-1
- Choose Use additional TLS authentication
- Click folder icon next to Key File
- Select “1” from Key Direction
- Hit OK
Get an Added Layer of Security & Privacy for Ubuntu
We live in an era where ignoring our rights to online privacy and security could result in serious implications such as identity theft, cyberstalking, illegal surveillance, and whatnot. It is only wise to use an encryption tool like a VPN to protect what’s dearest to you, i.e., your privacy and private data.
Topics :
Join 600k+ Newsletter Subscribers
Best VPN for o2 – For better security and privacy
Best VPN for 1&1: Secure downloading and browsing on all devices
Telekom VPN: Boosting security and privacy
Join 3 million+ users to embrace internet freedom
Signup for PureVPN to get complete online security and privacy with a hidden IP address and encrypted internet traffic.
Privacy Overview
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie Duration Description __stripe_mid 1 year This cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server. __stripe_sid 30 minutes This cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server. Affiliate ID 3 months Affiliate ID cookie cookielawinfo-checbox-analytics 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Analytics». cookielawinfo-checbox-functional 11 months The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category «Functional». cookielawinfo-checbox-others 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Other. cookielawinfo-checkbox-necessary 11 months This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category «Necessary». cookielawinfo-checkbox-performance 11 months This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category «Performance». Data 1 3 months Data 2 3 months Data 2 JSESSIONID session Used by sites written in JSP. General purpose platform session cookies that are used to maintain users’ state across page requests. PHPSESSID session This cookie is native to PHP applications. The cookie is used to store and identify a users’ unique session ID for the purpose of managing user session on the website. The cookie is a session cookies and is deleted when all the browser windows are closed. woocommerce_cart_hash session This cookie is set by WooCommerce. The cookie helps WooCommerce determine when cart contents/data changes. XSRF-TOKEN session The cookie is set by Wix website building platform on Wix website. The cookie is used for security purposes. Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie Duration Description __lc_cid 2 years This is an essential cookie for the website live chat box to function properly. __lc_cst 2 years This cookie is used for the website live chat box to function properly. __lc2_cid 2 years This cookie is used to enable the website live chat-box function. It is used to reconnect the customer with the last agent with whom the customer had chatted. __lc2_cst 2 years This cookie is necessary to enable the website live chat-box function. It is used to distinguish different users using live chat at different times that is to reconnect the last agent with whom the customer had chatted. __oauth_redirect_detector This cookie is used to recognize the visitors using live chat at different times inorder to optimize the chat-box functionality. Affiliate ID 3 months Affiliate ID cookie Data 1 3 months Data 2 3 months Data 2 pll_language 1 year This cookie is set by Polylang plugin for WordPress powered websites. The cookie stores the language code of the last browsed page. Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.