Настройка WireGuard VPN-сервера
Добавляем unstable репозиторий в пакетный менеджер apt. Меняем приоритет для unstable пакетов. Делаем обновления ОС и устанавливаем пакет wireguard.
Но могут возникнуть проблемы типу не хватает открытого pgp ключа:
Не паникуем и просто импортируем его командой:
И как мы видим, ошибка ушла:
Если нет модуля ядра, ставим и его
apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r)
Как только все будет готово, проверяем, что модуль загружен:
modprobe wireguard && lsmod | grep wireguard
wireguard 225280 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguard
Создаем открытый и закрытый ключи для сервера и для клиента.
mkdir ~/wireguard
cd ~/wireguard
umask 077
wg genkey | tee server_private_key | wg pubkey > server_public_key
wg genkey | tee client_private_key | wg pubkey > client_public_key
В результате, у нас будет создано четыре файла:
Включаємо форвардинг в sysctl.conf:
nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
Создаем директорию / etc / wireguard, а в ней конфигурационный файл /etc/wireguard/wg0.conf следующего содержания:
Разумеется, вместо SERVER_PRIVATE_KEY и CLIENT_PUBLIC_KEY мы прописываем ключи, которые были созданы ранее файлов. Далее, комментарии по конфиге:
Address - адрес виртуального интерфейса wg0 на сервере.
PostUp и PostDown - команды, которые будут выполнены при включении и отключении интерфейса.
ListenPort - порт, на котором будет работать VPN.
AllowedIPs - виртуальные IP клиентов, которые будут подключаться к нашему серверу.
Сохраняем изменения, делаем файл доступен только для root, включаем и запускаем сервис:
chmod 600 /etc/wireguard/wg0.conf
systemctl enable wg-quick@wg0.service
systemctl restart wg-quick@wg0.service
Настройка wireguard клиента
Добавьте репозиторий Wireguard в ваш список источников. Затем Apt автоматически обновит кэш пакета.
sudo add-apt-repository ppa:wireguard/wireguard
Установите Wireguard. Пакет установит всю необходимую зависимость.
Bash:
sudo apt install wireguard
Переходим в директорию / etc / wireguard, а в ней создаем конфигурационный файл /etc/wireguard/wg0-client.conf следующего содержания:
В данном случае, вместо CLIENT_PRIVATE_KEY и SERVER_PUBLIC_KEY мы опять же, подставляем ключи, сгенерированные ранее, а вместо SERVER_REAL_IP прописываем IP адрес нашего сервера, на котором установлен VPN.
Сохраняем файл, и пробуем подключиться командой wg-quick up wg0-client:
Проверяем подключение, и если все сделано правильно, то весь наш трафик теперь будет проходить через VPN сервер.
Для отключения от VPN просто выполняем команду wg-quick down wg0-client:
При необходимости, мы можем управлять сервисом через systemd:
systemctl restart wg-quick@wg0-client.service