Настройка Wireguard VPN на VPS

Дальнейшая инструкция написана под ubuntu, команды на других системах могут отличаться.

Установка

Меняем пароль от root на новом сервере

1
passwd

Обновляемся и устанавливаем Wireguard

1
2
apt update; apt upgrade -y; \
apt install wireguard -y

Создание ключей

1
2
3
4
5
6
7
8
9
mkdir /dconf/wireguard/keys; \
cd /dconf/wireguard/keys

wg genkey | tee home_server_privatekey | wg pubkey > home_server_publickey
wg genkey | tee cheburnet_privatekey | wg pubkey > cheburnet_publickey
wg genkey | tee ipad_privatekey | wg pubkey > ipad_publickey
wg genkey | tee iphone_privatekey | wg pubkey > iphone_publickey
wg genkey | tee windows-pc_privatekey | wg pubkey > windows-pc_publickey
wg genkey | tee mi-notebook_privatekey | wg pubkey > mi-notebook_publickey

Можно оставить доступ к ключам только для root.

1
2
chmod -R 700 /dconf/wireguard; \
chown -R root:root /dconf/wireguard

Конфигурируем Wireguard на сервере

1
nano /etc/wireguard/wg0.conf

Пример конфига сервера

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
[Interface]
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE


ListenPort = 51820
PrivateKey = __Приватный_ключ_этого_сервера__


#Первое устройство
[Peer]
PublicKey = __Публичный_ключ_клиента__
AllowedIPs = 10.0.0.10/32

#Второе устройство
[Peer]
PublicKey = __Публичный_ключ_второго_клиента__
AllowedIPs = 10.0.0.11/32

Обратите внимание, что в пунктах PostUp и PostDown упоминается интерфейс eth0. Если он у вас другой, эти строчки нужно исправить. Информацию об интерфейсах можно получить с помощью ip a или ifconfig

Включаем ip_forward и раскомментируем net.ipv4.ip_forward=1 в /etc/sysctl.conf

1
2
echo 1 > /proc/sys/net/ipv4/ip_forward; \
nano /etc/sysctl.conf

Запуск и проверка состояния

1
2
3
systemctl enable wg-quick@wg0; \
systemctl start wg-quick@wg0; \
wg

Для внесения изменений в конфиг нужно перезапускать systemctl

1
2
3
systemctl stop wg-quick@wg0
nano /etc/wireguard/wg0.conf
systemctl start wg-quick@wg0

Конфигурируем Wireguard на клиенте

1
2
3
4
mkdir /dconf/wireguard/config_peerss
cd /dconf/wireguard/config_peerss

nano iphone.conf

Пример конфига клиента

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Interface]
Address = 10.0.0.10/32
PrivateKey = __Приватный_ключ_клиента__
DNS = 8.8.8.8

[Peer]
PublicKey = __Публичный_ключ_сервера__
Endpoint = __ip_сервера__:51820
# Какие ip адресы (группы ip адресов) пускать через тунель.
# Если указать 0.0.0.0/0 весь трафик пойдет через тунель VPN.
AllowedIPs = 10.0.0.0/24, 192.168.10.0/24

Сбрасываем конфигурации клиентам и повторяем аналогичную установку.

1
2
apt install wireguard -y
nano /etc/wireguard/wg0.conf

Запускаем и проверяем состояние

1
2
3
systemctl enable wg-quick@wg0; \
systemctl start wg-quick@wg0; \
wg

Установка на альтернативные системы

QR код конфигурации

Для устройств с камерами, может быть удобен способ передачи конфига через QR код. Передайте файл конфигурации в программу qrencode, и в терминале появиться код, отсканировать который можно из приложений на устройствах.

1
2
3
4
cd /dconf/wireguard/config_peerss

qrencode -t ansiutf8 < ipad.conf
qrencode -t ansiutf8 < iphone.conf