Настройка vpn manjaro linux

Обновлено: 04.07.2024

OpenVPN часто используется для создания виртуальных безопасных сетей между компьютерами, которые находятся на очень большом расстоянии, но при этом между ними нужно получить шифрованное безопасное соединение, которое невозможно перехватить и прослушать.

Другое применение для OpenVPN - это обход блокировок различных интернет ресурсов. Существуют различные серверы OpenVPN серверы в интернете, но будет намного надежнее если развернуть OpenVPN на своем сервере. Мы рассматривали процесс в статье установка OpenVPN на Ubuntu, но для новичков это достаточно сложно. В этой инструкции мы рассмотрим как выполняется настройка OpenVPN linux с помощью скрипта openvpn-install, который упрощает процесс установки и настройки в несколько раз. С его помощью вы получите работающий сервер в течение нескольких минут.

Настройка OpenVPN сервера в Linux

В этой статье, в качестве системы для примера мы будем использовать операционную систему CentOS, но операции не будут отличаться в других дистрибутивах. Сначала скачайте сам скрипт:

Затем запустите скрипт от имени суперпользователя с помощью такой команды:

Дальше скрипт задаст несколько вопросов по настройкам OpenVPN. Сначала нужно указать точный ip адрес VPS, на котором будет запущен OpenVPN, именно на этом адресе программа будет слушать соединения:

Затем выберите протокол, который вы хотите использовать. Например, если я хочу использовать TCP то нужно выбрать 2:

Введите имя клиента, для которого будут подписаны сертификаты на доступ:

Дальше нажмите Enter, и подтвердите установку OpenVPN. Программа сама установит нужные пакеты в вашем дистрибутиве, а затем подпишет все необходимые сертификаты, запустит сервер openvpn и даже добавит его в автозагрузку systemd:

Последний шаг, это утилита спросит есть ли у вашего сервера дополнительный внешний ip адрес. Это может быть полезно, если вы используете NAT, и для доступа к серверу применяете какой-либо туннель. В других случаях этот пункт можно пропустить, для VPS точно пропускаем.

Теперь установка и настройка OpenVPN сервера Linux завершена. Конфигурационный файл для клиента сохранен по адресу /root/sergiy-pc.ovpn, может иметь и другое имя, в зависимости от того, какое имя вы дали клиенту. Самое интересное, что для того чтобы добавить новых клиентов, вам просто достаточно запустить скрипт еще раз. Осталось только скопировать полученный файл клиенту, для этого можно на клиентском компьютере выполнить scp:

scp root@адрес_сервера:/root/sergiy-pc.ovpn /etc/openvpn/

Настройка клиента OpenVPN

Вы можете настроить OpenVPN на клиентской машине как захотите, например, с помощью NetworkManager. Но мы рассмотрим ручной вариант. Сначала установите саму программу. Установка OpenVPN Linux Ubuntu выполняется командой:

sudo apt install openvpn

sudo yum install openvpn

Теперь для подключения к нашему серверу используем полученный файл:

openvpn --config /etc/openvpn/client.ovpn

Вы можете использовать команду ip addr чтобы проверить ip адрес интерфейса OpenVPN - tun0:

Как видите, OpenVPN автоматически выдал IP вашему компьютеру, теперь можете проверить подключение к этому серверу с помощью ping:

Выводы

Пять минут и настройка OpenVPN Linux завершена, а не подключение следующего клиента уйдет еще меньше. Этот метод не специфичен для RPM систем и может использоваться также в DEB системах, таких как Ubuntu или Debian. Если у вас остались вопросы, спрашивайте в комментариях!

Полная настройка OpenVPN:

Хотите использовать линукс на работе, но корпоративный VPN не даёт? Тогда эта статья может помочь, хотя это не точно. Хочу заранее предупредить, что вопросы администрирования сетей я понимаю плохо, поэтому не исключено, что я всё сделал неправильно. С другой стороны не исключено, что я смогу написать руководство так, что оно будет понятно обычным людям, так что советую попробовать.

