Быстро поднять OpenVPN скриптом

Быстро поднять OpenVPN скриптом

На Github существует Open Source скрипт, который позволяет быстро и легко поднять OpenVPN сервер на вашем VPS.

Скрипт называтся openvpn-install, и вот ссылка на Github: nyr/openvpn-install

И этого скрипта есть куча форков, которые вы можете изучить.

Посмотреть исходный код можно здесь.

Приступим.

Если вы уже пытались поднять OpenVPN вручную, но у вас ничего не получилось, то нужно сначала его полностью снести.

Удаляем openvpn:

apt-get remove --purge openvpn

удаляем папку:

rm -rf /etc/openvpn/

выключаем ufw:

ufw disable

Далее.

Работаем под пользователем root или суперпользователем.

Для начала, обновим систему:

apt-get update && apt-get dist-upgrade -y

и установим нужные пакеты:

apt-get install -y sudo nano curl perl python wget git iptables openvpn openssl ca-certificates

Скачиваем скрипт в домашнюю папку root:

git clone https://github.com/Nyr/openvpn-install.git ~/nyr-openvpn

Переходим туда:

cd ~/nyr-openvpn/

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

bash openvpn-install.sh

И вы попадете в так называемый Инсталлятор. Где нужно будет отвечать на вопросы или что-то вписывать. Для перехода на следующий этап установки жмите Enter.

Первый делом, предложит ввести внешний IP адрес, но вероятнее всего скрипт сам его определит:

IP address: 111.222.111.222

Следующий этап, выбрать протокол. Я жму 1 и выбираю UDP.

Далее, выбираете порт. Я поставлю, например 14000.

После этого предложит выбрать DNS сервера. Выбор будет из Google, OpenDNS или текущих, которые на VPS и еще каких-то. Я выбираю OpenDNS, жму 3.

После этого предложит ввести имя клиента. Я введу «pp-runion».

Далее начнется скачивание-установка пакетов, генерация ключей, сертификатов и конфигурационных файлов.

когда все закончится, он поместит конфиг. в домашнюю папку юзера, от имени которого запускался скрипт.

То есть, сейчас конфиг лежит по адресу:

/root/

Собственно, на этом конфигурация OpenVPN скриптом завершается.

Можно уже сейчас взять новый конфиг и использовать.

Просто, да?

Интересно, чего он там такого сгенерировал вам, посмотрим на конфиг pp-runion.ovpn:

nano ~/pp-runion.ovpn

>>: (без ключей и сертификатов)

client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 111.222.111.222 14000
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
comp-lzo
setenv opt block-outside-dns
key-direction 1
verb 3
<ca>

Все вроде бы нормально, да лучше auth SHA512 явно указать.

Поэтому добавим

auth SHA512

Вот так:

client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 111.222.111.222 14000
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA512
comp-lzo
setenv opt block-outside-dns
key-direction 1
verb 3

Обратите внимание, что скрипт уже запихнул фичу для предотвращения утечки DNS под клиент Windows:

setenv opt block-outside-dns

Если у вас Linux или MacOS — эту строку лучше закомментировать.

Теперь посмотрим на серверный конфиг server.conf:

nano /etc/openvpn/server.conf

>>:

port 14000
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem

Здесь также добавляем auth SHA512 (а то работать не будет, если на клиенте указан, а на сервере нет), делаем verb 0.

Также нужно проделать следующее.

Нужно закомментировать строку

status openvpn-status.log

И добавить log:

log /dev/null 2>&1

Где-то выше писал, зачем он нужен.

Получилось так:

port 14000
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
cipher AES-256-CBC
auth SHA512
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
#status openvpn-status.log
log /dev/null 2>&1
verb 0
crl-verify crl.pem

Берем клиентский файл-конфиг и помещаем на ваше устройство. Об этом я писал выше.

При повторном запуске скрипта из-под рута:

bash /root/nyr-openvpn/openvpn-install.sh

Скрипт предложит создать нового клиент, удалить существующего (не сможет больше коннектиться) или удалить OpenVPN.

Клиенты OpenVPN под разные ОС

Поскольку OpenVPN не встроен по-умолчанию ни в одну популярную ОС, то требуется установить стороннее ПО — клиент OpenVPN.

Windows.

Скачать с оф. сайта ниже.

Под Windows есть официальный клиент, называется OpenVPN GUI.

Скачиваете, устанавливаете. Появится ярлык на раб. столе, после запуска — иконка в трее.

Далее, помещаете ваш .ovpn файл в папку config, в установленной папке OpenVPN.

В общем, если устанавливать OpenVPN GUI по-умолчанию в папку Program Files, то адрес такой:

C:Program FilesOpenVPNconfig

В эту папку кидаем конфиги .ovpn.

Потом из трея можно запускать VPN. Все достаточно просто.

Linux.

На Линукс в репозиориях вашего дистрибутива пакет скорее всего будет называется «openvpn» (еще может openvpn-client), и ставится следующим образом:

sudo apt-get install openvpn

Если у вас Debian-подобные дистрибутивы (Debian, Ubuntu, Mint).

Если у вас дистрибутив другой линейки — сами разберетесь как ставить.

Работает это следующим образом. У вас есть .ovpn файл, далее вы в терминале вводите команду:

sudo openvpn --config <путь до файла .ovpn>

где <путь до файла .ovpn>, собственно, путь до файла .ovpn.

Или можете скормить файл network-manager ‘ у.

MacOS.

Скачать ниже.

Под MacOS из клиентов OpenVPN я знаю только Tunnelblick.

Устанавливается просто, требует права суперпользователя.

По-умолчанию будет открывать файлы с расширением .ovpn.

Будет иконка в трее, там конектимся.

Можно настроить, что бы коннектился к OpenVPN сразу при загрузке системы.

Когда соединение обрывается с VPN, интернет пропадает. В этом случае нужно вручную отсоединяться от VPN.

Источник:
Статья