BDFINFO1.9
Оффлайн
Регистрация
12.05.16
Сообщения
1.927
Реакции
523
Репутация
0
Поднять OpenVPN вручную вам не под силу? Не отчаивайтесь, у меня для вас хорошие новости!

На Github существует Open Source скрипт, который позволяет быстро и легко поднять OpenVPN сервер на вашем VPS. Скрипт называтся 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
Переходим туда:
Код:
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-ruloh". Далее начнется скачивание-утановка пакетов, генерация ключей, сертификатов и конфигурационных файлов. когда все закончится, он поместит конфиг. в домашнюю папку юзера, от имени которого запсукался скрипт. То есть, сейчас конфиг лежит по адресу:

/root/
Собственно, на этом конфигурация OpenVPN скриптом завершается. Можно уже сейчас взять новый конфиг и использовать. Интересно, чего он там такого сгенерировал вам, посмотрим на конфиг pp-ruloh.ovpn:
Код:
nano ~/pp-ruloh.ovpn
(без ключей и сертификатов)
Код:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 111.222.111.22214000
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
Все вроде бы нормально, да лучше auth SHA512 явно указать. Поэтому добавим
Код:
auth SHA512
Вот так:
Код:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote 111.222.111.22214000
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.0255.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 10120
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/null2>&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.0255.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 10120
cipher AES-256-CBC
auth SHA512
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
#status openvpn-status.log
log /dev/null2>&1
verb 0
crl-verify crl.pem
Берем клиентский файл-конфиг и помещаем на ваше устройство. Об этом я писал выше.

При повторном запуске скрипта из-под рута:
Код:
bash /root/nyr-openvpn/openvpn-install.sh
Скрипт предложит создать нового клиент, удалить существующего (не сможет больше коннектиться) или удалить OpenVPN.

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

Windows

Под Windows есть официальный клиент, называется OpenVPN GUI.
Скачать его можно на офф. сайте OpenVPN. Скачиваете, устанавливаете. Появится ярлык на раб. столе, после запуска - иконка в трее.

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

C:\Program Files\OpenVPN\config
В эту папку кидаем конфиги .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.

Android

Официальный клиент OpenVPN Connect под Android доступен для скачивания на Google Play

iOS

Для iOS клиент скачиваем из AppStore.

Клиенты, предоставляемые провайдером VPN. Некоторые провайдеры предоставляеют свой собственный OpenVPN клиент под разные ОС и платформы. Использовать их или нет, решать вам. Но это потенциально не очень безопасно.

Запрещаем весь траффик не через OpenVPN на клиенте
Правила iptables. Только для адептов Луникса. Что делать если VPN внезапно отключился? Или вы забыли его включить вообще? Обычно, когда внезапно обнаруживаешь, что траффик идет не через VPN, и при этом ты не используешь Whonix, то через 3 секунды понимаешь что твои штаны полны говна. Что нужно делать чтобы явно ограничить весь траффик?

А вот и сами правила:

# запрещаем все входящие и исходящие
Код:
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# разрешаем уже установленные соединения и локалхост
Код:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# разрешаем соединения до VPN (VPN_IP заменить на ip вашего VPN сервера)
Код:
iptables -A OUTPUT -d VPN_IP -j ACCEPT

# разрешаем любые соединения через VPN
Код:
iptables -A OUTPUT -o tun+-j ACCEPT
В конце:

# разрешаем любые соединения через VPN
Код:
iptables -A OUTPUT -i tun+-j ACCEPT
Было изменено на:

# разрешаем любые соединения через VPN
Код:
iptables -A OUTPUT -i tun+-j ACCEPT
Есть у нас правила, че дальше? Теперь открываем терминал в вашем Линуксе

И создаем файл, который назовем vpn.rules:
Код:
touch ~/vpn-rules.sh
Поместим туда все правила:

Код:
nano ~/vpn-rules.sh
В самом верху файла пишем:

Код:
#!/bin/sh
Далее, правила из кода выше. Копируете - вставляете, меняете

# разрешаем соединения до VPN (VPN_IP заменить на ip вашего VPN сервера)
Код:
iptables -A OUTPUT -d VPN_IP -j ACCEPT
там где VPN_IP на IP вашего сервера (указан в .ovpn конфиге).

Сохраняете - закрываете.

Запсукае скрипт из под рута или sudo:

Код:
sudo sh ~/vpn-rules.sh
Теперь у нас применились правила. Можете проверить - без VPN инет работать не будет. Этот скрипт можно запускать каждый раз. А можно сохранить правила:

Код:
sudo iptables-save &gt;/etc/iptables/iptables.rules
И сделать сервис iptables автозапускающимся при загрузки системы:

Код:
systemctl enable iptables
На этом все.

Боремся с детектом OpenVPN
VPN может детектироваться конечным ресурсом (например сайт) какими-то хитро-выесушанными способами. С этим нужно бороться.

Заходим на browserleaks.com
И смотрим строку "TCP/IP OS Fingerprinting"
Что делать?
Если у вас, как у меня, конфиг UDP, то можно проделать следующее. Мне помогает, если прописать

Код:
mssfix 0
На клиенте .ovpn и сервере server.conf
 
  • Like
Реакции: ratatyu и Purit
P
Оффлайн

Purit

.
Регистрация
19.06.17
Сообщения
18
Реакции
9
Репутация
57
Статья интересная, но зачем отключать ufw
 
prad
Оффлайн

prad

.
Регистрация
29.03.17
Сообщения
594
Реакции
452
Репутация
0
Сверху Снизу