В статье много лишней информации, но без этих знаний я бы не смог решить проблемы, которые у меня неожиданно появлялись с настройкой vpn. Думаю, что у любого, кто попытается применить это руководство, возникнут проблемы, которых у меня не было, и надеюсь, что эта лишняя информация поможет эти проблемы самостоятельно решить.

Большинство команд, используемых в руководстве нужно выполнять через sudo, который для краткости убран. Имейте в виду.

Большинство ip адресов подверглись жестокой обфускации, поэтому если видите адрес наподобие 435.435.435.435 — там должен быть какой-то нормальный ip, специфичный для вашего случая.

У меня Ubuntu 18.04, но думаю с небольшими правками руководство можно применять и к другим дистрибутивам. Однако в этом тексте линукс == Ubuntu.

Cisco Connect

Те, кто сидит на Windows или MacOS могут подключиться к нашему корпоративному VPN через Cisco Connect, которому нужно указать адрес гейтвея и при каждом подключении вводить пароль, состоящий из фиксированной части и кода, генерируемого Google Authenticator.

В случае с Линуксом, завести Cisco Connect не получилось, зато получилось нагуглить рекомендацию использовать openconnect, сделанный специально для того, чтобы заменить Cisco Connect.

Openconnect

По идее в убунте есть специальный графический интерфейс для openconnect но у меня он не заработал. Может оно и к лучшему.

В убунте openconnect ставится из пакетного менеджера.

Сразу после установки можно попробовать подключиться к VPN

openconnect попросит ввести пароль, который, напомню, состоит из фиксированной части и кода из Google Authenticator, а потом попробует подключиться к vpn. Если получилось, поздравляю, можете смело пропускать середину в которой много боли и переходить к пункту про работу openconnect в фоне. Если не заработало, то можно продолжать. Хотя если получилось при подключении например с гостевого вайфая на работе, то возможно радоваться и рановато, надо попробовать повторить процедуру из дома.

Cертификат

С высокой вероятностью ничего не запустится, а выхлоп openconnect будет выглядеть как-то вот так:

Тут сервер отослал нам сертификат, по которому можно определить, что подключение происходит именно к серверу родной корпорации, а не к злобному мошеннику, а системе этот сертификат неизвестен. И поэтому она не может проверить, настоящий сервер или нет. И поэтому на всякий случай прекращает работу.

Для того, чтобы openconnect всё-таки подключился к серверу, нужно явным образом сказать ему, какой сертификат должен прийти от VPN сервера с помощью помощью ключа --servercert

А узнать какой сертификат нам отослал сервер можно прямо из того, что напечатал openconnect. Вот из этого куска:

Вот такой командой можно попробовать подключиться ещё раз

Возможно теперь заработало, тогда можно переходить к концу. Но лично мне Убунта показала фигу вот в такой форме

Что тут произошло, мне не понятно. Но эксперимент показывает, что если добавить в /etc/resolv.conf строку

то адреса внутри VPN начнут магическим образом ресолвиться и по ним можно будет ходить, то есть то, что ищет какими DNS ресолвить адреса, смотрит именно в /etc/resolv.conf, а не куда-то ещё.

Что подключение к VPN есть и оно работает, можно убедиться и без правок в /etc/resolv.conf, для этого достаточно ввести в браузере не символьное имя ресурса из vpn, а его ip адрес

По итогу получается две проблемы

  • при подключении к VPN не подхватывается её dns
  • весь трафик идёт через vpn, который не позволяет ходить в интернет

Что делать я сейчас расскажу, но сначала немного автоматизации.

Автоматический ввод фиксированной части пароля

К текущему моменту вы скорее всего уже ввели пароль не менее пяти раз и эта процедура вас уже изрядно утомила. Во-первых, потому что пароль длинный, во-вторых потому что при вводе нужно уложиться в фиксированный временной промежуток

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

Положим, фиксированная часть пароля — fixedPassword, а часть из Google Authenticator 567 987. Весь пароль целиком openconnect можно передать через стандартный ввод с помощью аргумента --passwd-on-stdin .

Теперь можно постоянно возвращаться к последней введённой команде и менять там только часть из Google Authenticator.

