Настройка быстрого запуска Wireguard VPN клиента в Linux Mint (для уже настроенного Wireguard сервера). Linux статьи
Написать статью
Войдите, чтобы писать статьи

Настройка быстрого запуска Wireguard VPN клиента в Linux Mint (для уже настроенного Wireguard сервера)

9
Материал написан пользователем сайта.

Исходные данные:

  • Система Linux Mint 21.2 Cinnamon.
  • Настроенный рабочий wireguard сервер.
  • wireguard конфиг файл к данному серверу: /home/user/Документы/wg_vpn.conf.

Задача:

  • Настроить удобный для работы способ подключения\отключения VPN.

Можно конечно использовать wg-quick или графическую оболочку для него, но мне эти способы не понравились, да и незачем прикручивать третье колесо к велосипеду... С данной задачей способен справится имеющийся в системе сетевой менеджер (тот что в системном трее). Вот только делает он это несколько станно. Функцию импорта конфига под wireguard в GUI менеджера не завезли, так что делаем это из консоли (для данной команды повышенных привилегий не требуется):

nmcli connection import type wireguard file /home/user/Документы/wg_vpn.conf

Если конфиг не содержит ошибок, после этого создается интерфейс соединения с именем wg_vpn, который автоматом запускается. VPN работает, но все что с ним можно сделать — это отключить, положить интерфейс в его настройках в сетевом менеджере (функцию поднятия интерфейса в GUI сетевого менеджера опять таки не завезли). Отключаем.

Далее заходим Сетевой менеджер, Настройки нашего соединения - вкладка «Основное», снимаем галочку «Подключаться автоматически с приоритетом», чтобы соединение не стартовало без нашего ведома после перезапуска системы.

Просмотреть соединения: nmcli connection show
Запустить соединение: nmcli con up id wg_vpn
Остановить соединение: nmcli con down id wg_vpn

Но это неудобно. Так же отсутствует какая-либо индикация поднятия VPN, а хотелось бы иконку в трее. Исправляем.

Устанавливаем YAD (его и будем использовать для индикации):

sudo apt install yad

Находим симпатичную иконку для нашего VPN в формате png с прозрачным фоном (тот что в бело-серый квадратик) и сохраняем куда-нибудь на диск. В моем варианте это /home/user/.icons/my/vpn2.png

sudo nano /usr/bin/MY_vpn.sh
#!/bin/bash
nmcli con up id wg_vpn
yad --notification --image="/home/user/.icons/my/vpn2.png" --text="VPN-соединение" --icon-size=32
nmcli con down id wg_vpn
sudo chmod 755 /usr/bin/MY_vpn.sh

Создаем кнопку запуска скрипта MY_vpn.sh на рабочем столе или в меню Cinnamon через редактор (кто не знает — правой кнопкой мыши на кнопку «Пуск» - Редактор меню). Теперь при запуске скрипта устанавливается VPN соединение, а в системном трее отображается его значок, при клике по которому данное соединение успешно разрывается. Удобно.

Но есть один недостаток. Поднятие интерфейса wireguard не есть установка vpn-соединения. В отличии от других VPN протоколов у wireguard интерфейс поднимается в любом случае, даже если сервер в данный момент недоступен или ключи более недействительны.

Добавим в скрипт запуска функцию проверки отклика сервера:

#!/bin/bash
nmcli con up id wg_vpn
sleep 1
#VAR1=$(ping 10.23.23.1 -c 1 -w 2 | grep "100% packet loss")

if [ "$VAR1" == "" ]; then
    yad --notification --image="/home/alex/.icons/my/vpn2.png" --text="VPN-соединение" --icon-size=32
    nmcli con down id wg_vpn
else
    nmcli con down id wg_vpn    
    yad --image gtk-cancel --title Alert --button=gtk-ok:0 --text "Ошибка установки VPN соединения" --fixed --on-top --center
fi

