
Обновляем сервер:
apt update && apt upgrade -y
Ставим wireguard:
apt install -y wireguard
Генерируем ключи ключи сервера:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Проставляем права на приватный ключ:
chmod 600 /etc/wireguard/privatekey
Проверяем, как называется сетевой интерфейс:
ip a
Создаем файл конфигурации:
nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <privatekey>
Address = 10.0.0.1/24
ListenPort = 51830
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
В строках PostUp
и PostDown
указываем вместо eth0 действующий сетевой интерфейс если он отличается.
Вставляем вместо <privatekey>
содержимое файла /etc/wireguard/privatekey
cat /etc/wireguard/privatekey
Настраиваем IP форвардинг:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Включаем systemd демон с wireguard:
systemctl enable wg-quick@wg0.service systemctl start wg-quick@wg0.service Создаём ключи клиента:
wg genkey | tee /etc/wireguard/client_privatekey | wg pubkey | tee /etc/wireguard/client_publickey
Добавляем в конфиг сервера клиента:
nano /etc/wireguard/wg0.conf
[Peer] PublicKey = <client_publickey> AllowedIPs = 10.0.0.2/32
Вместо <
client_publickey>
— заменяем на содержимое файла /etc/wireguard/client_publickey
Перезагружаем systemd сервис с wireguard:
systemctl restart wg-quick@wg0
systemctl status wg-quick@wg0
Настраиваем клиент wireguard.
создадим файл конфигурации:
nanо client_wg.conf
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY>
Address = 10.0.0.2/32
DNS = 8.8.8.8
[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
<CLIENT-PRIVATE-KEY>
заменяем на приватный ключ клиента, из файла /etc/wireguard/client_privatekey
на сервере.
<SERVER-PUBKEY>
заменяем на публичный ключ сервера, из файла /etc/wireguard/publickey
на сервере.
<SERVER-IP>
заменяем на IP сервера.
Этой конфигурации достаточно для подключения с любого клиента.
Для более удобного подключения можно генерировать QR код вместо конфигурационного файла.
установим qrencode:
apt install
qrencode
Генерируем QR код из конфигурационного файла клиента:
qrencode -t ansiutf8 < client_wg.conf
В консоли должен появится QR код, который можно отсканировать мобильным телефоном.
Так же можно создать изображение в формате png с QR кодом, чтобы отправить клиенту:
qrencode -t png -o client-qr.png -r client_wg.conf
Юзаю wg-easy