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

rmx1337

Участник
Статус
offline
Регистрация
29.04.2017
Сообщения
28
Репутация
17
P.S. Копирайт

Поднять OpenVPN вручную вам не под силу? Не отчаивайтесь, у меня для вас хорошие новости!

О Чудо!

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

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

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

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

Приступим.

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

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

Код:
apt-get update && apt-get dist-upgrade -y

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

Код:
apt-get remove --purge openvpn

удаляем папку:
Код:
rm -rf /etc/openvpn/

выключаем ufw:
Код:
ufw disable

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

Код:
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[CODE]

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

[CODE]cd ~/nyr-openvpn/

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

Код:
bash openvpn-install.sh

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

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

IP address: 111.222.111.222

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

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

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

После этого предложит ввести имя клиента. Я введу " FORKSCLUB".

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

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

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

/root/


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

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

Просто, да?

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

nano ~/FORKSCLUB.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.