Корпоративный VPN не позволяет ходить в интернет.

Вообще не очень неудобно, когда для того, чтобы сходить на хабр приходится использовать отдельный компьютер. Отсутствие возможности копипастить со stackoverfow, вообще может парализовать работу, поэтому что надо что-то делать.

Нужно как-то организовать, чтобы когда надо зайти на ресурс из внутренней сети, линукс ходил в vpn, а когда надо зайти на хабр — ходил в интернет.

openconnect после запуска и установки соединения с vpn, выполняет специальный скрипт, который находится в /usr/share/vpnc-scripts/vpnc-script. В скрипт на вход передаются какие-то переменные, а он делает настройку vpn. К сожалению, я не смог разобраться, как разделить потоки трафика между корпоративным vpn и остальным интернетом с помощью родного скрипта.

Видимо специально для таких как я была разработана утилита vpn-slice, которая позволяет направлять трафик по двум каналам без танцев с бубном. Ну, то есть танцевать придётся, но шаманом при этом быть не обязательно.

Разделение трафика с помощью vpn-slice

Во-первых vpn-slice придётся поставить, с этим придётся разобраться самостоятельно. Если в комментариях будут вопросы, я напишу по этому поводу отдельный пост. Но это обычная программа на питоне, так что сложностей быть не должно. Я ставил с помощью virtualenv.

А дальше утилиту надо применить, с помощью ключа --script указав openconnect, что вместо стандартного скрипта нужно использовать vpn-slice

В --script передаётся строка с командой, которую нужно вызвать вместо скрипта. ./bin/vpn-slice — путь к исполняемому файлу vpn-slice 192.168.430.0/24 — маска адресов, по которым следует ходить в vpn. Тут, имеется в виду что если адрес начинается с 192.168.430 — то ресурс с этим адресом нужно искать внутри vpn

Теперь ситуация должна быть почти нормальной. Почти. Теперь можно зайти на хабр и можно зайти на внутрикорпоративный ресурс по ip, но нельзя зайти на внутрикорпоративный ресурс по символьному имени. Если прописать соответствие символьного имени и адреса в hosts — всё должно заработать. И работать, пока ip не поменяется. Линукс теперь умеет ходить в интернет или во внутрикорпоративную сеть в зависимости от ip. Но для определения адреса по прежнему используется не корпоративный DNS.

Проблема ещё может проявляться в таком виде — на работе всё нормально, а дома на внутрикорпоративные ресурсы можно зайти только по ip. Это потому что когда ты подключен к корпоративному Wi-Fi, то DNS используется тоже корпоративный, и в нём символьные адреса из VPN ресолвятся, несмотря на то что пройти по такому адресу без использования VPN по прежнему нельзя.

Автоматическая модификация файла hosts

Если vpn-slice вежливо попросить, то он может после поднятия VPN сходить в её DNS, найти там ip адреса нужных ресурсов по их символьным именам и вписать их в hosts. После выключения VPN эти адреса будут из hosts удалены. Для этого нужно передать символьные имена в vpn-slice в качестве аргументов. Вот так.

Теперь всё должно работать и в офисе и на пляже.

Искать адреса всех поддоменов в DNS, который отдала VPN

Но теперь, когда мы немного понимаем что к чему эту необходимость можно устранить.

Если после поднятия VPN посмотреть в /etc/hosts, то можно увидеть, вот такую строку

Да и в resolv.conf была добавлена новая строка. Короче, vpn-slice каким-то образом определила где находится dns сервер для vpn.

Я довольно долго гуглил и обнаружил, что такая функциональность есть в убунте из коробки. Имеется в виду возможность использовать для ресолва имён локальный dns сервер dnsmasq.

То есть можно сделать так, чтобы за ip адресами линукс всегда ходил в локальный dns сервер, который в свою очередь, в зависимости от доменного имени, будет искать ip на соответствующем внешнем dns сервере.

Для управления всем, связанным с сетями и сетевыми соединениями, в убунте используется NetworkManager, а графический интерфейс для выбора, например, вайфай соединения — просто фронт к нему.

