Установка VPN WireGuard на Ubuntu
Для установки WireGuard на Ubuntu необходимо выполнить ряд последовательных действий. Первым шагом является обновление списка пакетов в репозиториях операционной системы. Это осуществляется при помощи команды sudo apt update
. Данная команда обеспечивает получение актуальной информации о доступных для установки пакетах и их версиях.
После обновления списка пакетов следует установить непосредственно WireGuard. Для этого используется команда sudo apt install wireguard
. В процессе установки система может запросить подтверждение на выполнение операции, которое необходимо подтвердить вводом символа "y" и нажатием клавиши Enter.
После завершения установки базового пакета WireGuard рекомендуется установить дополнительные инструменты, упрощающие управление VPN-соединениями. К таким инструментам относится wireguard-tools
, который можно установить командой sudo apt install wireguard-tools
.
Далее необходимо сгенерировать пару криптографических ключей для сервера и клиента WireGuard. Для генерации ключей на сервере используется команда wg genkey | tee privatekey | wg pubkey > publickey
. Данная команда генерирует приватный ключ, сохраняет его в файле privatekey
и одновременно выводит соответствующий публичный ключ, который затем сохраняется в файле publickey
.
Аналогичная процедура генерации ключей выполняется и на стороне клиента. Команды будут идентичными: wg genkey | tee privatekey | wg pubkey > publickey
. Необходимо обеспечить безопасное хранение приватных ключей и передачу публичных ключей между сервером и клиентом.
Следующим этапом является создание конфигурационного файла для сервера WireGuard. По умолчанию файл конфигурации располагается по пути /etc/wireguard/wg0.conf
. Необходимо создать этот файл с соответствующим содержимым, определяющим параметры VPN-туннеля, такие как IP-адрес сервера, прослушиваемый порт, приватный ключ сервера, а также информацию о подключаемых клиентах (их публичные ключи и разрешенные IP-адреса).
Пример конфигурационного файла сервера /etc/wireguard/wg0.conf
:
[Interface]
PrivateKey = <приватный ключ сервера>
ListenPort = 51820
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <публичный ключ клиента 1>
AllowedIPs = 10.0.0.2/32
[Peer]
PublicKey = <публичный ключ клиента 2>
AllowedIPs = 10.0.0.3/32
В данном примере eth0
представляет собой сетевой интерфейс сервера, подключенный к интернету.
Аналогично создается конфигурационный файл для клиента WireGuard, например /etc/wireguard/wg0.conf
. Данный файл содержит информацию о приватном ключе клиента, IP-адресе клиента в VPN-сети, а также данные для подключения к серверу (публичный ключ сервера, IP-адрес сервера и порт).
Пример конфигурационного файла клиента /etc/wireguard/wg0.conf
:
[Interface]
PrivateKey = <приватный ключ клиента>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <публичный ключ сервера>
Endpoint = <IP-адрес сервера>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Параметр AllowedIPs = 0.0.0.0/0
указывает, что весь трафик клиента должен направляться через VPN-туннель. PersistentKeepalive
используется для поддержания соединения при наличии NAT.
После создания конфигурационных файлов необходимо активировать интерфейс WireGuard на сервере и клиенте. Это осуществляется при помощи команды sudo wg-quick up wg0
. Для деактивации интерфейса используется команда sudo wg-quick down wg0
.
Для автоматического запуска интерфейса WireGuard при загрузке системы можно использовать systemd. Для этого необходимо создать соответствующий сервисный файл.
Для проверки статуса VPN-соединения используется команда sudo wg show
. Данная команда отображает информацию об активных интерфейсах WireGuard, подключенных пирах, переданном и полученном трафике.
Для обеспечения безопасности соединения рекомендуется настроить брандмауэр (например, UFW) на сервере для разрешения входящих соединений по порту WireGuard (по умолчанию 51820) и переадресации трафика.
В случае использования нескольких клиентов необходимо добавить секции [Peer]
для каждого клиента в конфигурационном файле сервера, указав их публичные ключи и выделенные им IP-адреса в VPN-сети.
Корректная настройка сетевых интерфейсов и правил маршрутизации является важным аспектом обеспечения работоспособности VPN-соединения. Необходимо убедиться, что трафик между клиентами и сервером маршрутизируется правильно.