Поднимаем Wireguard VPN соединение в ArchLinux

10.08.23 - Обновлено: 10.08.23

Если вы владелец VPS'ки на которой подняли wireguard сервер, то эта статья для вас. В ней расскажу как настроить соединение с нашим сервером в ОС GNU/ArchLinux.

Для начала, необходимо установить следующие пакеты

sudo pacman -S wireguard-tools systemd-resolvconf

Далее копируем ваш конфиг в /etc/wireguard/wg0.conf

sudo cp ваш_конфиг.conf /etc/wireguard/wg0.conf

Пробуем поднять соединение:

sudo wg-quick up wg0

Если всё прошло удачно отобразятся следующие строки, проверить поднялся ли интерфейс wg0 можно командой ip a

c8bf29cf-fe17-4493-94a7-03672109943f994ff820a05c3342.md.png

Если всё прошло удачно, то теперь можно настроить автоматическое соединение вбиваем в терминале

sudo systemctl enable wg-quick@wg0

После этого, при загрузке системы, соединение будет подниматься автоматически.

Если используете polybar, то можно и на него повесить индикатор соединения, кроме того по клике правой клавиши мышки соединение будет устанавливаться/разрываться.

Открываем конфиг polybar'а (я использую nvim можете заменить на свой)

nvim .config/polybar/config.ini

В конец добавляем:

[module/wireguard]
type = custom/script
exec = /home/$USER/.config/polybar/scripts/wireguard.sh
tail = false
interval = 1
click-left = /home/$USER/.config/polybar/scripts/wireguard.sh --toggle &

Поднимаемся выше по конфигу до строчки modules-right и добавляем в конец wireguard

cb784818-715a-4e2d-ab4a-a76dff53b7054b9a890b0f721308.md.png

Создаём .config/polybar/scripts/wireguard.sh со следующим содержимым

#! /bin/bash

connected_interface=$(networkctl | grep -P "\d+ .* wireguard routable" -o | cut -d" " -f2)

connect() {
        sudo wg-quick up wg0
}

disconnect() {
    # Normally we should have a single connected interface but technically
    # there's nothing stopping us from having multiple active intgerfaces so
    # let's do this in a loop:
    for connected_config in $(networkctl | grep -P "\d+ .* wireguard routable" -o | cut -d" " -f2)
    do
        sudo wg-quick down wg0
    done
}

toggle() {
    if [[ $connected_interface ]]
    then
        disconnect
    else
        connect
    fi
}

print() {
    if [[ $connected_interface ]]
    then
        echo "%{F#FFDE7D}%{T1}說%{T-} %{T2}VPN: ON%{T-}"
    else
        echo "%{F#5f5f5f}%{T1}說%{T-} %{T2}VPN: OFF%{T-}"
    fi
}

case "$1" in
    --connect)
        connect
        ;;
    --disconnect)
        disconnect
        ;;
    --toggle)
        toggle
        ;;
    *)
        print
        ;;
esac

Конфиг брал с https://github.com/CrCrate/polybar-wireguard-nm-rofi до конца еще не доделал, но в таком виде он работает без проблем.

Перезапускаем polybar

killall polybar && sh ~/.config/polybar/launch.sh

Теперь в конце панели будет отображаться VPN: ON/OFF по клику как и писал выше соединение устанавливается или разрывается.

Описание изображения

Похожие посты