WebWost WebWostbeta

Установка WireGuard

Установка и базовая настройка WireGuard на Ubuntu

Al-Sher

Сегодня я решил написать о том, как поднять простенький VPN-сервер с использованием WireGuard. Для начала, разумеется, нам необходим сервер. Если VPN нужен не для обхода блокировок, то можно воспользоваться VDS в РФ, например, firstvds. Думаю для обхода блокировок лучше использовать что-то другое, например, Shadowsocks, который может маскироваться под https и websocket.

Следующим шагом нам необходимо установить Wireguard на сервер. Для операционной системы Ubuntu или Debian необходимо выполнить команду:

apt install wireguard

Следующим шагом создадим папку, где будем хранить конфигурационные файлы(если она вдруг не создалась автоматически при установке wireguard) и ключи для VPN. Для этого выполним команду:

mkdir /etc/wireguard/
cd /etc/wireguard/

Wireguard требует установить права доступа как 077, сразу же сделаем это:

umask 077

Теперь можно сгенерировать наши ключи. Создадим приватный и публичный ключи сервера, а также ключи для клиента:

wg genkey | tee privkey | wg pubkey > pubkey
wg genkey | tee client_privkey | wg pubkey > client_pubkey

У нас появятся четыре файла:

Следующим шагом необходимо написать конфигурацию сервера. Используя текстовый редактор nano создадим файл /etc/wireguard/wg0.conf со следующим содержимым:

[Interface]
Address = 10.4.72.1/24
SaveConfig = false
ListenPort = 11232
PrivateKey = PRIVKEY_SERVER
PostUp = iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu
PostUp = ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu
PostUp = iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = ip6tables -A FORWARD -i %i -j ACCEPT
PostUp = sysctl -q -w net.ipv4.ip_forward=1
PostUp = sysctl -q -w net.ipv6.conf.all.forwarding=1
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = ip6tables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -t mangle -D POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu
PostDown = ip6tables -t mangle -D POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ens3 -j TCPMSS --clamp-mss-to-pmtu
PostDown = sysctl -q -w net.ipv4.ip_forward=0
PostDown = sysctl -q -w net.ipv6.conf.all.forwarding=0

[Peer]
PublicKey = PUBKEY_CLIENT
AllowedIPs = 10.4.72.2/32

[Peer]
PublicKey = PUBKEY_CLIENT2
AllowedIPs = 10.4.72.3/32

Группа Interface указывает правила создания сетевого интерфейса. В данной конфигурации указываем адрес 10.4.72.1/24 для нашего нового сетевого интерфейса. Флаг SaveConfig говорит о необходимости сохранить состояние сетевого интерфейса при завершении работы. В параметре ListenPort указываем прослушиваемый порт, в PrivateKey приватный ключ сервера, указанный в файле privkey. Также можно увидеть опции PostUp и PostDown. PostUp выполняется в момент поднятия интерфейса, а PostDown в момент удаления. Более подробно можно ознакомиться, например, здесь. Группа Peer указывает настройки клиентов, каждый новый Peer является отдельным клиентом. В данной конфигурации мы указываем публичный ключ клиента (файл client_pubkey), а также его внутренний IP адрес.

И создадим клиентский конфиг:

[Interface]
Address = 10.4.72.2/32
PrivateKey = PRIVKEY_CLIENT

[Peer]
PublicKey = PUBKEY_SERVER
Endpoint = SERVERIP:11232
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Тут мы уже создаем интерфейс для клиентского устройства с адресом 10.4.72.2/32. В качестве PrivateKey указываем приватный ключ клиента. В Peer нам необходимо указать данные для подключения к серверу. В качестве PublicKey указываем публичный ключ сервера. Endpoint - адрес VPN сервера. AllowedIPs - ip адреса, для которых будет использоваться VPN, использование 0.0.0.0/0 говорит о перенаправлении всего трафика через VPN. PersistentKeepalive указывает временной интервал проверки доступности VPN сервера.

Для просмотра состояния VPN сервера, необходимо выполнить следующую команду:

wg show

Данная команда выводит информацию об интерфейсе и клиентах. Клиентское приложение Wireguard можно скачать на официальном сайте. В них, кстати, также можно создавать клиентские ключ.

0 комментариев

Новый комментарий