Knowledge Base
WireGuard для private admin network
Почему WireGuard
Категория: VPN · Риск: low
Почему WireGuard
WireGuard — современный VPN-протокол (~4000 строк кода против 70000+ у OpenVPN). Характеристики:
- **Скорость:** минимальный overhead, производительность близка к нативному Ethernet
- **Безопасность:** фиксированный криптонабор (Curve25519, ChaCha20, Poly1305, BLAKE2)
- **Простота:** конфиг в несколько строк
- **Stealth:** не отвечает на пакеты без валидного ключа (неотличим от закрытого порта)
Топология: 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