Нам надо будет полазить в его конфигурации.

  1. Создать файл в /etc/NetworkManager/dnsmasq.d/evilcorp
  1. Сказать NetworkManager, что для разрешения имён надо использовать dnsmasq

Конфигурация network-manager находится в /etc/NetworkManager/NetworkManager.conf Надо добавить туда:

Теперь, после подключения к VPN с помощью связки openconnect и vpn-slice, ip будет нормально опредёляться, даже если не добавлять символьные адреса в аргументы к vpnslice.

Как ходить через VPN в отдельные сервисы

После того, как получилось подключиться к vpn, я дня два очень радовался, а потом выяснилось, что если подключаться к впн не из офисной сети, то не работает почта. Симптом знакомый, не правда ли?

Ну а в офисе всё равно используется DNS, в котором этот адрес есть. То есть я так думал. На деле после добавления в dnsmasq строки

ситуация никак не изменилась. ip остался тот же. Пришлось мне ходить на работу.

И уже потом, когда я углубился в ситуацию и немного разобрался в проблеме, один умный человек подсказал мне как её решить. Нужно было подключаться к почтовому серверу не просто так, а через vpn

Я использую vpn-slice, чтобы ходить через VPN по адресам, которые начинаются с 192.168.430. А у почтового сервера не только символьный адрес не является поддоменом evilcorp, у него ещё и ip адрес не начинается с 192.168.430. И из общей сети он конечно никого к себе не пускает.

Для того, чтобы линукс ходил через VPN и к почтовому серверу, нужно добавить в vpn-slice и его. Допустим адрес почтовика- 555.555.555.555

Скрипт для поднятия VPN с одним аргументом

Всё это, конечно, не очень удобно. Да, можно сохранить текст в файлик и копипастить в консольку, а не набирать руками, но всё равно приятного мало. Для облегчения процесса можно завернуть команду в скрипт, который будет находиться в PATH. И тогда нужно будет только ввести код, полученный из Google Authenticator

Если поместить скрипт в connect

то можно будет просто писать в консоли

Но теперь всё равно придётся зачем-то держать консоль в которой запущен openconnect открытой

Запуск openconnect в фоне

К счастью авторы openconnect позаботились о нас и добавили в программу специальный ключ --background, который делает так, чтобы программа после запуска работала в фоне. Если запустить её вот так, то консоль после запуска можно закрыть

И вот, получается, что openconnect работает где-то там в фоне и никому не мешает, но как его остановить непонятно. То есть можно, конечно отфильтровать выхлоп ps грепом и искать процесс в названии которого есть openconnect, но это как-то муторно. Спасибо авторам, которые подумали и об этом. В openconnect есть ключик --pid-file, с помощью которого можно проинструктировать openconnect писать идентификатор своего процесса в файл.

Теперь всегда можно прибить процесс командой

Если процесса нет, kill ругнётся, но ошибку не кинет. Если файла нет, то тоже не случится ничего страшного, так что можно смело убивать процесс в первой строке скрипта.

Теперь можно включить компьютер, открыть консоль и запустить команду, передав ей код из Google Authenticator. Консоль потом можно прибить.

Понять, как жить без vpn-slice оказалось очень сложно. Пришлось много читать и гуглить. К счастью, когда столько времени провёл с проблемой, технические мануалы и даже man openconnect читаются как захватывающие романы.

В итоге я выяснил, что vpn-slice, как и родной скрипт, для разделения сетей модифицирует таблицу маршрутизации.

Таблица маршрутизации

Это, упрощённо говоря, такая таблица в первой колонке которой содержится с чего должен начинаться адрес, по которому хочет пройти линукс, а во второй через какой сетевой адаптер по этому адресу пройти. На самом деле колонок больше, но сути это не меняет.

Для того, чтобы посмотреть таблицу маршрутизации нужно выполнить команду ip route

Для VPN линукс сделал виртуальный адаптер — tun0. За то, чтобы трафик для всех адресов начинающихся с 192.168 шёл через него отвечает строка

