Настройка VPN на Ubuntu Server (способ второй)

0 Comments
openvpn-logo

Чтобы поднять свой VPN, нам потребуется сервер с Ubuntu или Debian, пакет OpenVPN и Easy-RSA. Если сервер у вас уже есть, хорошо. Если нет, то не расстраивайтесь. Приобрести сервер сейчас не так уж и сложно. В интернете предложение сейчас навалом.

Содержание

Установка OpenVPN на Ubuntu Server 16.04 | 17.04 | 18.04

Приступим к установке пакетов на нашем сервере. В терминале набираем:

sudo apt update
sudo apt install openvpn -y

Раньше в OpenVPN входила утилита под названием easy-rsa,- предназначенная для генерации ключей и сертификатов. Начиная с версии 2.3 эту утилиту из пакета выпилили, поэтому придется скачать и собрать ее самостоятельно:

Для этого перейдем в директорию /tmp и скачаем пакет Easy-RSA

cd /tmp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

Распакуем скачанный архив

unzip master.zip

Теперь соберём пакет

./easy-rsa-master/build/build-dist.sh

Распакуем собранный пакет

unzip ./EasyRSA-git-development.zip

Дальнейшие изменения будем делать от root для этого набираем:

sudo -su

Перенесем директорию easy-rsa в директорию openvpn

sudo mv ./easy-rsa-master/EasyRSA-git-development/easyrsa3 /etc/openvpn/easy-rsa

Далее нужно будет настроить сертификаты для нашего VPN сервера

Настройка сертификатов OpenVPN

Переходим в нашу директорию

cd /etc/openvpn/easy-rsa

Отредактируем файл vars.exemple. Нужно будет раскоментировать и внести изменения в некоторые строки как у меня в примере:

set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "Russia"
set_var EASYRSA_REQ_CITY "Moscow"
set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL "admin@pro-ram.ru"
set_var EASYRSA_REQ_OU "My Organizational Unit"

Генерируем все необходимые ключи и сертификаты.

./easyrsa init-pki

Это команда создаст директорию /etc/openvpn/pki, где будут располагаться наши сертификаты

Далее сертификат ЦС:

./easyrsa build-ca

При создании сертификата ЦС необходимо будет ввести пароль

Создаем сертификат сервера:

./easyrsa build-server-full server

При создании сертификата сервера необходимо ввести пароль для сертификата сервера, а также пароль ЦС

Сертификат Диффи-Хеллмана:

./easyrsa gen-dh

При создании ключа Диффи-Хеллмана придется набраться терпения :)

Далее сертификат клиента:

./easyrsa build-client-full client1

При создании сертификата клиента необходимо ввести пароль для сертификата клиента, а также пароль ЦС

Cоздаем ключ для tls-аутификации.

openvpn --genkey --secret ./pki/private/ta.key

Переносим полученные ключи и сертификаты в каталог /etc/openvpn/:

mv ./pki/dh.pem /etc/openvpn/keys/dh2048.pem
mv ./pki/private/client1.key /etc/openvpn/keys/
mv ./pki/private/server.key /etc/openvpn/keys/
mv ./pki/ca.crt /etc/openvpn/keys/
mv ./pki/issued/client1.crt /etc/openvpn/keys/
mv ./pki/issued/server.crt /etc/openvpn/keys/

на этом установка openvpn закончена

Настройка конфигурационного файла OpenVPN сервера

Далее создаем конфигурационный файл openvpn.

sudo touch /etc/openvpn/server.conf

Со следующим содержимым:

