WireGuard - это приложение которое позволяет настроить безопасную виртуальную частную сеть (VPN), известное своей простотой и удобством использования. Оно использует проверенные криптографические протоколы и алгоритмы для защиты данных. Изначально разработанное для ядра Linux, оно может быть развернуто на Windows, macOS, BSD, iOS и Android.
В этой настройке WireGuard vpn используется Ubuntu 20.04.
Установка WireGuard Server на Ubuntu Linux
Войдите по SSH на Linux сервер, после входа в систему проверьте, обновлена ли машина, выполнив следующую команду:
sudo apt-get update && sudo apt-get upgrade
Теперь установите WireGuard, выполнив следующую команду:
sudo apt-get install wireguard
Настройка IP-переадресации
Для работы VPN нам нужно включить пересылку пакетов, только тогда мы сможем подключаться через сервер Wireguard, для этого нам нужно отредактировать файл /etc/sysctl.conf:
sudo nano /etc/sysctl.conf
удалите “#” для следующей команды
net.ipv4.ip_forward=1
После этого выполните следующую команду для того, чтобы применить изменения:
sysctl -p
Отобразится следующее сообщение:
Генерация закрытого и открытого ключей
WireGuard работает путем шифрования соединения с помощью пары криптографических ключей. Пара ключей используется путем передачи открытого ключа другой стороне, которая затем может зашифровать свое сообщение таким образом, что оно может быть расшифровано только с помощью соответствующего закрытого ключа. Для обеспечения безопасности двусторонней связи каждая сторона должна иметь собственные закрытый и открытый ключи, так как каждая пара обеспечивает только односторонний обмен сообщениями.
Перед генерацией пары ключей перейдите в каталог
dwg sudo cd /etc/wireguard
Установите разрешение на эту директорию:
umask 077
Чтобы сгенерировать пару ключей, введите следующую команду:
wg genkey | tee private.key | wg pubkey > public.key
Настройка серверной конфигурации
Чтобы начать настройку сервера WireGuard, перейдите в папку /etc/wireguard и создайте файл wg0.conf
sudo nano /etc/wireguard/wg0.conf
Добавьте в файл конфигурации следующие директивы:
[Interface]
PrivateKey = <contents-of-server-privatekey>
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
ListenPort = 51820
[Peer]
PublicKey = <contents-of-client-publickey>
AllowedIPs = 10.0.0.2/32
Скопируйте закрытый ключ, который мы сгенерировали ранее, и вставьте его в PrivateKey.
Аналогично нужно сгенерировать пару ключей для клиента, скопируйте открытый ключ клиента и вставьте его в PublicKey.
Чтобы скопировать значение ключа, выполните следующую команду:
sudo cat /etc/wireguard/public.key
sudo cat /etc/wireguard/private.key
Запуск WireGuard и включение его при загрузке
Теперь мы готовы к запуску сервера, для запуска WireGuard мы используем wg-quick и указываем имя нового интерфейса:
wg-quick up wg0
Если конфигурация выполнена идеально, вы увидите следующий экран,
Чтобы проверить статус работы сервера WireGuard введите:
wg show
Поздравляю, мы успешно подняли сервер WireGuard!