Как настроить клиент WireGuard VPN с графическим интерфейсом NetworkManager

WireGuard — это реализация протокола VPN с открытым исходным кодом, которая быстро набирает популярность среди пользователей VPN благодаря своей скорости, простоте использования и хорошо продуманной кодовой базе. Модуль ядра WireGuard поставляется с основным ядром Linux 5.6 или более поздней версии, а его пользовательские инструменты уже включены в базовые репозитории всех современных дистрибутивов Linux. Если вы хотите настроить DIY VPN-маршрутизатор на общедоступном VPS под вашим контролем, на самом деле нет причин не попробовать WireGuard.

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

В этом руководстве основное внимание уделяется настройке клиента WireGuard VPN с помощью популярного инструмента управления сетью по выбору: графического интерфейса пользователя NetworkManager.

Предположения

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

Я также предполагаю следующие настройки.

  • WAN-адрес VPN-сервера WireGuard: 192.168.122.104
  • UDP-порт прослушивания VPN-сервера WireGuard: 51820
  • VPN-адрес сервера WireGuard VPN: 10.0.0.1/24
  • VPN-адрес клиента WireGuard VPN: 10.0.0.2/24

Шаг первый: проверьте требование

Чтобы иметь возможность настраивать клиент WireGuard VPN с графическим интерфейсом NetworkManager, вам потребуется NetworkManager версии 1.26.2 или выше . Поэтому, прежде чем продолжить, сначала проверьте версию своего NetworkManager. Этому требованию соответствуют Ubuntu 20.10, Fedora 33 и Arch Linux 2020.09.01 или новее. Таким образом, это руководство применимо только к одной из этих сред рабочего стола Linux.

Шаг второй: установите WireGuard

Идите вперед и установите WireGuard с менеджером пакетов по умолчанию.

Для Ubuntu:

$ sudo apt install wireguard

Для Fedora:

$ sudo dnf install wireguard-tools

Для Arch Linux:

sudo pacman -S wireguard-tools

Шаг третий: создайте пару криптографических ключей

Затем создайте пару открытого/закрытого ключей для клиента WireGuard VPN. Для этого сначала переключимся в корень. Остальные шаги в руководстве будут выполняться от имени пользователя root.

$ sudo -i

Используйте команду wg, чтобы создать пару ключей и сохранить их в /etc/wireguard.

cd /etc/wireguard
umask 077
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Шаг четвертый: добавьте открытый ключ клиента на сервер WireGuard VPN

Чтобы клиент WireGuard мог взаимодействовать с сервером WireGuard VPN, вам необходимо явно добавить открытый ключ клиента на сервер VPN. В конце концов, WireGuard — это одноранговая VPN. Итак, войдите на хост-сервер WireGuard VPN и выполните следующую команду.

wg set wg0 peer <client-public-key> allowed-ips <client-VPN-address>

Обратите внимание, что в этом примере IP-адрес клиента VPN — 10.0.0.2.

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

Затем запустите nm-connection-editor из командной строки и добавьте новое сетевое соединение для WireGuard VPN. Обязательно запускайте nm-connection-editorкак root, так как он должен создать файл конфигурации в /etc/NetworkManager/system-connections.

nm-connection-editor

В графическом интерфейсе сетевых подключений нажмите кнопку +.

NetworkManager версии 1.26.2 и выше позволяет создавать соединение типа WireGuard. Таким образом, выберите WireGuard в качестве типа подключения.

Откроется окно редактора соединений, как показано ниже. На вкладке WireGuard установите Interface name для wg0 и заполните Private key. Закрытый ключ должен быть получен из содержимого /etc/wireguard/privatekey, которое вы только что создали на шаге 3. Затем нажмите кнопку Add внизу, которая позволяет вам указать сервер WireGuard VPN в качестве однорангового узла.

На WireGuard GUI редактора пиров, заполнить поля Public key, Allowed IPs и Endpoint. Открытый ключ должен поступать с сервера WireGuard. Конечная точка состоит из WAN IP-адреса VPN-сервера и UDP-порта, который сервер прослушивает. Заполнив их, нажмите кнопку Apply.

На этом этапе вы увидите, что VPN-сервер добавлен в качестве однорангового узла:

Затем перейдите на IPv4 вкладку Settings и настройте частный IP-адрес VPN, который будет назначен клиенту WireGuard VPN, то есть 10.0.0.2/24. В качестве шлюза, указать VPN IP — адрес сервера VPN WireGuard, который 10.0.0.1/24. В качестве DNS-серверов вы можете выбрать любой общедоступный DNS-сервер (например, 8.8.8.8). Щелкните по кнопке Save.

Теперь перейдите на вкладку General и установите флажок рядом с Connect automatically with priority. Это автоматически активирует это соединение WireGuard и установит соединение VPN с сервером WireGuard VPN. Нажмите кнопку Save, чтобы завершить.

Шаг 6. Проверьте подключение WireGuard VPN

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

Чтобы проверить подключение WireGuard VPN на стороне клиента, вы можете попробовать выполнить эхо-запрос внешнего хоста (например, 8.8.8.8) с хоста клиента. Чтобы убедиться, что трафик ping маршрутизируется через сервер WireGuard VPN, используйте команду ip.

ping 8.8.8.8
ip route get 8.8.8.8

Команда ip route get <destination> показывает маршрут, используемый для достижения указанного пункта назначения. Вывод команды выше подтверждает, что трафик, предназначенный для 8.8.8.8 маршрутизатора, маршрутизируется через интерфейс wg0, а не через WAN-интерфейс хоста.

Другой способ проверить подключение к VPN — запустить tcpdump на виртуальном интерфейсе WireGuard wg0 и проверить, видит ли интерфейс ICMP-запрос и ответный трафик, сгенерированный командой ping.

tcpdump -i wg0

Необязательно: управление подключением WireGuard из командной строки
После успешного создания подключения WireGuard с помощью графического интерфейса Network Manager вы можете управлять подключением из командной строки nmcli следующим образом.

Просто запустите, nmcli чтобы увидеть статус VPN-соединения.

nmcli

Чтобы просмотреть подробные свойства подключения WireGuard VPN:

nmcli --overview connection show 'WireGuard connection 1'

Чтобы запустить или остановить WireGuard VPN:

nmcli connection up 'WireGuard connection 1'
nmcli connection down 'WireGuard connection 1'

Чтобы проверить статус автозапуска WireGuard VPN:

nmcli connection show 'WireGuard connection 1' | grep autoconnect

Чтобы включить / выключить автоматический запуск WireGuard VPN:

nmcli connection modify 'WireGuard connection 1' connection.autoconnect yes
nmcli connection modify 'WireGuard connection 1' connection.autoconnect no

Чтобы удалить соединение WireGuard VPN:

nmcli connection delete 'WireGuard connection 1'

Устранение неполадок WireGuard VPN

Симптом: Вы не можете проверить связь с частным IP-адресом VPN-сервера WireGuard ( 10.0.0.1).

Решение 1.Проверьте доступность порта UDP

Убедитесь, что порт прослушивания UDP сервера VPN доступен для клиента. Чтобы проверить, так ли это, используйте ncкоманду .

nc -zvu <WAN-адрес VPN-сервера> <UDP-порт>

В нашем примере:

nc -zvu 192.168.122.104 51820

Connection to 192.168.122.240 51820 port [udp/*] succeeded!

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

Решение 2. Проверьте, добавлен ли открытый ключ клиента к VPN-серверу.

Другая возможность заключается в том, что вы забыли добавить открытый ключ клиента к серверу WireGuard VPN. Как описано в шаге 4 этого руководства, используйте wgдля этого команду:

wg set wg0 peer allowed-ips

Резюме

Это руководство еще раз доказало вам, насколько легко настроить WireGuard VPN на современном рабочем столе Linux. Хотя NetworkManager обеспечивает достаточно хорошую поддержку WireGuard VPN, его полной интеграции с рабочим столом (по крайней мере, на рабочий стол GNOME) все еще нет. Например, начиная с NetworkManager 1.26.2, когда WireGuard VPN включен, индикатор сети не отображает значок состояния для WireGuard.

Если вы используете WireGuard VPN в среде рабочего стола Linux, поделитесь своим опытом в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.