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
Комментарии (0)