|
|||||||
настройка OpenVPN в Ubuntu
Время создания: 13.01.2019 16:30
Автор: alensav
Текстовые метки: настройка, OpenVPN, Ubuntu
Раздел: MyTetra - INTERNET
Запись: alensav/MyTetra2/main/base/1547386241mfam5n9api/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Установки и настройка OpenVPN в Ubuntu Linux за 5 минут 4 марта 2015 Постоянные читатели этого блога, скорее всего, уже пару-тройку раз в своей жизни настраивали OpenVPN. Но думается, что новичкам данная заметка будет интересна и полезна. Из нее вы узнаете, как за пять минут поднять собственный VPN сервер, а также зачем он, собственно, нужен. Ну хорошо, учитывая время на регистрацию в каком-нибудь Amazon’е , DigitalOcean, Vscale.io или FastVDS и оплату VDS, пожалуй, потребуется не пять минут, а «целых» пятнадцать. Итак, зачем же кому-то ходить в сеть через VPN? На то есть целый ряд причин. Например, чтобы ваши пароли, передаваемые по HTTP, не утекли, когда вы сидите с открытых WiFi точек неизвестного происхождения. Да и вообще, даже вашему обычному провайдеру не обязательно знать, на какие сайты вы ходите. Еще — чтобы не палить свой IP в IRC сетях и прочих сервисах, с которыми вы работаете. Им знать ваше местоположение тоже совсем ни к чему. Также вам может захотеться попробовать какой-нибудь новый сервис, который пока что недоступен для пользователей с российским IP. Кроме того, трафик между вами и VPN сервером не только шифруется, но и сжимается, что нередко может создать ощущение более быстрого интернета. Еще OpenVPN может быть полезен в ряде других случаев, например, для доступа сотрудников ко внутренним ресурсам компании, когда они не в офисе. Почему VPN, а не какие-нибудь прокси или пробрасывание портов через SSH, надеюсь, тоже понятно. VPN достаточно настроить один раз и сразу весь трафик всех приложений пойдет через VPN cервер, в сжатом и зашифрованном виде. Чтобы поднять свой VPN, вам потребуется собственный сервер с Ubuntu Linux (или любым другим Linux/*BSD, но тогда вам будет довольно сложно следовать инструкциям данной заметки), а также права root’а на нем. Если сервер у вас уже есть, хорошо. Если нет, то не расстраивайтесь. В наши дни купить подходящий VDS/VPS можно за смешные 5$ в месяц или даже меньше. Компаний, предлагающих соответствующие услуги — десятки, некоторые были названы в начале заметки. Лично я рекомендую присмотреться к DigitalOcean . Но не поленитесь изучить вопрос самостоятельно, так как к моменту прочтения вами этих строк ситуация на рынке VDS может измениться. Заходим на сервер, становимся root’ом, говорим: apt-get update Раньше в OpenVPN входила утилита под названием easy-rsa, предназначенная для генерации ключей и сертификатов. Начиная с версии 2.3 эту утилиту из пакета выпилили, поэтому придется скачать и собрать ее самостоятельно: cd /tmp Генерируем все необходимые ключи и сертификаты. Приготовьтесь вводить для них пароли. Так как мы настраиваем персональный VPN сервер, то, видимо, можно использовать один-единственный пароль, но подлиннее: ./easyrsa init-pki Выполнение последней команды может занять несколько минут. Переносим полученные ключи и сертификаты в каталог /etc/openvpn/: mv ./pki/dh.pem /etc/openvpn/dh.pem В том же каталоге создаем файл server.conf: mode server Попробуем запустить OpenVPN. При запуске от вас будет требоваться ввести пароль. Соответственно, после ребута поднимать OpenVPN придется руками. Но поскольку мы настраиваем персональный VPN, вряд ли это представляет собой бОльшую проблему, чем ключи, лежащие в открытом виде, или еще хуже — сохраненные пароли. Запускаем: service openvpn start Проверяем: netstat -tuwpan Сервер должен слушать порт 1194. Если это не так, курим /var/log/syslog. Теперь что касается клиентской стороны. Нам понадобятся файлы client1.crt, client1.key и ca.crt: mkdir vpn Создадим файл client.conf: client Подрубаемся к серверу, внимательно читаем логи: sudo openvpn --config client.conf В соседнем терминале говорим: ping 10.128.0.1 Если все было сделано правильно, вы обнаружите, что пинги успешно доходят до 10.128.0.1 (первая команда), но пакеты через него никуда не проходят (вторая команда). Это потому что мы забыли настроить на сервере NAT. Что мне лично кажется странным. Я смутно припоминаю, что когда в свое время я поднимал OpenVPN на FreeBSD , подобного шага не требовалось. Впрочем, я могу и ошибаться. На сервере открываем файл /etc/sysctl.conf и раскомментируем в нем строчку: net.ipv4.ip_forward=1 Чтобы не пришлось перезагружаться, говорим: echo 1 >> /proc/sys/net/ipv4/conf/all/forwarding Затем: iptables -A FORWARD -s 10.128.0.0/24 -j ACCEPT … где 123.45.67.89 — это IP сервера. Переподключаемся клиентом, попробуем зайти на какие-нибудь 2ip.ru или eax.me/ip — теперь все должно работать. Если это не так, курим логи. Если все ОК, сохраняем правила фаервола на сервере: iptables-save > /etc/iptables.rules … и проверяем, что в файле /etc/network/interfaces есть строчка: pre-up iptables-restore < /etc/iptables.rules Если на сервере ранее уже настраивался фаервол , может оказаться, что правила хранятся в файле с именем, отличным от /etc/iptables.rules. Можно сказать reboot и проверить, что настройки держатся после перезагрузки сервера: cat /proc/sys/net/ipv4/conf/all/forwarding Сервер OpenVPN, разумеется, придется перезапустить руками. Осталось сделать последний штрих на клиенте. Дело в том, что (1) запускать openvpn в отдельном терминале и следить, не упал ли он там, неудобно. Кроме того, (2) если на клиенте сказать: nm-tool | grep DNS … где 192.168.0.1 — DNS вашего провайдера (выводится утилитой nm-tool), вы обнаружите, что резолвинг доменов сломался, а следовательно клиент все еще использует DNS провайдера. Можно убить двух зайцев, сказав: sudo apt-get install network-manager-openvpn-gnome … и настроив VPN через NetworkManager (иконку сети в правом верхнем углу Unity ). Делается это несложно, фактически нужно повторить текстовый конфиг клиента при помощи галочек и полей ввода. Понять, какая галочка какой строчке в конфиге соответствует, очень легко. Главное — не полениться залезть во всякие продвинутые свойства сети и прочие разделы настроек. Если же вы где-то ошибетесь, проблему можно с легкостью диагностировать при помощи файла /var/log/syslog. Несмотря на то, что заметка получилась довольно длинной, настройка OpenVPN действительно занимает всего лишь несколько минут. Безопасного и быстрого вам веб-серфинга! А также, как всегда, я буду искренне рад вашим вопросам и дополнениям. Дополнение: Я столкнулся с такой проблемой, что OpenVPN не переподключался к серверу после выхода ноутбука из спящего режима. Исправить ситуацию помогла команда sudo pkill --signal SIGHUP --exact openvpn, выполняемая сразу после выходя из спящего режима. Для этого соответствующая команда была дописана в скрипт , который я использую для входа в спящий режим, откуда она вызывается с небольшой задержкой. Чтобы это работало, у пользователя должно быть право говорить sudo без пароля. Кроме того, в конфиге сервера OpenVPN мне пришлось убрать параметр keepalive, а в клиентском конфиге добавить ping-restart 0. Дополнение: Вы можете держать OpenVPN и веб-серер (например, Nginx ) на одном порту. Для этого веб-сервер должен слушать, к примеру, 127.0.0.1:4443, а у OpenVPN в конфиге следом за port 443 нужно написать port-share 127.0.0.1 4443. Конкретно порт 443 интересен тем, что на нем обычно живет HTTPS . Поэтому интернет-провайдеры редко режут или как-то модифицируют трафик, идущий на этот порт. Если держать VPN на другом порту, он может оказаться недоступен по Wi-Fi в каком-нибудь кафе или аэропорте. Дополнение: Вас также могут заинтересовать статьи, посвященные sshuttle и Tor . А из поста про роутер на базе Raspberry Pi вы узнаете, как можно завернуть в VPN сетевой трафик сразу всех ваших устройств. Метки: Linux , Безопасность . |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|