Knowledge Base

WireGuard для private admin network

Почему WireGuard

Категория: VPN · Риск: low

Почему WireGuard

WireGuard — современный VPN-протокол (~4000 строк кода против 70000+ у OpenVPN). Характеристики:

Топология: Site-to-Site (два сервера)

Сервер A (10.0.0.1) ←── WireGuard ──→ Сервер B (10.0.0.2)
   публичный IP: 1.1.1.1                публичный IP: 2.2.2.2

Установка

# Ubuntu 20.04+
apt install wireguard

# CentOS 8+
dnf install wireguard-tools

Конфигурация сервера (/etc/wireguard/wg0.conf)

[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = 10.0.0.1/24
ListenPort = 51820
# IP forwarding для маршрутизации
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT

[Peer]
# Администраторский ноутбук
PublicKey = <ADMIN_PUBLIC_KEY>
AllowedIPs = 10.0.0.2/32

[Peer]
# Второй сервер
PublicKey = <SERVER2_PUBLIC_KEY>
AllowedIPs = 10.0.0.3/32, 192.168.2.0/24
Endpoint = 2.2.2.2:51820
PersistentKeepalive = 25

Конфигурация клиента (/etc/wireguard/wg0.conf)

[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = 10.0.0.2/32
DNS = 10.0.0.1

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = 1.1.1.1:51820
AllowedIPs = 10.0.0.0/24
# Для full-tunnel (весь трафик через VPN):
# AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Права на конфигурационные файлы

chmod 600 /etc/wireguard/wg0.conf
chown root:root /etc/wireguard/wg0.conf

Проверка связности

# После поднятия интерфейса
wg show

# Ping до пира
ping 10.0.0.2

# Traceroute через туннель
traceroute 10.0.0.3

Firewall (открыть только WireGuard порт)

# ufw
ufw allow 51820/udp

# iptables
iptables -A INPUT -p udp --dport 51820 -j ACCEPT