Установка 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