Установка WireGuard на Debian и мобильный телефон

Логотип WireGuard

В этой статье я хочу рассказать о новом VPN клиенте WireGuard®. Так уж совпало, что вышел релиз Debian 11 Bullseye с новым ядром 5.10, так что устанавливать WireGuard® мы будем на VPS, где уже установлен Debian 11.

Как заявлено на сайте https://wireguard.com он:

  • простой и легкий в использовании;
  • использует современную криптографию;
  • имеет компактный, читаемый код, которые легко исследовать на уязвимости;
  • высокопроизводительный;
  • тщательно продуман и хорошо спроектирован.

В качестве сетевого экрана я буду использовать nftables. Несмотря на то, что nftables был включен в состав ядра ​​Linux еще в 2014 году, его популярность стала расти лишь в последнее время, так как в мире Linux изменения происходят довольно медленно. Я думаю, что сейчас его можно можно смело рекомендовать для построения брандмауэра.

Содержание статьи

  • Установка Wireguard на Debian 11 и мобильны телефон
  • Настройка брандмауэра с использованием nftables

Установка WireGuard на Debian 11 Bullseye и мобильный телефон

Установка пакетов

Выполнять настройку и установку WireGuard будем от пользователя root. Для этого выполните команду, указанную ниже и введите пароль.

su -

Далее установим пакеты, необходимые для работы WireGuard и пакет для формирования QR-кода, который нам понадобится при настройке клиента WireGuard на мобильном телефоне.

apt install -y wireguard wireguard-dkms wireguard-tools qrencode

Настройка сервера Wireguard

Итак, если все прошло без ошибок, то можно приступать к настройке сервера. Давайте создадим папку для работы, ключи шифрования для нашего сервера и разрешим доступ к секретному ключу только пользователю root.

cd ~
mkdir -p wireguard && cd wireguard
wg genkey | tee server.key | wg pubkey > server.pub
chmod 600 server.key

Для запуска сервера нам необходимо создать для него конфигурационный файл, настроить права доступа и внести в него необходимые настройки. Для редактирования созданного файла конфигурации вы можете использовать редактор nano или любой другой, который вам нравится.

mkdir -p /etc/wireguard
touch /etc/wireguard/wg0.conf
chmod 600 /etc/wireguard/wg0.conf
nano /etc/wireguard/wg0.conf

Внесите в конфигурационный файл следующие данные:

[Interface]
Address = XXX.XXX.XXX.1/24
ListenPort = YYYYY
SaveConfig = true
PrivateKey = abcdefghijklmnopqrstuvwxyz0123456789=

Замените XXX на значения нужной вам подсети, а YYYYY на выбранный номер порта. Понятно, что адрес сети следует выбирать из следующих диапазонов — 10.0.0.0/8, 172.16.0.0/8 и, если хотите, 192.168.0.0/16, а номер порта выше диапазона известных и динамически назначаемых портов. Например, 10.20.30.1 и 54321.

Возьмите закрытый ключ из файла ~/wireguard/server.key, который мы создали ранее и сохраните наш файл конфигурации нажав Ctrl + X.

После этого давайте проверим, что наш сервер работает. Выполните в консоли следующую команду:

wg-quick up wg0

Вы должны увидеть вывод подобный этому:

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.20.30.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0

Чтобы убедиться, что интерфейс wireguard поднялся и получил ip-адрес наберите команду ip a. Вы должны увидеть что-то подобное:

3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.20.30.1/24 scope global wg0
       valid_lft forever preferred_lft forever

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

Настройка клиента Wireguard на мобильном телефоне

Осталось создать конфигурационный файл для клиента WireGuard, который мы установим на наш мобильный телефон. Сказать клиент WireGuard вы можете по этим ссылкам.

Итак, приступим к созданию ключевой пары и конфигурационного файла для нашего клиента. Выполните в консоли следующие команды:

cd ~/wireguard
wg genkey | tee client.key | wg pubkey > client.pub
chmod 600 client.key
touch client.conf
nano client.conf

И внесите в созданный файл конфигурации такие данные:

[Interface]
Address = XXX.XXX.XXX.XXX/24
PrivateKey = abcdefghijklmnopqrstuvwxyz0123456789=
DNS = 8.8.8.8

[Peer]
PublicKey = abcdefghijklmnopqrstuvwxyz0123456789=
AllowedIPs = 0.0.0.0/0
Endpoint = ZZZ.ZZZ.ZZZ.ZZZ:YYYYY

Выберите ip-адрес для клиента с учетом сети сервера, например, 10.20.30.2. Если вы на своем VPS сервере настроили службу DNS, то можете указать ее адрес, в противном случае — любой публичный DNS, например Google. В строке PrivateKey нужно вставить данные из созданного нами секретного ключа клиента — client.key, а в строке PublicKey открытый ключ нашего сервера — server.pub. В Endpoint вам необходимо указать ip-адрес вашего VPS сервера и порт, который вы выбрали при настройке сервера.

Ну и в заключение настройки необходимо добавить данные о нашем клиенте в конец конфигурационного файла сервера — nano /etc/wireguard/wg0.conf. Секция [Peer] отвечает за описание клиента и их может быть несколько. В PublicKey мы указываем содержимое файла client.pub, а в AllowedIPs VPN адрес клиента. В нашем случае — это 10.20.30.2.

[Interface]
Address = XXX.XXX.XXX.1/24
ListenPort = YYYYY
SaveConfig = true
PrivateKey = abcdefghijklmnopqrstuvwxyz0123456789=

[Peer]
PublicKey = abcdefghijklmnopqrstuvwxyz0123456789=
AllowedIPs = ZZZ.ZZZ.ZZZ.ZZZ/32

Итак, все настройки сделаны. Осталось лишь сформировать из клиентского файла конфигурации QR-код для удобной настройки мобильного приложения на телефоне. Тут нам и пригодится установленный ранее пакет qrencode. Приступим:

qrencode -t ansiutf8 < ~/wireguard/client.conf
QR код конфигурации клиента WireGuard
QR код конфигурации клиента WireGuard

В результате, все что нам нужно сделать для настройки мобильного приложения — это считать этот QR код.

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

Настройка сетевого экрана на сервере

А вот этим мы займемся в следующей статье. Я покажу конфигурацию nftables для VPS которую вы сможете изменить под свои потребности.

Как всегда, готов обсудить с вами эту статью и ответить на ваши вопросы. Удачи.

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

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