- Регистрация
- 12.05.16
- Сообщения
- 1.927
- Реакции
- 523
- Репутация
- 0
Поднять OpenVPN вручную вам не под силу? Не отчаивайтесь, у меня для вас хорошие новости!
На Github существует Open Source скрипт, который позволяет быстро и легко поднять OpenVPN сервер на вашем VPS. Скрипт называтся openvpn-install, и вот ссылка на
Посмотреть исходный код можно
Для начала, обновим систему:
Если вы уже пытались поднять OpenVPN вручную, но у вас ничего не получилось, то нужно сначала его полностью снести. Удаляем openvpn:
удаляем папку:
выключаем ufw:
и установим нужные пакеты:
Скачиваем скрипт в домашнюю папку root:
Переходим туда:
Запускаем скрипт:
И вы попадете в так называемый Инсталятор. Где нужно будет отвечать на вопросы или что-то вписывать. Для перехода на следующий этап установки жмите Enter.
Первый делом, предложит ввести внешний IP адрес, но вероятнее всего скрипт сам его определит:
Следующий этап, выбрать протокол. Я жму 1 и выбираю UDP. Далее, выбираете порт. Я поставлю, например 14000. После этого предложит выбрать DNS сервера. Выбор будет из Google, OpenDNS или текущих, которые на VPS и еще каких-то. Я выбираю OpenDNS, жму 3. После этого предложит ввести имя клиента. Я введу "pp-ruloh". Далее начнется скачивание-утановка пакетов, генерация ключей, сертификатов и конфигурационных файлов. когда все закончится, он поместит конфиг. в домашнюю папку юзера, от имени которого запсукался скрипт. То есть, сейчас конфиг лежит по адресу:
/root/
Собственно, на этом конфигурация OpenVPN скриптом завершается. Можно уже сейчас взять новый конфиг и использовать. Интересно, чего он там такого сгенерировал вам, посмотрим на конфиг pp-ruloh.ovpn:
(без ключей и сертификатов)
Все вроде бы нормально, да лучше auth SHA512 явно указать. Поэтому добавим
Вот так:
Обратите внимание, что скрипт уже запихнул фичу для предотвращения утечки DNS под клиент Windows:
Если у вас Linux или MacOS - эту строку лучше закомментировать.
Теперь посмотрим на серверный конфиг server.conf:
Здесь также добавляем auth SHA512 (а то работать не будет, если на клиенте указан а на серве нет), делаем verb 0. Также нужно проделать следующее. Нужно закомментировать строку.
И добавить log:
Где-то выше писал, зачем он нужен. Получилось так:
Берем клиентский файл-конфиг и помещаем на ваше устройство. Об этом я писал выше.
При повторном запуске скрипта из-под рута:
Скрипт предложит создать нового клиент, удалить существующего (не сможет больше коннектиться) или удалить 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), и ставится следующим образом:
Если у вас Debian-подобные дистрибутивы (Debian, Ubuntu, Mint). Если у вас дистрибутив другой линейки - сами разберетесь как ставить.
Работает это следующим образом. У вас есть .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 секунды понимаешь что твои штаны полны говна. Что нужно делать чтобы явно ограничить весь траффик?
А вот и сами правила:
# запрещаем все входящие и исходящие
# разрешаем уже установленные соединения и локалхост
# разрешаем соединения до VPN (VPN_IP заменить на ip вашего VPN сервера)
# разрешаем любые соединения через VPN
В конце:
# разрешаем любые соединения через VPN
Было изменено на:
# разрешаем любые соединения через VPN
Есть у нас правила, че дальше? Теперь открываем терминал в вашем Линуксе
И создаем файл, который назовем vpn.rules:
Поместим туда все правила:
В самом верху файла пишем:
Далее, правила из кода выше. Копируете - вставляете, меняете
# разрешаем соединения до VPN (VPN_IP заменить на ip вашего VPN сервера)
там где VPN_IP на IP вашего сервера (указан в .ovpn конфиге).
Сохраняете - закрываете.
Запсукае скрипт из под рута или sudo:
Теперь у нас применились правила. Можете проверить - без VPN инет работать не будет. Этот скрипт можно запускать каждый раз. А можно сохранить правила:
И сделать сервис iptables автозапускающимся при загрузки системы:
На этом все.
Боремся с детектом OpenVPN
VPN может детектироваться конечным ресурсом (например сайт) какими-то хитро-выесушанными способами. С этим нужно бороться.
Заходим на browserleaks.com
И смотрим строку "TCP/IP OS Fingerprinting"
Что делать?
Если у вас, как у меня, конфиг UDP, то можно проделать следующее. Мне помогает, если прописать
На клиенте .ovpn и сервере server.conf
На Github существует Open Source скрипт, который позволяет быстро и легко поднять OpenVPN сервер на вашем VPS. Скрипт называтся openvpn-install, и вот ссылка на
You must be registered for see links
. И этого скрипта есть куча форков, которые вы можете изучить.Посмотреть исходный код можно
You must be registered for see links
. Приступим. Работаем под пользователем root или суперпользователем.Для начала, обновим систему:
Код:
apt-get update && apt-get dist-upgrade -y
Код:
apt-get remove --purge openvpn
Код:
rm -rf /etc/openvpn/
Код:
ufw disable
Код:
apt-get install -y sudo nano curl perl python wget git iptables openvpn openssl ca-certificates
Код:
git clone https://github.com/Nyr/openvpn-install.git ~/nyr-openvpn
Код:
cd ~/nyr-openvpn/
Код:
bash openvpn-install.sh
Первый делом, предложит ввести внешний IP адрес, но вероятнее всего скрипт сам его определит:
Код:
IP address:111.222.111.222
/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
Код:
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
Код:
setenv opt block-outside-dns
Теперь посмотрим на серверный конфиг 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
Код:
status openvpn-status.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.
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
Работает это следующим образом. У вас есть .ovpn файл, далее вы в терминале вводите команду:
Код:
sudo openvpn --config <путьдофайла.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
Сохраняете - закрываете.
Запсукае скрипт из под рута или sudo:
Код:
sudo sh ~/vpn-rules.sh
Код:
sudo iptables-save >/etc/iptables/iptables.rules
Код:
systemctl enable iptables
Боремся с детектом OpenVPN
VPN может детектироваться конечным ресурсом (например сайт) какими-то хитро-выесушанными способами. С этим нужно бороться.
Заходим на browserleaks.com
И смотрим строку "TCP/IP OS Fingerprinting"
Что делать?
Если у вас, как у меня, конфиг UDP, то можно проделать следующее. Мне помогает, если прописать
Код:
mssfix 0
Статья интересная, но зачем отключать ufw
prad
.
- Регистрация
- 29.03.17
- Сообщения
- 594
- Реакции
- 452
- Репутация
- 0
Потому что скрипт, который устанавливает OPENVPN сам настроит и включит его. В соседней ветке - Поднимаем OPENVPN вручную. Боремся с утечкой DNS есть информация как это всё воспроизвести вручную.Статья интересная, но зачем отключать ufw
Поделиться: