Введение
В связи с последними событиями и возможной блокировкой публичных VPN сервисов созрела идея облегчить жизнь людям и сделать скрипт для быстрой установки OpenVPN со всеми настройками и легким выпуском сертификатов.
Скрипт позволяет одной командой создать работающий сервер и создать файлы конфигурации для клиентов в unified формате (то есть с сертификатами, включёнными в файл конфигурации). Кстати, эти файлы подходят для мобильных устройств.
Скрипт создавался для машин с CentOS 7.x или Ubuntu Server 17.x, использование на Ubuntu 16.x. возможно, но там OpenVPN 2.3.x в репозиториях. При необходимости можно добавить другие дистрибутивы, но обычно при покупке VPS можно выбрать систему и это не так важно.
Скрипт написан на bash за пару часов, возможны ошибки и наверняка что-то можно было реализовать проще и лучше.
Запускайте скрипт на свежей машине, он перезаписывает правила iptables и конфигурацию OpenVPN. И да, в правилах iptables разрешен порт ssh 22, если вы поменяли его на другой, не забудьте поменять порт в скрипте.
Особенности
- По умолчанию рекомендуется cipher AES-256-GCM (что достаточно безопасно на данный момент);
- По умолчанию используется auth SHA256 (вместо дефолтного SHA1);
- По умолчанию для OpenVPN 2.4.x используется tls-crypt (что усложняет обнаружение трафика OpenVPN);
- По умолчанию использует Google DNS и блокировку локальных DNS (setenv opt block-outside-dns) для предотвращения DNS Leak;
- Создаются все нужные правила в iptables и ip6tables;
- Есть поддержка IPv6.
Как пользоваться
Использовать скрипт очень просто, скачайте файл openvpnsetup.sh на ваш VPS, дайте ему права на запуск chmod +x openvpnsetup.sh и запустите ./openvpnsetup.sh. В результате вы получаете настроенный сервер, готовый к работе на выбранном вами порту.
В папке /etc/openvpn создается скрипт newclient.sh, который нужен для создания файлов конфигурации клиентской части, использовать его так же просто — ./newclient.sh clientname. Результатом будет файл /etc/openvpn/bundles/clientname.ovpn, который сразу можно использовать на клиенте, просто положите его в папку config (в случае использования на Windows) на вашей машине.
Если вы захотите пересоздать сервер, просто удалите все из папки /etc/openvpn и запустите скрипт заново (естественно, клиентские сертификаты надо будет перевыпустить).
Советы по выбору VPS для OpenVPN
- В первую очередь смотрим на цену, можно найти предложения за $3-4 в месяц, что дешевле многих VPN сервисов;
- Выбирайте VPS ближе к вам географически, если хотите иметь приемлемую скорость через VPN. Чем меньше пинг от вас до VPS, тем лучше скорость;
- Выбирайте минимальную конфигурацию. OpenVPN не использует больше одного ядра и может работать на 256MB памяти. Минимального дискового пространства в 3-5GB так же вполне достаточно;
- Некоторые VPS ограничены по трафику, но обычно это 1TB в месяц, если вы планируете использовать больше, рассмотрите другие тарифные планы;
- Перед тем как оформить заказ на VPS, уточните разрешена ли загрузка торрентов (при условии, что они вам нужны, конечно);
- Так же можно уточнить включены ли TUN/TAP устройства в системе. В скрипте есть проверка на это, но лучше уточнить до покупки, возможно их и нельзя будет включить через поддержку провайдера VPS;
- Наличие IPv6 адреса, скрипт позволяет настроить сервер с поддержкой IPv6 и возможно вы захотите иметь возможность посещать IPv6 ресурсы через VPN.
Скрипт доступен на GitHub.
Бонус: результат проверки анонимности на 2ip.ru:
Проверка на WITCH?:
Проверка на DNS Leak:
Комментарии (55)
dmitry_dvm
13.08.2017 13:10+1Плюсую предыдущего оратора. А слабо написать такое же, но чтобы IKEv2, чтобы на той же винде и смартфонах всё искаропки заработало без стороннего софта?
xl-tech Автор
13.08.2017 13:34Кстати, хоршая идея, слышал что с клиентом в Windows 10 какие-то проблемы есть, буду тестировать.
lomnev
13.08.2017 18:35https://github.com/trailofbits/algo
dmitry_dvm
14.08.2017 14:22Спасибо за ссылочку. С strongswan, kernel-libipsec раза 3 пытался воевать, не осилил.
vorphalack
14.08.2017 16:41а на чем засыпались?
при наличии kernel-libipsec кмк там только на генерации сертификатов можно встрять, если руками их делать.
vorphalack
13.08.2017 21:43+1у IKEv2 есть два минуса — его видно, и его режут. а так в принципе ставим strongswan, kernel-libipsec и вперед. там все простенько, реально.
solalex
13.08.2017 14:47а где дают vps за 3 бакса в месяц?
xl-tech Автор
13.08.2017 14:57Смотрите на lowendbox, рекламные ссылки давать не буду. Можно найти и за $2.25 в месяц, видел акции по $8 в год как-то.
anc813
13.08.2017 21:51wishosting (есть отзывы на lowendtalk) план OpenVZ Mini за 3$ в год (получается 0.25$ в месяц, но заказывать надо на год), но там NAT (есть 20 портов) и вообще куча ограничений (постоянно нельзя использовать более 15% ресурсов т.н. fair use policy), зато 256 МБ RAM, 40 GB HDD, и трафик без ограничений (но не более 15% пропускной способности — т.е. не более 37 Мбит/с постоянно), сервер во Франции (пинг около 50 мс). Можно выбрать Ubuntu или Debian или CentOS
Мне хватает на крохотный личный Django проект для сбора информации с ESP и подключенных датчиков и довольно редкого VPN (сам сервер VPN запущен постоянно)
Пользую с мая месяца, и очень доволен, думал собирать информацию с датчиков на старый нетбук, но даже только по затратам на электричество (в час около 15 Вт) выходит вдвое дороже.vanburg
14.08.2017 14:47Я проклял все, час пытаясь оплатить их через payza.com (других вариантов с кредитками нет).
К самому сервису пока нет претензий, но payza это какое-то адовое бажное адище.
UPD: используйте 2Checkout, так хоть и написано paypal, карты берут. На все ушло 2 минуты, блин.
valera5505
13.08.2017 22:28+1OVH за 3.5 доллара дает 2 гигабайта оперативки, 10 гигабайт ссд и 100 мегабит безлимитный трафик.
Godless
14.08.2017 09:51у них же нет ограничений на VPN и торренты?
А то там в Terms тыщща файлов, вроде в common и VPS нет никаких запретов.
maledog
13.08.2017 18:31Наша организация обслуживает IoT с debian. Так вот, почти везде openvpn для этого хватает. Но есть места, где местной сетью или провайдером просто рубится TLS Handshake. При этом порты формально доступны. Возможно скоро нас ожидает подобное повсеместно. Пока выкручивались пропуская openvpn внутри ssh-туннеля или kcptun.
WebProd
13.08.2017 18:35Может я что-то не так настроил (хотя маловероятно поскольку настроек нет)? У меня утекают DNS. Ubuntu 16.04, но версия OpenVPN 2.4.3
WebProd
13.08.2017 18:36Надо в клиентском конфиге прописать
script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
xl-tech Автор
13.08.2017 18:39Зависит от клиента, setenv opt block-outside-dns работает только на Windows (начиная с 7-ки).
WebProd
13.08.2017 18:46это я уже понял, тогда может в скрипте спрашивать под какую систему нужен конфиг? и как будет на Android?
xl-tech Автор
13.08.2017 19:17Начал тестировать и узнал интересную вещь — auth SHA256 не поддерживатся OpenVPN Connect на Android… (тестировал на 4.3 и 7).
/etc/openvpn/update-resolv-conf — этого скрипта нет в поставке клиента на RHEL клонах насколько я знаю, тоже надо подумать что можно сделать.
Foxcool
13.08.2017 19:47+1Есть еще вариант быстрого подъема VPN с помощью SoftEther и Docker https://t.me/darkfox_info/48
Тут вообще одной строчкой можно поднять сервис и подрубатьсяк нему с посощью разных протоколов. Еще на телеграм канале https://t.me/distributed разные варианты обсуждали (в т.ч. поболее легковесные). Но сам не помню. Можно у парней спрашивать способы.xl-tech Автор
13.08.2017 20:01+1Думаю, вам стоит написать статью, чем больше способов обхода тем лучше. SoftEther хорошая штука, жалко под свой протокол нет мобильных клиентов у них. За один http://www.vpngate.net/en/ можно им огромное спасибо сказать.
vanburg
14.08.2017 07:05По работе понадобился доступ к LinkedIn на уровне api, и только на одной машине с макосью., т.е. не браузер. Чего почитать из статеек чтобы только этот траф шел через vpn? В остальном штатными средствами обхожу этот {роскомнадзор}.
Раскурив солюшен, хочу его на orange pi за натом перевесить, чтоб и удаленно с мобилы проблем тоже не знать. Но это вторично.
Спасибо!xl-tech Автор
14.08.2017 11:43Тот же OpenVPN умеет поднимать маршруты только до нужных ресурсов, убираете в конфигурации сервера:
push «redirect-gateway def1 bypass-dhcp» (редирект всего трафика) и добавляете push «route 108.174.10.10 255.255.255.255» (маршрут до linkedin.com).
F0iL
14.08.2017 14:38а почему ограничились только CentOS и Ubuntu?
На Debian/testing тоже сработало, только пришлось чуть-чуть поколдовать из-за несоответствий версий easy-rsa и openssl (у второго уже 1.1, а первый о таком не знает).
Scf
14.08.2017 18:34Вот образы Docker для впн, с инструкцией, работают давно и стабильно
OpenVPN (для компа):
https://github.com/scf37/docker-openvpn
L2TP/IpSec (для домашнего роутера):
https://github.com/scf37/docker-l2tp
Shtucer
Стопервый пост о том, как развернуть VPN на DigitalOcean. На этот раз без упоминания DigitalOcean.
ac130kz
согласен на все сто, и предлагаю автору поста тему для публикации — быстрый и стабильный vpn