установить OpenVPN 3

Thank you for reading this post, don't forget to subscribe!

OpenVPN 3 — это новый кли­ент, постро­ен­ный поверх OpenVPN 3 Core Library, кото­рая так­же исполь­зу­ет­ся в раз­лич­ных кли­ен­тах OpenVPN Connect и OpenVPN для Android. В этой ста­тье мы рас­смот­рим как уста­но­вить OpenVPN 3 на Linux: Ubuntu, Debian, CentOS и их производные.

Как установить OpenVPN 3 на LinuxЭтот кли­ент постро­ен вокруг совер­шен­но дру­гой архи­тек­ту­ры в отно­ше­нии исполь­зо­ва­ния. Он в зна­чи­тель­ной сте­пе­ни стро­ит­ся на D-Bus и поз­во­ля­ет непри­ви­ле­ги­ро­ван­ным поль­зо­ва­те­лям запус­кать и управ­лять сво­и­ми соб­ствен­ны­ми VPN-тун­не­ля­ми из короб­ки. Систем­ные адми­ни­стра­то­ры, жела­ю­щие полу­чить боль­ше кон­тро­ля, так­же могут кон­тро­ли­ро­вать и огра­ни­чи­вать этот доступ как путем уже­сто­че­ния поли­ти­ки D-Bus OpenVPN 3 по умол­ча­нию, так и путем упро­ще­ния функ­ций в OpenVPN 3 Linux.

Даже если имя про­ек­та несет «Linux», это не озна­ча­ет, что он огра­ни­чен толь­ко Linux. Любая плат­фор­ма, име­ю­щая доступ­ную шину D, спо­соб­на запус­кать этот кли­ент тео­ре­ти­че­ски. Но посколь­ку D-Bus наи­бо­лее часто исполь­зу­ет­ся в сре­дах Linux, это, есте­ствен­но, будет основ­ным направ­ле­ни­ем для проекта.

При­ме­ча­ния к выпус­ку хра­нят­ся в тегах git в репо­зи­то­рии project git. Их так­же мож­но посмот­реть здесь: https://github.com/OpenVPN/openvpn3-linux/releases

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

Debian, Ubuntu

Во пер­вых убе­ди­тесь что ваш apt под­дер­жи­ва­ет транс­порт https:

# apt install apt-transport-https

Уста­но­ви­те ключ репо­зи­то­рия OpenVPN, исполь­зу­е­мый паке­та­ми OpenVPN 3 Linux

# wget https://swupdate.openvpn.net/repos/openvpn-repo-pkg-key.pub
# apt-key add openvpn-repo-pkg-key.pub

Затем вам нуж­но уста­но­вить соот­вет­ству­ю­щий репо­зи­то­рий. Заме­ни­те $DISTRO име­нем выпус­ка в зави­си­мо­сти от ваше­го дис­три­бу­ти­ва Debian/Ubuntu.

# wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-$DISTRO.list
# apt update

Под­дер­жи­ва­е­мые дистрибутивы:

ДИСТРИБУТИВ РЕЛИЗ ИМЯ РЕЛИЗА ($DISTRO)
Debian 9 stretch
Debian 10 buster
Ubuntu 16.04 xenial
Ubuntu 18.04 bionic
Ubuntu 19.10 eoan
Ubuntu 20.04 focal
Ubuntu 20.10 groovy

И нако­нец мож­но уста­но­вить пакет OpenVPN 3

# apt install openvpn3

Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux

Паке­ты для этих дис­три­бу­ти­вов предо­став­ля­ют­ся через репо­зи­то­рий Fedora Copr.

Под­дер­жи­ва­е­мые версии:

ДИСТРИБУТИВ ВЕРСИЯ РЕЛИЗА
Fedora 32, 33, Rawhide
Red Hat Enterprise Linux / CentOS 7, 8

Если вы исполь­зу­е­те Red Hat Enterprise Linux или ее про­из­вод­ные, вам необ­хо­ди­мо сна­ча­ла уста­но­вить как репо­зи­то­рий Fedora EPEL, так и модуль yum copr.

Инструк­ции по вклю­че­нию Fedora EPEL мож­но най­ти здесь: https://fedoraproject.org/wiki/EPEL. Выпус­ки Fedora обыч­но име­ют пред­уста­нов­лен­ный модуль yum/dnf copr.

# yum install yum-plugin-copr

Теперь, когда модуль Copr досту­пен, при­шло вре­мя вклю­чить репо­зи­то­рий OpenVPN 3 Copr.

# yum copr enable dsommers/openvpn3

И тогда кли­ент OpenVPN 3 Linux может быть установлен

# yum install openvpn3-client

Как пользоваться новым OpenVPN 3 в Linux

С уста­нов­лен­ным паке­том OpenVPN 3, все долж­но быть гото­во к исполь­зо­ва­нию. По умол­ча­нию любая учет­ная запись поль­зо­ва­те­ля в систе­ме долж­на иметь воз­мож­ность запус­кать VPN-туннели.

Использование openvpn2

Для поль­зо­ва­те­лей, зна­ко­мых с клас­си­че­ской команд­ной стро­кой OpenVPN 2.x, openvpn2front-end стре­мит­ся быть доволь­но близ­ким к ста­ро­му поведению.

$ openvpn2 --config ${MY_CONFIGURATION_FILE} --verb 6

Заме­ни­те ${MY_CONFIGURATION_FILE} кон­фи­гу­ра­ци­он­ным фай­лом OpenVPN, кото­рый вы хоти­те исполь­зо­вать. Если эта кон­фи­гу­ра­ция вклю­ча­ет эту —daemon опцию, сеанс VPN будет запу­щен в фоно­вом режи­ме, и поль­зо­ва­те­лю сно­ва будет предо­став­ле­на команд­ная стро­ка. Для даль­ней­ше­го управ­ле­ния этим сеан­сом VPN openvpn3 session-manage необ­хо­ди­мо исполь­зо­вать интер­фейс команд­ной стро­ки. Без —daemon это­го кон­соль будет запол­не­на лог-дан­ны­ми от VPN-сеан­са, а сам сеанс мож­но отклю­чить с помо­щью про­сто­го нажа­тия CTRL-C в терминале.

Допол­ни­тель­ные сведения:

$ openvpn2 --help
$ man openvpn2

Использование openvpn3

Для более про­дви­ну­то­го исполь­зо­ва­ния OpenVPN 3 команд­ная стро­ка пред­ла­га­ет гораз­до боль­ше воз­мож­но­стей. Про­фи­ли кон­фи­гу­ра­ции в OpenVPN 3 для Linux управ­ля­ют­ся мене­дже­ром кон­фи­гу­ра­ции до запус­ка сеан­са VPN через Дис­пет­чер сеан­сов . openvpn3Утилита предо­став­ля­ет доступ к функ­ци­ям, кото­рые предо­став­ля­ют эти служ­бы диспетчера.

Запуск про­фи­ля конфигурации

Озна­ча­ет, что файл кон­фи­гу­ра­ции ана­ли­зи­ру­ет­ся, загру­жа­ет­ся и уда­ля­ет­ся из управ­ле­ния кон­фи­гу­ра­ци­ей, как толь­ко сеанс VPN был запу­щен. Файл кон­фи­гу­ра­ции не досту­пен для повтор­но­го исполь­зо­ва­ния после это­го под­хо­да. Это дости­га­ет­ся непо­сред­ствен­но коман­дой openvpn3 session-start.

$ openvpn3 session-start --config ${MY_CONFIGURATION_FILE}

Импорт фай­ла кон­фи­гу­ра­ции для повтор­но­го исполь­зо­ва­ния и запуск сеан­са VPN

При таком под­хо­де импор­ти­ро­ван­ный кон­фи­гу­ра­ци­он­ный файл мож­но исполь­зо­вать несколь­ко раз, и доступ к само­му кон­фи­гу­ра­ци­он­но­му фай­лу не тре­бу­ет­ся для запус­ка VPN-тун­не­лей. По умол­ча­нию импор­ти­ро­ван­ные про­фи­ли кон­фи­гу­ра­ции доступ­ны толь­ко тому поль­зо­ва­те­лю, кото­рый импор­ти­ро­вал файл кон­фи­гу­ра­ции. Но OpenVPN 3 так­же предо­став­ля­ет функ­цию спис­ка кон­тро­ля досту­па через openvpn3 config-acl для предо­став­ле­ния досту­па опре­де­лен­ным или всем поль­зо­ва­те­лям системы.

$ openvpn3 config-import --config ${MY_CONFIGURATION_FILE}

Это загру­жа­ет про­филь кон­фи­гу­ра­ции и сохра­ня­ет его толь­ко в памя­ти. Это озна­ча­ет, что при пере­за­груз­ке систе­мы про­филь кон­фи­гу­ра­ции не сохра­ня­ет­ся. Если добав­лен аргу­мент —persistent в команд­ную стро­ку выше, про­филь кон­фи­гу­ра­ции будет сохра­нен на дис­ке в ката­ло­ге, доступ­ном толь­ко openvpn поль­зо­ва­те­лю. Вся­кий раз, когда запус­ка­ет­ся Configuration Manager, фай­лы кон­фи­гу­ра­ции, импор­ти­ро­ван­ные вме­сте с —persistent, так­же авто­ма­ти­че­ски загружаются.