# Порт на котором будет крутиться наш VPN (по умолчанию 1194)
port 1194
# Протокол может быть UDP или TCP.
proto udp
#Сообщение серверу о конце сессии (если укажите TCP,то ставим 0)
explicit-exit-notify 2
# Название интерфейса.
dev tun
# Указываем директории с нашими ключами
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
# Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь
server 10.8.0.0 255.255.255.0
# Указываем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
client-config-dir ccd
# Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
ifconfig-pool-persist ipp.txt
### Включаем TLS
tls-server
# Для сервера 0 для клиента 1
tls-auth /etc/openvpn/keys/ta.key 0
tls-timeout 120
# Проверка подлинности пакетов
auth SHA256
# Шифровать методом
cipher AES-256-CBC
# Чтобы клиенты видели друг друга
client-to-client
# Один IP на клиента
topology subnet
# Разрешить дублирующие сертификаты
;duplicate-cn
# Пинг клиента каждые 10 сек. и разрыв соединения если нет пинга в течении 120 сек.
keepalive 10 120
# Сжатие трафика старые клиенты
comp-lzo
#Новые v2.4+ 
;compress lz4-v2
;push "compress lz4-v2"
# Максимум клиентов
max-clients 10
# Права для клиентов-только для Linux
user nobody
group nogroup
# Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройства, после получения SIGUSR1 или ping-restart
persist-key
persist-tun
# Логи
status openvpn-status.log
log /var/log/openvpn/openvpn.log
# Детальность логирования
verb 3
# Защита от повторов (максимум 20 одинаковых сообщений подряд)
mute 20
# Файл отозванных сертификатов. Раскомментировать, когда такие сертификаты появятся.
;crl-verify /etc/openvpn/crl.pem

Создадим директорию для клиентских конфигов

mkdir /etc/openvpn/ccd

Можно запускать наш сервер OpenVPN

service openvpn restart

Далее приступаем к настройке клиентской части

Настройка конфигурационного файла OpenVPN клиента.

Теперь что касается клиентской стороны. Нам необходимо скопировать файлы client1.crt, client1.key, ta.crt и ca.crt с сервера на клиентскую машину. Для этого в консоле клиента набираем:

 scp /etc/openvpn/keys/{client1.crt,client1.key,ca.crt,ta.key} user@user-host:/etc/openvpn/

где,
user — это пользователь на сервере
user-host — это IP адрес вашего клиента

Если не удаётся  скопировать сертификаты, то необходимо поменять права на данные файлы

Создадим файл client.conf:

sudo nano /etc/openvpn/client.conf

с содержимым:

client
proto udp
dev tun
# !!! замените на настоящий ip адрес сервера
remote 111.111.111.111 1194
# следующие две строчки актуальны только для Linux систем
# на практике они не очень удобны, так как OpenVPN не сможет
# нормально все за собой почистить по завершению работы
user nobody
group nogroup
# Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройства
persist-key
persist-tun
# Пути где располагаются сертификаты
ca ca.crt
cert client1.crt
key client1.key
# Используемое шифрование
cipher AES-256-CBC
auth SHA256
# Сжатие трафика
comp-lzo
# Детальность логирования 
verb 3

Подрубаемся к серверу, внимательно читаем логи:

sudo openvpn --config client.conf

В соседнем терминале говорим:

ping 10.8.0.1

Если все было сделано правильно, вы обнаружите, что пинги успешно доходят до 10.8.0.1

Авто запуск openvpn при старте

Разрешаем автозапуск службы:

systemctl enable openvpn

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Защита OpenVPN с помощью Fail2Ban
fail2ban-logo

В связи с последними блокировками IP-адресов Роскомнадзором, встала необходимость завести свой собственный VPN сервер. Если VPN у вас ещё не Читать

[РЕШЕНО] Auth-nocache — Warning в OpenVPN
openvpn-logo

При подключении через протокол openvpn, вы можете увидеть следующую строку в логах подключения VPN-клиента: W: WARNING: this configuration may cache Читать

Настройка VPN на Ubuntu Server (способ первый)
openvpn-logo

Содержание Установка OpenVPNНастройка сертификатов OpenVPNНастройка конфигурационного файла OpenVPN сервераНастройка конфигурационного файла OpenVPN клиента Установка OpenVPN на Ubuntu Server Приступим к Читать

Выбор конфигурации VPN сервера
openvpn-logo

Приняв решение поддерживать UDP- и TCP-клиентов системный администратор неизбежно приходит ко второму вопросу: bridge-server или P2P-сервер. Напомним: 1. В режиме Читать

0 0 голоса
Рейтинг статьи

Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

1 Комментарий
новее
старее большинство голосов
Inline Feedbacks
Просмотреть все комментарии

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: