WireGuard#
Сервер#
Генерируем пару ключей для сервера:
wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey
/etc/wireguard/wg0.conf:
[Interface]
PrivateKey = приватный ключ сервера
Address = 10.0.0.1/24 # IP сервера в приватной сети
ListenPort = 51820
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
Включаем форвардинг IPv4:
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p
В файрволе должен быть открыт соответствующий ListenPort порт UPD.
Сервис:
systemctl enable --now wg-quick@wg0.service
Генерируем ключи для клиента:
wg genkey | tee /etc/wireguard/client_privatekey | wg pubkey | tee /etc/wireguard/client_publickey
Дописываем в /etc/wireguard/wg0.conf:
[Peer]
PublicKey = публичный ключ клиента
AllowedIPs = 10.0.0.2/32 # IP клиента в приватной сети
Перезапустить сервис:
systemctl restart wg-quick@wg0.service
Сервер с одним клиентом готов. Дополнительные клиенты добавляются аналогично, для них следует задавать различные IP-адреса в приватной сети.
Ещё есть способ настройки с использованием PreSharedKey, но быстро в документации описания не нашёл. В частности PreSharedKey используется в конфигах, которые генерит веб-интерфейс wg-easy.
Клиент#
Этот конфиг надо скормить клиентскому приложению.
[Interface]
PrivateKey = приватный ключ клиента
Address = 10.0.0.2/32 # IP клиента в приватной сети
DNS = 8.8.8.8 # DNS резолвер
[Peer]
PublicKey = публичный ключ сервера
Endpoint = IP_сервера:порт
AllowedIPs = 0.0.0.0/0
PersistentKeepAlive = 20
Для подключения на Linux достаточно поставить пакеты Wireguard и выполнить:
wg-quick up ./путь до конфига # для подключения
wg-quick down ./путь до конфига # для отключения