Блог учителя Информатики

Комментарии отключены

Установка WireGuard VPN на Ubuntu 20.04

Разберем установку и настройку WireGuard. Это бесплатный и быстрый VPN с открытым исходным кодом.
Подключаемся к нашему серверу через ssh и выполняем следующие команды.
Для начала обновим список пакетов на нашем сервере и установим их командами:

apt update
apt upgrade

Теперь можно установить WireGuard:

apt install wireguard

Первое, что необходимо сделать, это сгенерировать пару ключей для сервера:

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Создаем конфиг сервера:

nano /etc/wireguard/wg0.conf

Конфиге прописываем следующие строчки:

[Interface]
PrivateKey = <SERVER-PRIVATE-KEY>
Address = 10.0.0.1/24
ListenPort = 51830
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

В PrivateKey прописываем содержимое из файла /etc/wireguard/privatekey. Так же в ListenPort можно подставить другое значение, если вы не хотите использовать номер порта по умолчанию. Address — это адрес сервера при соединении по VPN. PostUp и PostDown команды которые будут выполняться при активации и деактивации сетевого интерфейса wg0. Это команды для файрволла включающие форвардинг пакетов.
Так же не забудьте подставить вместо ens3 название вашего сетевого интерфейса, если он отличается.
Узнать названия сетевых интерфейсов можно командой:

ip a

Включаем поддержку IP форвардинга. Для этого открываем файл sysctl.conf.

nano /etc/sysctl.conf

Находим в нем строчку net.ipv4.ip_forward=1 и разкомментируем ее (убираем перед ней символ #).
Перезапускаем сервис, чтобы применить настройки:

sysctl -p

Теперь включаем через systemctl демон WireGuard и запускаем его:

systemctl enable wg-quick@wg0.service
systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service

Выставляем для приватного ключа и конфига настройки доступа только для чтения:

chmod 600 /etc/wireguard/privatekey
chmod 600 /etc/wireguard/wg0.conf

Теперь займемся настройками клиентов. На официальном сайте WireGuard берем клиента для используемой вами операционной системы. Для телефонов на Android и iOS.
Генерируем ключи для клиента:

wg genkey | tee /etc/wireguard/client_privatekey | wg pubkey | tee /etc/wireguard/client_publickey

Открываем конфиг WireGuard

nano /etc/wireguard/wg0.conf

Дописываем ниже следующие строки:

[Peer]
PublicKey = <CLIENT-PUBLIC-KEY>
AllowedIPs = 10.0.0.2/32

В PublicKey подставляем содержимое созданного файла /etc/wireguard/client_publickey.
Перезагружаем в systemd сервис wireguard:

systemctl restart wg-quick@wg0
systemctl status wg-quick@wg0

Теперь создадим конфиг client.conf для локальной машины клиента. Пропишем в него следующее:

[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.0.0.2/32
DNS = 8.8.8.8

[Peer]
PublicKey = <SERVER-PUBLIC-KEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

В секции [Interface] в PrivateKey прописываем приватный ключ клиента /etc/wireguard/client_privatekey. В Address приписываем тот же адрес, что записывали в wg0.conf для этого клиента. В DNS можно прописать другие dns сервера (например 1.1.1.1) через запятую.
В секции [Peer] в PublicKey прописываем публичный ключ сервера из /etc/wireguard/publickey. В Endpoint вставим ip вашего сервера и порт для подключения, который вы указали в настройках. AllowedIPs указываем ip адреса с которых разрешено подключатся к серверу. Если оставить все нули, то весь трафик с компьютера будет идти через WireGuard. Опция PersistentKeepalive указывает через сколько секунд посылать пакеты на сервер, служит для поддержания соединения.
Теперь сохраняем этот конфиг на локальном компьютере и открываем его в клиенте WireGuard’а.

Поделиться:
Вам также может понравится
Создание QR кода для подключения клиентов WireGuard