Ещё посмотреть на текущее состояние таблицы маршрутизации можно с помощью команды route -n (ip адреса талантливо анонимизированы) Эта команда выдаёт результаты в другом виде и вообще deprecated, но её выхлоп часто попадается в мануалах в интернете и надо уметь его читать.

С чего должен начинать ip адрес для маршрута можно понять из комбинации колонок Destination и Genmask. Те части ip адреса, которым в Genmask соответствуют цифры 255, учитываются, а те, где там 0 — нет. То есть комбинация Destination 192.168.0.0 и Genmask 255.255.255.0 означает, что если адрес начинается с 192.168.0, то запрос к нему пойдёт по этом маршруту. А если Destination 192.168.0.0 но Genmask 255.255.0.0, то по этому маршруту пойдут запросы к адресам, которые начинаются с 192.168

Для того, чтобы разобраться, что на самом деле делает vpn-slice я решил посмотреть на состояния таблиц до и после

До включения VPN было так

После вызова openconnect без vpn-slice стало так

А после вызова openconnect в комбинации с vpn-slice вот так

Видно, что если не использовать vpn-slice, то openconnect явным образом пишет, что по всем адресам, кроме отдельно указанных, надо ходить через vpn.

Там рядом сразу указан ещё один путь, который надо использовать, если адрес, по которому пытается пройти линукс не соответствует ни одной маске из таблицы.

Тут уже написано, что в таком случае надо ходить через стандартный адаптер вайфай.

Я полагаю, что путь для VPN используется потому, что он в таблице маршрутизации первый.

И теоретически, если убрать вот этот дефолтный путь из таблицы маршрутизации, то в связке с dnsmasq openconnect должен обеспечивать нормальную работу.

И всё заработало.

Роутинг запросов к почтовому серверу без vpn-slice

Но у меня же есть ещё почтовый сервер с адресом 555.555.555.555, на который тоже надо ходить через vpn. Маршрут до него тоже надо добавить руками.

И вот теперь всё норм. Так что обойтись без vpn-slice таки можно, но уже надо хорошо знать, что делаешь. Я сейчас думаю не добавить ли в последнюю строку родного скрипта openconnect удаление дефолтного маршрута и добавление маршрута для почтовика после подключения к vpn, просто, чтобы движущихся частей в моём велосипеде стало поменьше.

Наверное, кому-то для того, чтобы понять как настроить VPN хватило бы этого послесловия. Но я, пока пытался понять что и как мне делать, прочитал достаточно много таких руководств, которые работают у автора, но почему-то не работают у меня и решил добавить сюда все кусочки, которые нашёл. Я бы чему-то такому очень порадовался.

В этой инструкции будет рассказано, как установить и настроить OpenVPN в ArchLinux.

Хотя OpenVPN для аутентификации пользователей/клиентов поддерживает логин/пароли, общие ключи (PSK), SSL сертификаты, я для себя выбрал SSL сертификаты, поскольку они превосходят другие методы аутентификации.

Как обычной, держите под рукой также страницу с официальной документацией. Давайте уже начнём!

1. Убеждаемся, что система обновлена

Залогинтесь на ваш VPS через SSH. Загрузим информацию о новых пакетах и обновимся с помощью pacman. Наберите следующее:

2. Убеждаемся, что в системе поддерживается TUN

Чтобы проверить, работает ли на системе Arch Linux TUN, вы можете использовать следующую команду в одну строку. Если вы используете VPS (виртуальный частный сервер), то некоторые слои виртуализации такие как vServers и OpenVZ требует, чтобы TUN был включен на/из хостовой машине, поэтому если TUN не поддерживается, то свяжитесь со службой поддержки вашего хостинга перед тем, как продолжать.

Если вы на выделенном сервере или используете виртуальный сервер KVM, ESXI или XEN убедитесь, что модуль CONFIG_TUN включён в ядре.

3. Установка OpenVPN

Для установки службы OpenVPN просто наберите:

4. Установка EASY-RSA

Далее мы установим пакет easy-rsa используя pacman из дополнительного репозитория и установим его в /root/easy-rsa:

5. Установка значений по умолчанию в EASY-RSA

Установим значения по умолчанию для использования их скриптами. Чтобы сделать это отредактируйте:

Сохраните, закройте и экспортируйте файл:

После окончания экспорта удалите созданные ранее сертификаты:

6. Генерируем сертификат

Генерируем CA сертификат используя скрипт build-ca:

7. Генерируем сертификат сервера

Генерируем сертификат VPN сервера используя скрипт build-key-server:

  • Sign the certificate? [y/n]:y
  • 1 out of 1 certificate requests certified, commit? [y/n]y

8. Генерируем PEM сертификат DIFFIE-HELLMAN

Сгенерируйте PEM сертификат используя скрипт build-dh:

9. Генерируем клиентский сертификат

Генерируем клиентский сертификат используя скрипт build-key:

  • Sign the certificate? [y/n]:y
  • 1 out of 1 certificate requests certified, commit? [y/n]y

10. Генерируем (HMAC)

11. Распределение сертификатов

Скопируйте требуемые сертификаты на определённые машины/устройства (сервер или клиент).

  • Публичный сертификат ca.crt нужен на всех серверах и клиентах;
  • Приватный ключ ca.key является секретом и нужен только на машине, сгенерировавшей ключ;
  • Серверу нужны server.crt, dh4096.pem (публичный), server.key и ta.key (приватный);
  • Клиенту нужны client.crt (публичный), client.key и ta.key (приватный).

12. Размещение сертификатов и ключей на сервере

Поместите сертификаты и ключи в директорию /etc/openvpn/certs:

13. Настройка сервера OpenVPN

Конфигурация сервера OpenVPN будет в файле /etc/openvpn/server.conf поэтому откройте его для редактирования:

и скопируйте туда:

Сохраните и закройте файл.

Обратите внимание на строку server 10.8.0.0 255.255.255.0. Вам не нужно менять её под условия вашей сети. Дело в том, что VPN создаёт свою собственную сеть, со своими параметрами и эти значения используются только внутри новой локальной сети VPN.

14. Тестирование и запуск сервера OpenVPN

Протестировать настройки OpenVPN сервера можно примерно так:

и если всё в порядке запустите OpenVPN сервер и добавьте его в автозагрузку

15. Включение перенаправления и IPTABLES

Создайте файл vpn_firewall.sh

B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:

  • PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
  • имя интерфейса - ens3, у вас может быть другое значение, измените его на своё везде, где оно встречается
  • в строке iptables -A INPUT -p tcp --dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами

Проверить работу файла:

ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.

Для добавления файла в автозагрузску сделайте следующее.

Сделайте файл исполнимым:

Со следующим содержимым:

И активируйте запуск при автозагрузке

16. Настройка клиента OpenVPN

  • разместите сгенерированные сертификаты vpn на клиентах/устройствах
  • установите клиент OpenVPN на машние/устройствах

Для установки клиента OpenVPN:

Настройки даны исходя из расположения файлов здесь:

  • /etc/openvpn/certs/ca.crt
  • /etc/openvpn/certs/client.crt
  • /etc/openvpn/certs/client.key
  • /etc/openvpn/certs/ta.key

Создайте следующий конфигурационный файл client.conf:

откройте его для редактирования:

и скопируйте туда:

Обратите внимание на строку remote 185.117.153.79 – вам обязательно нужно заменить это значение на IP вашего собственного VPN сервера!

Сохраните и закройте файл.

Для запуска и проверки статуса:

Для добавления в автозагрузку:

17. Просмотр логов OpenVPN

Для наших настроек это делается так:

18. Настройка входа в OpenVPN по логину и паролю

Принцип работы с подключением по логину и паролю следующий:

  • OpenVPN не может проверять действительность логина и пароля;
  • вместо проверки OpenVPN сохраняет присланные ей логин и пароль в файл со случайным именем в директорию, которую мы указали в tmp-dir (в нашем случае это /tmp).
  • после этого OpenVPN запускает скрипт, который мы указали в auth-user-pass-verify (в нашем случае это /etc/openvpn/verify.sh), в качестве аргумента этому скрипту передаётся имя только что сохранённого файла с логином и паролем.
  • если от скрипта получен код выхода 0, то OpenVPN авторизует клиента, если 1, то считает, что логин или пароль неверны.
  • после этого OpenVPN удаляет временный файл.

