Тариф успешно добавлен в корзину
В корзину
url image

Установка OpenVPN сервера на Linux и настройка клиента для подключения к нему

В данной статье расскажем о трёх способах установки OpenVPN-сервера — от простого к более сложному, а также о том, как настроить OpenVPN-клиент для подключения к этому серверу. 

В FirstVDS вы можете заказать сервер с готовым рецептом OpenVPN. Сервер будет установлен и настроен автоматически, и вам останется только настроить подключение.

Требования к серверу

Эта инструкция может быть использована как на Linux VPS/VDS на виртуализации KVM, так и на выделенных серверах.

Важно. На виртуализациях OpenVZ и FreeBSD-Jail устройство TUN/TAP работать не будет.

Шаг первый. Установка OpenVPN

1 способ. В docker контейнере 

Для этого требуется установить пакеты:

Debian\Ubuntu:

apt update
apt install curl docker.io

RedHat-based OS (Centos, Alma и т.д.):

yum install docker curl

Затем необходимо выполнить команду установки docker контейнера: 

docker run --name dockovpn --cap-add=NET_ADMIN \
    -p 1194:1194/udp -p 80:8080/tcp \
    -e HOST_ADDR=$(curl -s https://api.ipify.org) \
    alekslitvinenk/openvpn

После чего будет сгенерирован config для подключения к серверу OpenVPN, который единоразово можно скачать по ссылке http://Ваш IP/.

Следующим шагом подключаетесь к серверу способом, описанном в пункте 2.

2 способ. Установка OpenVPN скриптом

происходит в полуавтоматическом режиме.

Скачаем скрипт:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh

Дадим ему права на выполнение:

chmod +x openvpn-install.sh

После чего запускаем скрипт:

./openvpn-install.sh

После запуска скрипта необходимо ответить на несколько вопросов, а именно указать ваш IP-адрес и шлюз по умолчанию.

Так как скрипт автоматически определяет конфигурацию, она может быть определена не совсем верно, а значит, и конфигурационный файл для подключения будет сгенерирован некорректно. Чтобы этого избежать, введем только IP-адрес и уберем информацию о шлюзе.

Далее будут заданы вопросы, включать ли поддержку IPv6, какой порт для OpenVPN использовать, по какому протоколу будет работать VPN, какие резолверы (DNS) выбрать для VPN-сервера, включать ли компрессию, вносить ли изменения в механизмы шифрования. Если вы не знаете какие конкретно опции нужны, то можете выбирать варианты ответа, предлагаемые скриптом по умолчанию — установится стандартный openvpn-сервер.

После установки скрипт предложит выбрать имя клиента и уточнит, требуется ли пароль для ключа. Необходимо ввести имя пользователя и придумать пароль, которым вы будете пользоваться при подключении к OpenVPN-серверу. Если не хотите использовать пароль при подключении, поставьте цифру 1.

Client name: openvpn

Do you want to protect the configuration file with a password?
(e.g. encrypt the private key with a password)
  1) Add a passwordless client
  2) Use a password for the client
Select an option [1-2]: 1

В результате будет сгенерирован файл по пути /root/client.ovpn, где client — имя, которое вы задали в поле Имя Пользователя. В нашем примере бы создался файл /root/openvpn.ovpn

Файл достаточно скачать с сервера и выполнить подключение к VPN-серверу способом, описанным в пункте 2.

Повторный запуск скрипта позволяет:

  • добавить пользователя OpenVPN,
  • удалить пользователя OpenVPN,
  • удалить OpenVPN.

3 способ. Установка OpenVPN вручную

Выполним установку OpenVPN-сервера:

apt update
apt install -y openvpn

Для OpenVPN версии выше 2.3 набор скриптов easy-rsa не входит в инсталляцию по умолчанию, а скачивается отдельно.

Распаковываем структуру ключей:

mkdir /src; cd /src && wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
apt install unzip
unzip master.zip cd easy-rsa-master/easyrsa3 ./easyrsa init-pki

Создаём центр сертификации:

./easyrsa build-ca

В процессе вы получите запрос на ввод пароля от 4 до 32 символов, сохраните его, он нам потребуется в будущем:

Получаем:

./pki/ca.crt
./pki/private/ca.key

Теперь генерируем запрос на создание сертификата, чтобы в дальнейшем подключаться к серверу без пароля:

./easyrsa gen-req server nopass

Подписываем запрос, будет запрошен пароль. Используем пароль, который сохранили при создании центра сертификации:

./easyrsa sign-req server server

Получаем:

./pki/issued/server.crt

Генерируем ключи для клиента:

./easyrsa gen-req client nopass
./easyrsa sign-req client client

Будет запрошен пароль, который мы сохранили при создании центра сертификации:

Получаем два файла:

./pki/private/client.key
./pki/issued/client.crt

Генерируем файл с параметрами Диффи-Хеллмана (dh.pem):

./easyrsa gen-dh

Это может занять продолжительное время. Получаем:

./pki/dh.pem

Перенесём полученные файлы в /etc/openvpn/ для удобства:

mv ./pki/dh.pem /etc/openvpn/dh1024.pem
mv ./pki/private/client.key /etc/openvpn/
mv ./pki/private/server.key /etc/openvpn/
mv ./pki/ca.crt /etc/openvpn/
mv ./pki/issued/client.crt /etc/openvpn/
mv ./pki/issued/server.crt /etc/openvpn/

Файлы client.crt, client.key, ca.crt нужно скопировать на компьютер пользователя, который будет подключаться к OpenVPN-серверу:

cd /etc/openvpn
mkdir ovpn-client
cp -rp  client.crt client.key ca.crt ./ovpn-client/
zip ovpn-client.zip ./ovpn-client/*

Теперь настроим конфигурационный файл сервера. Он должен находиться в /etc/openvpn и называться server.conf. Пример конфигурационного файла server.conf с рабочего OpenVPN сервера:

port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
log-append  openvpn.log
verb 3
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

В  конфигурационном файле в опциях ca, cert, key, dh можно использовать абсолютные пути до файлов или пути относительно директории /etc/openvpn.

Пример использования абсолютных путей:

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

Сохраняем файл. Выполняем команду настройки маршрутизации для OpenVPN сервера:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Обратите внимание, что настройки маршрутизации имеют именно такой синтаксис, потому что в конфигурационном файле в строке server мы указали 10.8.0.0 255.255.255.0

Запускаем OpenVPN:

systemctl start openvpn

Шаг второй. Настройка клиента OpenVPN

Для подключения к серверу, который мы настроили, необходимо настроить клиент OpenVPN. В случае, если сервер был установлен скриптом или с использованием docker-контейнера, то файл конфигурации openvpn.conf генерируется автоматически, и его нужно только импортировать в ваш OpenVPN клиент. Если вы настраивали сервер вручную, то и конфигурационный файл для клиента будет необходимо править вручную. Далее о том, как это сделать. 

Для Windows

Клиент для Windows можно скачать здесь: https://openvpn.net/community-downloads/

Для подключения после настроек скриптом или с использованием docker-контейнера

После установки импортируем полученную нами конфигурацию, например client.ovpn.

На значке OpenVPN в трее нажимаем ПКМ и выбираем Импорт конфигурации:

Далее выберем нужный нам файл конфигурации:

В результате увидим, что конфигурация загружена успешно:

Следующим шагом осуществим подключение к нашему VPN-серверу, нажав кнопку Подключиться:

Если подключение прошло корректно, то увидим следующее сообщение:

 

Для подключения после ручных настроек

После установки заходим в папку установки программы, например: C:\Program and Files\OpenVPN\sample-config. Открываем текстовым редактором (блокнотом) файл client.ovpn и пишем в строке:

remote my-server-1 1194

Необходимо указать IP своего сервера вместо my-server-1. Больше ничего не трогаем, сохраняем и закрываем файл.

Затем нужно скачать с сервера 3 файла сертификатов в эту же папку, где только что редактировали файл. Итак, скачать нужно следующие файлы:

/etc/openvpn/easy-rsa/keys/ca.crt
/etc/openvpn/easy-rsa/keys/client.crt
/etc/openvpn/easy-rsa/keys/client.key

Все готово для подключения и проверки.

Нажимаем правой кнопкой на файл client.ovpn и выбираем Start OpenVPN on this config file. Если соединение прошло корректно, то увидите соответствующее сообщение:

Для Linux

Устанавливаем клиент:

RedHat-based OS (Centos, RockyLinux, AlmaLinux и т.д.):

yum install -y openvpn

Debian/Ubuntu:

apt update
apt install -y openvpn

 

В случае, если OpenVPN сервер был установлен скриптом или с использованием docker-контейнера, настройка клиента OpenVPN происходит следующим образом.

Полученный после настройки файл с расширением .conf, например, client.conf,помещаем по пути /etc/openvpn/client.conf и выполняем команду для подключения:

openvpn --config /etc/openvpn/openvpn.conf

 

В случае, если настройка OpenVPN сервера производилась вручную требуется сделать следующие действия:

Кладем три файла, сгенерированных на сервере в директорию /etc/openvpn/:

client1.key
client1.crt
ca.crt

Создаем/редактируем файл конфигурации:

/etc/openvpn/openvpn.conf

Получаем файл со следующим содержимым:

remote <IP.вашего.сервера> 1194
push "redirect-gateway def1"
tls-client
remote-cert-tls server
nobind
proto tcp-client
dev tun0
pull
resolv-retry infinite
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
persist-tun
persist-key
verb 3
route-method exe
route-delay 2

И подключаемся вручную с помощью такой команды:

openvpn --config /etc/openvpn/openvpn.conf

Этот материал был полезен?

Скидка 25% новым клиентам!
Закажи сервер сегодня и получи скидку на первый месяц аренды!