В моем случае 10.23.23.1 — адрес сервера wireguard внутри VPN канала, и он отвечает на пинги. Теперь, если после установки соединения сервер не отвечает, пользователь увидит сообщение об ошибке.

Вот в общем-то и всё. Надеюсь данный материал кому-то поможет.

Лайков: +13
войдите, чтобы ставить лайки
9
  • Опубликовано: 03.11.2023
  • Kemri

Комментарии

Minor748
Активный пользователь
Активный
03.11.2023
12:37
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
WG от TimeWeb. Удобно, когда тебе дают конфиг, прописываешь его по пути, попутно меняя и устанавливая свой DNS-сервер, чем арендовать VPS, там собственноручно настраивать.

/etc/wireguard/wg0.conf

Подключение осуществляется в одну команду, которую я в алиас прописал. Для проверки подключения, чтоб с рабочего стола и сразу было видно, прописал определение ip-адреса в конки. Если он соответствует моему адресу из сетевого манагера, значит и VPN не подключен (при установлении соединения вылазит уведомление, но забывал пару раз подключится, сделал такое решение).
Так это выглядит

https://ibb.co/GQWMWbg
mzxn23
03.11.2023
14:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Кому-нибудь это пригодится
xKDE
Активный пользователь
Активный
03.11.2023
14:32
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Хотя я за cli, но для страждущих GUI-апплет:
https://github.com/UnnoTed/wireguird/releases/download/v1.0.0/wireguird_amd64.deb
Minor748
Активный пользователь
Активный
03.11.2023
15:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
Эта штука только на .deb работает? У меня не получилось
Kemri
04.11.2023
17:16
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
Тоже пользовал этот апплет некоторое время, но с ним имеются пара неприятных вещей: 1. Под mint он требует повышения полномочий при запуске, т е надо еще полиси кит настраивать, что лень, или пароль вбивать каждый раз. 2. Чтоб положить vpn нужно сделать слишком много мышкотыков (по трею, потом по мею трея, а потом еще и по кнопки основного окна). Неудобно.
PedroAmor
Активный пользователь
Активный
03.11.2023
21:39
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Спасибо!
Вопрос - Настроенный рабочий wireguard сервер -как настроить?
хотя и есть другие вапианты но будет интересен ваш.
Kemri
04.11.2023
17:09
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийPedroAmorРодительский комментарий
0
войдите, чтобы ставить лайки
Самый простой путь примерно так:
apt install curl
curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh

Это что касается linux серверов. Для доступа к домашней сети использую wg сервер прям на микротике (начиная с седьмой версии прошивки они это умеют).
Kemri
04.11.2023
17:47
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Дополнительно к статье: Если нужно исключить часть трафика (например внутреннюю сеть или какой-либо другой сетевой узел) из vpn канала. Wg не умеет исключать, он может только включать. Т.е. в теории если в конфиге подключения указать адреса не 0.0.0.0/0, а сумму адресов не включающую ненужные нам адреса — все должно быть как надо. Для этик целей есть даже калькуляторы (например: https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/). Данный вариант успешно отрабатывал в windows клиенте, но почему-то отказался работать в nix, при чем как через wg-quick так и через сетевой менеджер (пробовал только в mint, возможно где-то это и сработает). В данной ситуации для себя решил что проще всего не трогая wg прописать статический маршрут в сетевых настройках нашей основной сетевой карты, если через GUI: сетевой менеджер — открываем настройки основной сетевой карты (шестеренка) — параметры IPv4 (У большинства, думаю, пока еще IPv4) — кнопка «Маршруты». Там добавляем маршрут до узла или подсети с меньшей чем у wg метрикой, как вариант 50.
Frozenpath
15.11.2023
11:54
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Использую applet VPN Sentinel. Удобно. Хотя конфиг импортировать приходилось все равно через nmcli

https://cinnamon-spices.linuxmint.com/applets/view/368

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила