9.6 KiB
Wireguard
Способы установки для разных ОС описаны на сайте проекта https://www.wireguard.com/install/
Сервер
Debian 11
Все действия выполняются от root
sudo -i
Установить пакет wireguard
apt install wireguard
Включить IPv4 маршрутизацию (раскомментировать строку)
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Проверить, что изменения внесены
sysctl -p
Для повышения безопасности изменить права на создаваемые файлы в директории /etc/wireguard
на 600 (rw- --- ---)
umask 077 /etc/wireguard
Сгенерировать закрытый и публичный ключи
wg genkey | tee /etc/wireguard/privatekey
cat /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Создать конфигурационный файл сервера
vim /etc/wireguard/wg0.conf
ВАЖНО обратить внимание на название сетевого интерфейса в правилах iptables
здесь указан сетевой интерфейс ens3
[Interface]
# скопировать сгенерированный закрытый ключ
PrivateKey = SERVER PRIVATE KEY
# назначить IP адрес VPN
Address = 10.10.10.1/24
# сохранить конфигурацию
SaveConfig = true
# вкл./откл. подмену IP для VPN
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
# назначить порт для VPN (по-умолчанию: 51820)
ListenPort = 34567
Автозагрузка сервера Wireguard
systemctl enable wg-quick@wg0
Клиенты
1. Linux Fedora 35
Установить пакет wireguard
dnf -y install wireguard
Для повышения безопасности изменить права на создаваемые файлы в директории /etc/wireguard
на 600 (rw- --- ---)
umask 077 /etc/wireguard
Сгенерировать закрытый и публичный ключи
wg genkey | tee /etc/wireguard/privatekey
cat /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
Создать конфигурационный файл клиента
vim /etc/wireguard/wg-client-01.conf
[Interface]
# скопировать сгенерированный закрытый ключ
PrivateKey = CLIENT PRIVATE KEY
# назначить IP адрес VPN клиента
Address = 10.10.10.2/32
[Peer]
# публичный ключ сервера
PublicKey = SERVER PUBLIC KEY
# внешний IP-адрес:порт сервера
Endpoint = 51.83.180.248:34567
# Сети, которые необходимо маршрутизировать в VPN
# в данном случае весь трафик
AllowedIPs = 0.0.0.0/0
Регистрация клиента на сервере
Способ 1
этот способ стоит использовать в выключенном VPN интерфейсе
Добавить в конфигурацию сервера раздел с данными клиента
vim /etc/wireguard/wg0.conf
[Peer]
# Название клиента (для себя, чтобы понять, что это за клиент)
# публичный ключ клиента
PublicKey = 2AurHow1SuDVb4tZWhCBfrjnVQ6SU0y43i2nD/dweV8=
# IP-адрес, который назначается клиенту в сети VPN
AllowedIPs = 10.10.10.2/32
После добавления всех клиентов, можно запускать сервер
wg-quick up wg0
Проверить подключенных клиентов можно командой wg
root@server:~$ wg
interface: wg0
public key: kAB3+ToYz623wttZXdWm2QGsjyGdTzXqg8jgNiyMlCc=
private key: (hidden)
listening port: 34567
peer: Ut2vPI67f+nuCv5bI4nod+BMMn5qgroJfoI/XjUtthE=
endpoint: 109.173.124.76:54878
allowed ips: 10.10.10.2/32
latest handshake: 17 seconds ago
transfer: 18.68 MiB received, 312.21 MiB sent
Способ 2
этот способ стоит использовать при включённом VPN интерфейсе
На сервере ввести команду
общий вид
wg set <wireguard-interface> peer <client-publickey> allowed-ips <client-vpn-ip/mask>
Пример
wg set wg0 peer 2AurHow1SuDVb4tZWhCBfrjnVQ6SU0y43i2nD/dweV8= allowed-ips 10.10.10.2/32
После регистрации клиента на сервере можно запустить wireguard на клиенте
wg-quick up wg-client-01
2. Клиент Android
В качестве клиента используется официальное приложение - WireGuard.
Принцип настройки ничем не отличается от настройки предыдущего клиента, также необходимо сгенерировать закрытый и публичный ключ и создать конфигурацию.
Для удобства эти шаги можно выполнить на сервере
Создать соответствующую директорию
mkdir /etc/wireguard/mobile-s10e
cd /etc/wireguard/mobile-s10e
Сгенерировать закрытый и публичный ключи
wg genkey | tee /etc/wireguard/mobile-s10e/privatekey
cat /etc/wireguard/mobile-s10e/privatekey | wg pubkey | tee /etc/wireguard/mobile-s10e/publickey
Создать конфигурационный файл клиента
vim /etc/wireguard/mobile-s10e/wg-client-mobile.conf
[Interface]
# скопировать сгенерированный закрытый ключ
PrivateKey = CLIENT PRIVATE KEY
# назначить IP адрес VPN клиента
Address = 10.10.10.3/32
[Peer]
# публичный ключ сервера
PublicKey = SERVER PUBLIC KEY
# внешний IP-адрес:порт сервера
Endpoint = 51.83.180.248:34567
# Сети, которые необходимо маршрутизировать в VPN
# в данном случае весь трафик
AllowedIPs = 0.0.0.0/0
Добавить конфигурацию клиента на сервер
wg set wg0 peer <CLIENT-PUBLIC-KEY> allowed-ips 10.10.10.3/32
Для удобства переноса конфигурации на телефон, на сервер необходимо установить приложение генератор QR кодов
apt install qrencode
Перенос конфигурации на телефон
На сервере ввести команду генерирующую QR код на основе конфигурации, которую подготовили ранее для телефона
qrencode -t ansiutf8 < /etc/wireguard/mobile-s10e/wg-client-mobile.conf
На экране отобразится QR код, который необходимо импортировать через приложение WireGuard на телефоне
3. Клиент Windows
Установить приложение с официального сайта https://download.wireguard.com/windows-client/wireguard-installer.exe
Как и с конфигурацией для Android, её удобно создать на сервере и затем импортировать в приложение на Windows
Создать соответствующую директорию
mkdir /etc/wireguard/win1
cd /etc/wireguard/win1
Сгенерировать закрытый и публичный ключи
wg genkey | tee /etc/wireguard/win1/privatekey
cat /etc/wireguard/win1/privatekey | wg pubkey | tee /etc/wireguard/win1/publickey
Создать конфигурационный файл клиента
vim /etc/wireguard/win1/wg-client-win1.conf
[Interface]
# скопировать сгенерированный закрытый ключ
PrivateKey = CLIENT PRIVATE KEY
# назначить IP адрес VPN клиента
Address = 10.10.10.4/32
[Peer]
# публичный ключ сервера
PublicKey = SERVER PUBLIC KEY
# внешний IP-адрес:порт сервера
Endpoint = 51.83.180.248:34567
# Сети, которые необходимо маршрутизировать в VPN
# в данном случае весь трафик
AllowedIPs = 0.0.0.0/0
Добавить конфигурацию клиента на сервер
wg set wg0 peer <CLIENT-PUBLIC-KEY> allowed-ips 10.10.10.4/32
Любым удобным способом необходимо перенести конфигурационный файл на windows. Это можно сделать с помощью WinSCP или вывести в консоль сервера с помощью cat конфигурацию клиента и создать соответствующий файл на windows. Затем этот конфигурационный файл импортировать в приложение.