Как настроить Wireguard в Linux

Wireguard – это мощный демон виртуальной частной сети (VPN) с открытым исходным кодом, который может работать как на настольных, так и на мобильных устройствах. Он представляет собой быструю и легкую альтернативу традиционным VPN-решениям, таким как IPsec и OpenVPN Здесь мы покажем вам, как установить Wireguard и создать простую VPN-настройку, используя три Linux-машины.

Почему стоит использовать Wireguard в качестве VPN-решения?

Одно из главных преимуществ Wireguard – это быстрый и легкий демон VPN. В отличие от традиционных решений, Wireguard не добавляет много накладных расходов в вашу сеть. Это приводит к снижению задержек и высокой общей пропускной способности узлов.

Еще одной ключевой особенностью Wireguard является то, что он представляет собой модуль в ядре Linux. Это позволяет ему работать, не занимая дополнительных системных ресурсов компьютера, что делает его идеальным выбором для развертывания на устройствах low-end и SOC.

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

Получение Wireguard

Первым шагом для установки Wireguard в Linux является загрузка его основных инструментов из репозитория вашего дистрибутива. Это позволит вам управлять встроенным в ядро модулем Wireguard с помощью команд пользовательского пространства.

Чтобы установить основные инструменты в Ubuntu и Debian выполните следующую команду:

sudo apt install wireguard wireguard-tools

В Fedora вы можете использовать менеджер пакетов dnf:

sudo dnf install wireguard-tools

Для Arch Linux можно запустить pacman, чтобы получить основные инструменты Wireguard:

sudo pacman -S wireguard-tools

Убедитесь, что вы правильно установили инструменты Wireguard, загрузив экран справки:

wg -h

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

Предположение: В этой статье предполагается, что вы устанавливаете сервер Wireguard на Linux-систему с общедоступным IPv4-адресом. Инструкции будут работать на сервере, находящемся за NAT, но он не сможет найти узлы за пределами своей подсети.

Установив основной инструментарий Wireguard на Linux-машины, вы можете настроить серверный узел VPN. Он будет служить интернет-шлюзом для ваших клиентских узлов в сети.

Начните с перехода в каталог конфигурации Wireguard и установите для него стандартные разрешения «только для root:».

cd /etc/wireguard
sudo umask 077

Примечание: некоторые системы могут не позволить вам войти в папку «/etc/wireguard» как обычному пользователю. Чтобы исправить это, переключитесь на пользователя root с помощью sudo -s .

Сгенерируйте открытый и закрытый ключ для вашего сервера Wireguard:

sudo sh -c 'wg genkey | tee /etc/wireguard/server-private-key | wg pubkey > /etc/wireguard/server-public-key'

Создайте файл конфигурации сервера с помощью вашего любимого текстового редактора:

sudo nano /etc/wireguard/wg0.conf

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

[Interface]
PrivateKey = PASTE-YOUR-SERVER-PRIVATE-KEY-HERE
Address = 10.0.0.1/32
ListenPort = 60101
PostUp = iptables -t nat -I POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o NETWORK-INTERFACE-HERE -j MASQUERADE

Откройте новый сеанс терминала, затем напечатайте закрытый ключ Wireguard вашего сервера:

sudo cat /etc/wireguard/server-private-key

Скопируйте закрытый ключ вашего сервера в буфер обмена.

Замените значение переменной PrivateKey на ключ из буфера обмена.

Найдите сетевой интерфейс, имеющий доступ к Интернету, с помощью команды ip:

ip route get 8.8.8.8

Установите значение флага -o в переменных PostUp и PostDown на интерфейс с доступом в Интернет, затем сохраните файл конфигурации.

Откройте файл сервера «/etc/sysctl.conf» с помощью вашего любимого текстового редактора:

sudo nano /etc/sysctl.conf

Прокрутите вниз до строки, содержащей net.ipv4.ip_forward=1, затем удалите знак фунта (#) перед ней.

Перезагрузите новую конфигурацию sysctl, выполнив команду: sudo sysctl -p .

Настройка и подключение клиента Wireguard

На данный момент у вас есть правильно настроенный сервер Wireguard без каких-либо аналогов. Чтобы использовать его, вам нужно настроить и подключить своего первого клиента Wireguard.

Перейдите в каталог конфигурации Wireguard вашей клиентской системы и установите в нем разрешения по умолчанию:

cd /etc/wireguard
sudo umask 077

Сгенерируйте пару ключей Wireguard вашего клиента с помощью следующей команды:

sudo sh -c 'wg genkey | tee /etc/wireguard/client1-private-key | wg pubkey > /etc/wireguard/client1-public-key'

Создайте файл конфигурации Wireguard клиента с помощью вашего любимого текстового редактора:

sudo nano /etc/wireguard/wg0.conf

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

[Interface]
PrivateKey = PASTE-YOUR-CLIENT1-PRIVATE-KEY-HERE
Address = 10.0.0.2/32
ListenPort = 60101 
[Peer]
PublicKey = PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs = 0.0.0.0/0
Endpoint = PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60101
PersistentKeepalive = 25

Замените переменную PrivateKey на закрытый ключ вашего клиента.

Откройте терминальную сессию сервера Wireguard, а затем распечатайте его открытый ключ:

sudo cat /etc/wireguard/server-public-key

Установите значение переменной PublicKey на открытый ключ вашего сервера.

Измените переменную Endpoint на IP-адрес вашего сервера Wireguard.

Сохраните файл конфигурации, а затем используйте команду wg-quick для запуска клиента Wireguard:

sudo wg-quick up wg0

Примечание: эта команда отключит сетевое подключение вашего клиента до тех пор, пока вы не запустите сервер Wireguard. Чтобы вернуться к исходной сети, выполните sudo wg-quick down wg0 .

Подключение сервера Wireguard к клиенту

Зайдите в терминальную сессию сервера Wireguard, затем откройте его файл конфигурации:

sudo nano /etc/wireguard/wg0.conf

Вставьте следующий блок кода после секции [Interface]:

[Peer]
PublicKey = PASTE-YOUR-CLIENT1-PUBLIC-KEY-HERE
AllowedIPs = 10.0.0.2/32
PersistentKeepalive = 25

Установите в переменную PublicKey открытый ключ клиента Wireguard.

Примечание: Вы можете получить открытый ключ, запустив sudo cat /etc/wireguard/client1-public-key на машине клиента.

Сохраните файл конфигурации, а затем выполните следующую команду, чтобы запустить службу Wireguard на сервере:

sudo wg-quick up wg0

Добавление второго клиента на сервер

Одна из ключевых особенностей каждого VPN-сервиса – возможность объединить несколько машин из разных сетей. Это полезно, если у вас есть компьютеры в разных местах или вы хотите организовать частный игровой сервер для своих друзей.

Чтобы сделать это в Wireguard, вам нужно создать файл конфигурации для нового VPN-интерфейса на вашем сервере. Самый простой способ сделать это – скопировать текущий конфиг сервера и дать копии новое имя:

sudo cp /etc/wireguard/wg0.conf /etc/wireguard/wg1.conf

Откройте новый файл конфигурации с помощью вашего любимого текстового редактора:

sudo nano /etc/wireguard/wg1.conf

Установите переменную ListenPort в значение 60102. Это предотвратит любые коллизии портов между VPN-интерфейсами wg0 и wg1.

Перейдите в раздел [Peer] и измените переменную AllowedIPs с «10.0.0.2/32» на «10.0.0.3/32», затем сохраните файл конфигурации.

Настройка второго клиента Wireguard

Войдите в систему на второй машине, затем подготовьте каталог конфигурации Wireguard:

cd /etc/wireguard
sudo umask 077

Сгенерируйте новую пару ключей Wireguard с помощью следующей команды:

sudo sh -c 'wg genkey | tee /etc/wireguard/client2-private-key | wg pubkey > /etc/wireguard/client2-public-key'

Создайте новый файл конфигурации с помощью вашего любимого текстового редактора:

sudo nano /etc/wireguard/wg0.conf

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

[Interface]
PrivateKey = PASTE-YOUR-CLIENT2-PRIVATE-KEY-HERE
Address = 10.0.0.3/32
ListenPort = 60102 
[Peer]
PublicKey = PASTE-YOUR-SERVER-PUBLIC-KEY-HERE
AllowedIPs = 0.0.0.0/0
Endpoint = PASTE-YOUR-SERVER-IP-ADDRESS-HERE:60102
PersistentKeepalive = 25

Установите переменную PrivateKey на закрытый ключ вашей второй машины, затем измените переменную PublicKey на открытый ключ вашего сервера.

Замените переменную Endpoint на IP-адрес вашего сервера, а затем на «:60102».

Сохраните файл конфигурации, затем запустите клиент Wireguard на второй машине:

sudo wg-quick up wg0

Подключение второго клиента к серверу Wireguard

Снова войдите на сервер Wireguard, затем откройте конфигурацию интерфейса VPN для второго клиента:

sudo nano /etc/wireguard/wg1.conf

Прокрутите вниз до раздела [Peer], затем замените переменную PublicKey на открытый ключ вашего второго клиента.

Сохраните файл конфигурации, затем запустите второй VPN-интерфейс с помощью команды wg-quick:

sudo wg-quick up wg1

Убедитесь, что первый и второй клиенты Wireguard корректно отображаются на сервере, выполнив команду wg .

Тестирование сети Wireguard

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

sudo apt install net-tools curl

В Fedora вам нужно установить только curl, поскольку она уже поставляется с сетевыми инструментами из коробки:

sudo dnf install curl

Для Arch Linux можно использовать pacman для установки сетевых инструментов и curl:

sudo pacman -S traceroute curl

Начните с отслеживания маршрута пакета между двумя клиентами. Ниже показано, как IP-пакет проходит путь от «10.0.0.2» до «10.0.0.3:»

traceroute 10.0.0.3

Проверьте, может ли любой из ваших узлов получить доступ к публичному интернету, выполнив пинг на общий IP-адрес:

ping -c 5 8.8.8.8

Наконец, убедитесь, что ваши узлы имеют одинаковый публичный IP-адрес с сервером Wireguard:

curl ipinfo.io/ip
Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен www.maketecheasier.com

Похожие статьи

Комментарии (0)