OpenVPN — это бесплатное программное обеспечение VPN (Virtual Private Network) с открытым исходным кодом, которое позволяет безопасно подключаться к удаленной сети через Интернет. В этой статье мы проведем вас через процесс установки OpenVPN на сервер Ubuntu 18.04/20.04/22.04.
Метод 1:
Установка OpenVPN с помощью сценария.
Сначала получите сценарий и сделайте его исполняемым:
$ curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
$ chmod +x openvpn-install.sh
Затем запустите его:
$ ./openvpn-install.sh
Вам нужно запустить скрипт от имени root и с включенным модулем TUN.
При первом запуске вам нужно будет следовать указаниям помощника и ответить на несколько вопросов, чтобы настроить VPN-сервер.
Когда OpenVPN будет установлен, вы можете запустить скрипт снова, и у вас появится выбор:
root@ubuntu:~# ./openvpn-install.sh Welcome to OpenVPN-install! The git repository is available at: https://github.com/angristan/openvpn-install It looks like OpenVPN is already installed. What do you want to do? 1) Add a new user 2) Revoke existing user 3) Remove OpenVPN 4) Exit Select an option [1-4]:
вы можете добавить нового пользователя или отозвать существующего.
Метод 2 :
Шаг 1: Обновление и модернизация Ubuntu
Перед установкой любого нового программного обеспечения всегда рекомендуется обновить и модернизировать систему Ubuntu. Это можно сделать, выполнив следующие команды:
$ sudo apt update
$ sudo apt upgrade
Шаг 2: Установите OpenVPN
Вы можете установить OpenVPN на Ubuntu, выполнив следующую команду:
$ sudo apt install openvpn easy-rsa
Шаг 3: Генерация сертификатов и ключей
OpenVPN использует сертификаты и ключи для аутентификации клиентов и серверов. Вы можете сгенерировать эти файлы, запустив скрипт easy-rsa, входящий в состав OpenVPN. Для этого выполните следующие действия:
$ make-cadir ~/openvpn-ca && cd ~/openvpn-ca
Отредактируйте файл vars
файл, чтобы задать переменные центра сертификации (ЦС):
$ nano ./vars
Отредактируйте переменные по мере необходимости, например:
set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "San Francisco"
set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "My Organizational Unit"
$ ./easyrsa init-pki
$ ./easyrsa build-ca
$ ./easyrsa gen-req server nopass
$ ./easyrsa sign-req server server
$ ./easyrsa gen-dh
$ openvpn --genkey --secret pki/ta.key
Сертификаты и ключи будут созданы в папке /root/openvpn-ca/pki
каталоге.
Шаг 4: Настройте OpenVPN
После генерации сертификатов и ключей необходимо настроить OpenVPN. Для этого создайте новый файл конфигурации с помощью следующей команды:
$ sudo cp pki/dh.pem pki/ca.crt pki/ta.key pki/issued/server.crt pki/private/server.key /etc/openvpn/
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf
Отредактируйте следующее содержимое файла конфигурации /etc/openvpn/server.conf
:
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh.pem
;tls-auth ta.key 0
tls-crypt ta.key
push "redirect-gateway def1 bypass-dhcp"
Сохраните и закройте файл.
Включение переадресации IP-адресов
$ sudo nano /etc/sysctl.conf
# Uncomment the following line:
net.ipv4.ip_forward=1
Затем примените изменения:
$ sudo sysctl -p
Шаг 5: Запуск и включение OpenVPN
Вы можете запустить и включить службу OpenVPN с помощью следующих команд:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
[@server
указывает на имя файла конфигурации, созданного ранее.
Шаг 6: Настройка брандмауэра
Вам необходимо разрешить трафик OpenVPN через брандмауэр. Это можно сделать, создав новое правило с помощью следующей команды:
$ sudo ufw allow OpenVPN # ignore if you don't use firewall
Добавить маршрутизацию iptables
$ ifconfig
.
.
.
venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
inet 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0 destination 127.0.0.1
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
RX packets 4825 bytes 467045 (467.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3331 bytes 322185 (322.1 KB)
TX errors 0 dropped 1167 overruns 0 carrier 0 collisions 0
venet0:0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP> mtu 1500
inet 7.249.98.8 netmask 255.255.255.0 broadcast 7.249.98.255 destination 7.249.98.8
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 0 (UNSPEC)
.
.
Наша основная сеть venet0 возможно, у вас есть eth0 или что-то другое
$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
Шаг 7: Подключение к серверу OpenVPN
Теперь, когда сервер OpenVPN запущен, вы можете подключиться к нему с клиентского компьютера. Для этого вам нужно установить на свой компьютер клиентское программное обеспечение OpenVPN и загрузить с сервера файл конфигурации клиента. Это можно сделать, выполнив на сервере следующую команду:
$ ./easyrsa gen-req client1 nopass
$ ./easyrsa sign-req client client1
$ sudo cp pki/private/client1.key /etc/openvpn/client/
$ sudo cp pki/issued/client1.crt /etc/openvpn/client/
$ sudo cp pki/{ca.crt,ta.key} /etc/openvpn/client/
Создайте файл конфигурации клиента в папке /root/openvpn-ca
, чтобы использовать его в качестве базовой конфигурации:
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root/openvpn-ca/
Откройте этот файл с помощью nano
и отредактируйте эти переменные:
remote 192.168.1.5 1194 # 192.168.1.5 is the server public IP
user nobody
group nogroup
;ca ca.crt
;cert client.crt
;key client.key
;tls-auth ta.key 1
key-direction 1
Теперь создайте сценарий для компиляции базовой конфигурации с необходимыми файлами сертификатов, ключей и шифрования.
$ nano config_gen.sh
Добавьте следующее содержимое:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=/etc/openvpn/client
OUTPUT_DIR=/root # change it to output directory
BASE_CONFIG=/root/openvpn-ca/client.conf # Change it to client.conf in your system
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-crypt>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-crypt>') \
> ${OUTPUT_DIR}/${1}.ovpn
После написания сценария сохраните и закройте файл config_gen.sh.
Не забудьте сделать файл исполняемым, запустив его:
$ sudo chmod 700 /root/openvpn-ca/config_gen.sh
$ sudo ./config_gen.sh client1
Эта команда создаст новый файл с именем client1.ovpn
в /root/
каталоге.
Скопируйте этот файл на клиентский компьютер и используйте его для подключения к серверу OpenVPN.
Заключение
В этом руководстве мы показали вам, как установить и настроить OpenVPN на сервере Ubuntu. С помощью OpenVPN вы можете безопасно подключаться к удаленной сети и получать доступ к ее ресурсам из любой точки мира.