Что­бы выве­сти спи­сок всех доступ­ных про­фи­лей кон­фи­гу­ра­ции, выпол­ни­те сле­ду­ю­щую команду:

$ openvpn3 configs-list

Файл кон­фи­гу­ра­ции обыч­но содер­жит общие пара­мет­ры для под­клю­че­ния к опре­де­лен­но­му сер­ве­ру, неза­ви­си­мо от само­го устрой­ства. OpenVPN 3 для Linux так­же под­дер­жи­ва­ет уста­нов­ку более спе­ци­фич­ных для хоста пара­мет­ров в про­фи­ле кон­фи­гу­ра­ции. Это обра­ба­ты­ва­ет­ся через интер­фейс openvpn3 config-manage. Любые настрой­ки здесь так­же будут сохра­не­ны при загруз­ке, если про­филь кон­фи­гу­ра­ции был импор­ти­ро­ван с —persistent аргументом.

Запуск ново­го сеан­са VPN из импор­ти­ро­ван­но­го про­фи­ля конфигурации

Когда про­филь кон­фи­гу­ра­ции досту­пен через openvpn3 configs-list, его мож­но лег­ко запу­стить с помо­щью openvpn3 session-start и име­ни про­фи­ля кон­фи­гу­ра­ции (обыч­но это имя фай­ла, исполь­зу­е­мое при импорте)

$ openvpn3 session-start --config ${CONFIGURATION_PROFILE_NAME}

или же мож­но исполь­зо­вать путь D-Bus к про­фи­лю конфигурации:

$ openvpn3 session-start --config-path /net/openvpn/v3/configuration/.........

В любом из этих слу­ча­ев он обя­за­тель­но дол­жен иметь доступ к про­фи­лю кон­фи­гу­ра­ции на дис­ке. Пока про­фи­ли кон­фи­гу­ра­ции доступ­ны через openvpn3 configs-list него , все необ­хо­ди­мое для запус­ка сеан­са VPN долж­но присутствовать.

Управ­ле­ние запу­щен­ным сеан­сом VPN

После того, как сеанс VPN был запу­щен, это долж­но быть вид­но с помо­щью команды:

$ openvpn3 sessions-list

В коман­де openvpn3 session-manage есть мно­го вещей, кото­рые могут быть сде­ла­ны, но чаще все­го это —disconnect или —restart ,они наи­бо­лее часто используются.

$ openvpn3 session-manage --config ${CONFIGURATION_PROFILE_NAME} --restart

Это отклю­ча­ет и повтор­но под­клю­ча­ет к сер­ве­ру сно­ва, повтор­но уста­нав­ли­вая соеди­не­ние. ${CONFIGURATION_PROFILE_NAME} — это имя кон­фи­гу­ра­ции, как пока­за­но в openvpn3 sessions-list. Так­же мож­но исполь­зо­вать путь D-Bus к сеансу:

$ openvpn3 session-manage --session-path /net/openvpn/v3/sessions/..... --disconnect

При­ве­ден­ная выше коман­да отклю­чит запу­щен­ный сеанс. Как толь­ко эта опе­ра­ция будет завер­ше­на, она будет уда­ле­на из openvpn3 sessions-list.

Кро­ме того, мож­но полу­чить ста­ти­сти­ку тун­не­лей в реаль­ном вре­ме­ни из запу­щен­ных сеансов:

$ openvpn3 session-stats --config ${CONFIGURATION_PROFILE_NAME}
$ openvpn3 session-stats --session-path /net/openvpn/v3/sessions/.....

А что­бы полу­чить собы­тия жур­на­ла в реаль­ном вре­ме­ни по мере их воз­ник­но­ве­ния, выпол­ни­те при­ве­ден­ную ниже команду:

$ openvpn3 log --config ${CONFIGURATION_PROFILE_NAME}

Там может быть мало инфор­ма­ции, так как жур­нал не предо­став­ля­ет ника­ких собы­тий из про­шло­го. Если выпол­нить коман­ду openvpn3 session-manage —restart с дру­го­го тер­ми­на­ла, то собы­тия жур­на­ла нач­нут появ­лять­ся. Воз­мож­но, вы захо­ти­те повы­сить уро­вень жур­на­ла, делай­те это коман­дой —log-level 6. Допу­сти­мые уров­ни жур­на­ла: от 0 до 6, где 6 — самый подробный.