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

Требование к оборудованию

Виртуализация — KVM. Сервер — VPS/VDS на Linux.

Установка OpenVPN

С помощью Docker

  • apt install curl docker.io
  • yum install docker curl 
  • 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

Когда ваша конфигурацию подготовиться, скачайте ее по ссылке — http://ваш IP/

С помощью скрипта

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

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

Права для файла:

  • chmod +x openvpn-install.sh

Запуск скрипта:

  • ./openvpn-install.sh

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

Вы можете добавить пароль на подключение. Чтобы не инициализировать ключ для подключения, введите цифру 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 — имя пользователя

Чтобы скачать файл конфигурации, проведите аналогичную процедуру (ваш IP). При повторном запуске скрипта, вы можете:

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

Ручная установка OpenVPN

Установка сервера

  • apt install -y openvpn

Разархивируйте ключи: 

mkdir /src; cd /src && wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

unzip master.zip

cd easy-rsa-master/easyrsa3

./easyrsa init-pki

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

./easyrsa build-ca

Вывод:

./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

Сгенерируйте файл с параметрами Диффи-Хеллмана:

./easyrsa gen-dh

Вывод:

./pki/dh.pem

Перенесите файлы:

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. Пример конфигурации:

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 server:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

echo 1 > /proc/sys/net/ipv4/ip_forward

Запуск OpenVPN:

systemctl start openvpn

Настройка OpenVPN

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

Windows

Клиент для Windows: https://openvpn.net/

Скрипт или контейнер

Импортируйте конфигурацию:

Выберите необходимый файл:

Конфигурация успешно импортирована:

Чтобы подключиться:

Подключение после ручной корректировки

Перейдите в директорию, где расположена программа (например, C:\Program and Files\OpenVPN\sample-config).

Откройте в текстовом редакторе файл client.ovpn, внесите дополнение:

remote my-server-1 1194

Скачивайте данные файлы (скачать нужно в ту директорию, где проводили корректировки):

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

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

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

Выберите Start OpenVPN on this config file. Сообщение в случае успешного соединения:

Linux

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

Centos 7 (yum install -y openvpn)

Debian/Ubuntu (apt install -y openvpn)

Скрипт или контейнер

Разместите файл .conf в /etc/openvpn/client.conf, выполните подключение:

 openvpn —config /etc/openvpn/openvpn.conf

Загрузите 3 файла, созданных на сервере в директорию /etc/openvpn/:

client1.key

client1.crt

ca.crt

Вы получите файл с кодом:

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