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

Содержание

Чтобы поднять свой VPN, нам потребуется сервер с Ubuntu или Debian, пакет OpenVPN и Easy-RSA. Если сервер у вас уже есть, хорошо. Если нет, то не расстраивайтесь. В наши дни купить подходящий VDS/VPS можно за небольшую плату в месяц. Компаний, предлагающих соответствующие услуги — десятки. Советовать какой-то конкретный сервис я не буду, как говорится: — «На вкус и цвет товарищей нет».

Установка OpenVPN на Ubuntu Server 16.04 |17.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

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

Это команда создаст директорию 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/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

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

 port 1194
 # Протокол может быть UDP или TCP, я выбрал 2-й вариант.
 proto tcp
 # Если вы выберите протокол TCP, здесь должно быть устройство tap. Однако, я поставил tun и все прекрасно работает.
 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
 # Для 12.04 dh1024.pem
 # Задаем IP и маску виртуальной сети. Произвольно, но если не уверены лучше делайте как показано здесь
 server 10.8.0.0 255.255.255.0
 # Указыем, где хранятся файлы с настройками IP-адресов клиентов (создадим ниже)
 client-config-dir ccd
 # Запоминать динамически выданные адреса для VPN-клиентов и при последующих подключениях назначать те же значения.
 ifconfig-pool-persist ipp.txt
 # Указываем сети, в которые нужно идти через туннель (сеть-клиента). Если надо то раскоментируйте
 ;route 192.168.0.0 255.255.255.0
 ### Включаем TLS
 tls-server
 # Для сервера 0 для клиента 1
 tls-auth /etc/openvpn/keys/ta.key 0
 tls-timeout 120
 auth SHA1
 cipher BF-CBC
 # Если нужно, чтобы клиенты видели друг друга раскомментируйте
 ;client-to-client
 keepalive 10 120
 # Сжатие трафика
 comp-lzo
 # Максимум клиентов
 max-clients 10
 # Права для клиентов
 user nobody
 group nogroup
 # Не перечитывать ключи, не закрывать и переоткрывать TUN\TAP устройство, после получения SIGUSR1 или ping-restart
 persist-key
 persist-tun
 # Логи
 status openvpn-status.log
 log /var/log/openvpn.log
 # Детальность логирования
 verb 3
 # Защита от повторов (максимум 20 одинаковых сообщений подряд)
 mute 20
 # Файл отозванных сертификатов. Разремить, когда такие сертификаты появятся.
 ;crl-verify /etc/openvpn/crl.pem

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

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

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

sudo apt install openvpn
cd /etc/openvpn
scp user@vpn-server:/etc/openvpn/client1.crt ./
scp user@vpn-server:/etc/openvpn/client1.key ./
scp user@vpn-server:/etc/openvpn/ca.crt ./
scp user@vpn-server:/etc/openvpn/ta.crt ./

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

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

sudo touch /etc/openvpn/client.conf

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

client
proto tcp
dev tun
# !!! замените на настоящий ip адрес сервера
remote 123.45.67.89 1194

# следующие две строчки актуальны только для *nix систем
# на практике они не очень удобны, так как OpenVPN не сможет
# нормально все за собой почистить по завершению работы
user nobody
group nogroup

persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-CBC
comp-lzo
verb 3

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

sudo openvpn --config client.conf

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

ping 10.8.0.1

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

Оставить комментарий

Ваш e-mail не будет опубликован.