Схема работы, мягко говоря, так себе. Поскольку предусматривает хранение паролей в открытом виде и на сервере и на клиенте…

Внесём изменения в конфигурационный файл сервера:

Добавим туда следующие строки:

копируем туда следующий код (можете придумать свой механизм аутентификации):

Делаем файл исполнимым:

Файл с паролями /etc/openvpn/user.pass выглядит так:

то есть идёт через пробел пара логин:пароль. Пароль находится в открытом виде!

В конфигурационный файл клиента добавляем такую строку:

и создаём соответственно файл pass.txt, где будет находится логин и пароль в таком виде:

Примечание: Если в параметре auth-user-pass убрать путь к файлу, будет запрашиваться логин/пароль.

Полные конфигурационные файлы в моём случае. Для сервера:

Проверяем конфигурационный файл

Перезапускаем службу и проверяем её статус:

Близкие статьи

5 thoughts on “ Как установить и настроить OpenVPN в ArchLinux / BlackArch ”

Орган по сертификации

Надо какой-то пример на практике привести, зачем это все и как пользоваться. А так одна теоррия.
например, есть офис с интернетом на модеме, и есть клиенты - домашние компы и смартфоны - задача их свести в офисную локалку.

Со статьёй для Arch Linux я поступил по-другому, потому что пользователи Arch, на мой взгляд, по определению более продвинуты в понимании работы сетей и ОС Linux. Т.е. для них эта информация была бы «водой».

Обидно про «теорию»: я собрал материал из нескольких источников, исправил косяки других авторов, переписал нерабочий скрипт для аутентификации по паролю, два раза проверил на своём VDS, чтобы убедиться, что всё точно работает – для меня это не теория.

Я понимаю, что вы имеете ввиду пример прикладного использования. Если бы я занимался настройкой корпоративной сети, то мог бы подробнее о чём-то таком рассказать. Но рассуждать о чём-то, что я не могу проверить, мне не хочется. Если доведётся решать прикладные задачи, связанные с VPN, то напишу об этом.

Где взять мануал на русском по блак арч ?

«Мануал чтобы стать хакером», такой? BlackArch — это Arch Linux + инструменты для пентестинга. Изучите основы работы Arch Linux, изучите инструменты (даже если они называются «Инструменты Kali Linux», в специализированных дистрибутивах используются одни и те же программы).

И самое важное: если изучать инструменты без понимания основ работы сети, серверов, приложений, то это мало что даст. То есть вообще-то правильный порядок такой:

1. Глубокое изучение IT, компьютерных сетей, работы операционных систем, работы (веб) приложений и служб, сетевых протоколов

2. Изучения основы выбранного дистрибутива — для Kali Linux это Debian, для BlackArch это Arch Linux, чтобы стать уверенным пользователем Linux и не теряться из-за ошибок «команда не найдена» и подобных.

3. Изучение инструментов с полным пониманием, какой аспекты сетей/ОС/приложений/служб/протоколов они эксплуатируют.

А если вам «чтобы такое прочитать за пару вечеров, чтобы стать хакером», то это вам в телеграмм-каналы с копипастой и на Ютуб )))))) все школоло хакеры уже там.

Для тех, кто не знает, VPN – это виртуальная частная сеть, которая устанавливает безопасный зашифрованный «туннель» между вашим устройством и сервером VPN.

Как установить ProtonVPN в дистрибутивах Linux

ProtonVPN поддерживает протоколы IKEv2 / IPSec и OpenVPN. Мы опишем установку и запуск ProtonVPN при использовании протокола OpenVPN, так как использование данного протокола максимально простое и при этом отвечает канонам безопасности.


Разработчики ProtonVPN рекомендуют использовать CLI версию приложения т.е версию без графического интерфейса. Не стоит пугаться, её установка и дальнейшее использование не сложное.

