Исходные данные:
- Система 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 канала, и он отвечает на пинги. Теперь, если после установки соединения сервер не отвечает, пользователь увидит сообщение об ошибке.
Вот в общем-то и всё. Надеюсь данный материал кому-то поможет.
Комментарии
12:37
/etc/wireguard/wg0.conf
Подключение осуществляется в одну команду, которую я в алиас прописал. Для проверки подключения, чтоб с рабочего стола и сразу было видно, прописал определение ip-адреса в конки. Если он соответствует моему адресу из сетевого манагера, значит и VPN не подключен (при установлении соединения вылазит уведомление, но забывал пару раз подключится, сделал такое решение).
Так это выглядит
https://ibb.co/GQWMWbg
14:12
14:32
https://github.com/UnnoTed/wireguird/releases/download/v1.0.0/wireguird_amd64.deb
15:47
17:16
21:39
Вопрос - Настроенный рабочий wireguard сервер -как настроить?
хотя и есть другие вапианты но будет интересен ваш.
17:09
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 сервер прям на микротике (начиная с седьмой версии прошивки они это умеют).
17:47
11:54
https://cinnamon-spices.linuxmint.com/applets/view/368