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

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

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

Наконец, Wireguard также использует современные криптографические стандарты и практики разработки. У него также было несколько формальных проверок, которые подтверждают правильность кода Wireguard, гарантии безопасности и способность противостоять атакам.
Кстати: все еще не уверены в Wireguard? Узнайте, как Wireguard сравнивается с OpenVPN.
Получение 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= ВСТАВЬТЕ-ВАШ-ЗАКРЫТЫЙ-КЛЮЧ-СЕРВЕРА-ЗДЕСЬ
Address= 10.0.0.1/32
ListenPort= 60101
PostUp= iptables -t nat -I POSTROUTING -o ИНТЕРФЕЙС-СЕТИ-ЗДЕСЬ -j MASQUERADE
PostDown= iptables -t nat -D POSTROUTING -o ИНТЕРФЕЙС-СЕТИ-ЗДЕСЬ -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 не единственное решение VPN, которое вы можете запустить на Linux. Узнайте, как создать свою собственную VPN с помощью OpenVPN.
Настройка и подключение клиента 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= ВСТАВЬТЕ-ВАШ-ЗАКРЫТЫЙ-КЛЮЧ-КЛИЕНТА1-ЗДЕСЬ
Address= 10.0.0.2/32
ListenPort= 60101
[Peer]
PublicKey= ВСТАВЬТЕ-ВАШ-ОТКРЫТЫЙ-КЛЮЧ-СЕРВЕРА-ЗДЕСЬ
AllowedIPs= 0.0.0.0/0
Endpoint= ВСТАВЬТЕ-ВАШ-АДРЕС-IP-СЕРВЕРА-ЗДЕСЬ: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= ВСТАВЬТЕ-ВАШ-ОТКРЫТЫЙ-КЛЮЧ-КЛИЕНТА1-ЗДЕСЬ
AllowedIPs= 10.0.0.2/32
PersistentKeepalive= 25Установите переменную PublicKey на открытый ключ вашего клиента Wireguard.
![Терминал, показывающий местоположение блока [Peer] и подчеркивающий открытый ключ клиента.](https://www.maketecheasier.com/assets/uploads/2024/07/set-up-wireguard-linux-vpn-13-highlight-client1-public-key.png)
Примечание: вы можете получить открытый ключ, выполнив 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= ВСТАВЬТЕ-ВАШ-ЗАКРЫТЫЙ-КЛЮЧ-КЛИЕНТА2-ЗДЕСЬ
Address= 10.0.0.3/32
ListenPort= 60102
[Peer]
PublicKey= ВСТАВЬТЕ-ВАШ-ОТКРЫТЫЙ-КЛЮЧ-СЕРВЕРА-ЗДЕСЬ
AllowedIPs= 0.0.0.0/0
Endpoint= ВСТАВЬТЕ-ВАШ-АДРЕС-IP-СЕРВЕРА-ЗДЕСЬ: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
Изучение настройки сети Wireguard на Linux — это первый шаг к исследованию увлекательного мира VPN. Погрузитесь глубже и посмотрите наши рекомендации по лучшим провайдерам VPN, ориентированным на безопасность, которые вы можете получить сегодня.
Фото: Kari Shea через Unsplash и Wikimedia Commons. Все изменения и скриншоты сделаны Рамсесом Редом.