Переходим к установке ProtonVPN. Выполняем следующие команды, в зависимости от используемого дистрибутива.

Debian/Ubuntu/Linux Mint

Fedora/CentOS/RHEL

Arch Linux/Manjaro/EndeavourOS

OpenSUSE

Как пользоваться клиентом ProtonVPN в Linux


Указываем имя пользователя и пароль OpenVPN, доступные по ссылке выше.


Введенный пароль не будет отображаться, аналогично паролю root.

Затем нужно указать свой тарифный план ProtonVPN, а так же выбрать UDP или TCP в качестве протокола транспортного уровня. Я рекомендую сначала использовать UDP, а в случае проблем попробуйте протокол TCP.


Обратите внимание, что клиент ProtonVPN Linux не поддерживает IPv6, поэтому, если у вас IPv6, то для устранение утечек рекомендуется отключить IPv6 в системе. Отключить IPv6 можно с помощью следующей инструкции.

Отключение IPv6 в Linux:

В конце файла конфигурации добавляем следующие значения:

Сохраните и закройте файл. Чтобы сохранить файл в текстовом редакторе Nano, нажмите комбинацию клавиш Ctrl+O, затем нажмите Enter для подтверждения. Для выхода нажмите Ctrl+X.

Затем примените изменения:

Запуск VPN-соединения с помощью ProtonVPN в Linux

Команда запуска ProtoVPN:

Вам будет предложено выбрать страну. Пользователям с бесплатным тарифным планом ProtonVPN доступно 3 страны.


Затем выберите сервер.


Выберите TCP или UDP в качестве протокола транспортного уровня. Я рекомендую сначала использовать UDP, если возникнет проблема с установкой VPN-соединения, попробуйте протокол TCP.


Через несколько секунд VPN-соединение будет установлено.


DNS-leak тест, тест утечек DNS

Проверить VPN-соединение на наличие утечек можно с помощью сервисов указанных в статье Как проверить VPN на утечки данных.


Если DNS-сервер вашего интернет-провайдера отображается в результатах теста, значит, у вас есть утечка DNS. В таком случае, несмотря на то, что ваше интернет соединение зашифровано с помощью VPN, ваш интернет-провайдер все равно знает, какие веб-сайты вы посещаете. В моем случае, показанном на скриншоте выше, утечек DNS нет.

Тест скорости VPN-соединения


ProtonVPN предлагает довольно большие скорости соединения даже при использовании аккаунта с бесплатным тарифным планом.

Как отключить ProtonVPN

Для отключения VPN соединения выполните следующую команду:

Как добавить ProtonVPN в автозагрузку

Возможно вы захотите чтобы ProtonVPN автоматически запускался при загрузке системы. Это может быть достигнуто путем создания служебного модуля systemd. Воспользуйтесь редактором командной строки Nano для создания файла следующего файла.

Добавьте в этот файл следующие строки:


Сохраните и закройте файл. Чтобы сохранить файл в редакторе Nano, нажмите комбинацию клавиш Ctrl+O, затем нажмите Enter для подтверждения. Для выхода нажмите Ctrl+X.

Поскольку эта служба systemd работает от имени пользователя root, вам необходимо переключиться на учетную запись пользователя root с помощью следующей команды:

И инициализируйте файл конфигурации пользователя:

Введите имя пользователя и пароль OpenVPN из аккаунта ProtonVPN, выберите тарифный план и протокол по умолчанию, тоже самое что мы и раньше проделали для подключения. Как только это будет сделано, вы можете отключить текущее VPN-соединение:

Теперь попробуйте запустить ProtonVPN с помощью systemd:

И включите автоматический запуск ProtonVPN во время загрузки системы с помощью команды:

Проверить журнал подключения можно с помощью команды:

Надеюсь, данная статья помогла вам в установке и запуске ProtonVPN в Linux. Если у вас возникли проблемы при использовании ProtonVPN, не стесняйтесь задавать свой вопрос в разделе комментариев чуть ниже.

Читайте также: