Если вы настраиваете VPN через WireGuard на сервере под Ubuntu/Debian, важно правильно настроить брандмауэр (UFW) и защиту от брутфорса (fail2ban), чтобы:
- Клиенты WireGuard могли выходить в интернет
- SSH и другие сервисы были защищены
- UFW не блокировал трафик внутри VPN
1. Установка WireGuard
sudo apt update sudo apt install wireguard -y
2. Генерация ключей
wg genkey | sudo tee /etc/wireguard/private.key sudo chmod 600 /etc/wireguard/private.key wg pubkey < /etc/wireguard/private.key | sudo tee /etc/wireguard/public.key
3. Настройка сервера (/etc/wireguard/wg0.conf)
[Interface] PrivateKey = <ваш_приватный_ключ> Address = 10.8.0.1/24 ListenPort = 51820 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # Клиент 1 PublicKey = <публичный_ключ_клиента> AllowedIPs = 10.8.0.2/32
Важно: замените eth0 на ваш внешний интерфейс (узнать: ip route | grep default).
4. Включить IP-форвардинг
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
5. Запустить WireGuard
sudo wg-quick up wg0 sudo systemctl enable wg-quick@wg0
6. Установка UFW
sudo apt install ufw -y
7. Разрешить нужные порты
sudo ufw allow 22/tcp # SSH sudo ufw allow 80/tcp # HTTP sudo ufw allow 443/tcp # HTTPS sudo ufw allow 51820/udp # WireGuard
8. Критически важный шаг: настройка UFW для WireGuard
UFW по умолчанию блокирует форвардинг. Отредактируйте файл:
sudo nano /etc/ufw/before.rules
Добавьте в начало (перед *filter):
# NAT для WireGuard *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE COMMIT # Разрешить трафик через wg0 *filter :ufw-before-forward - [0:0] -A ufw-before-forward -i wg0 -j ACCEPT -A ufw-before-forward -o wg0 -j ACCEPT COMMIT
Замените:
10.8.0.0/24— на вашу подсеть из конфига WireGuardeth0— на ваш внешний интерфейс (например, ens3, enp4s0)
9. Включить UFW
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw enable
10. Установка fail2ban
sudo apt install fail2ban -y
11. Настройка защиты (пример: SSH)
Создайте файл:
sudo nano /etc/fail2ban/jail.local
Содержимое:
[sshd] enabled = true maxretry = 3 bantime = 1h findtime = 10m [nginx-http-auth] enabled = true [php-url-fopen] enabled = true
12. Перезапустить fail2ban
sudo systemctl restart fail2ban
Проверка работы
- Подключитесь через WireGuard
- Попробуйте:
ping 8.8.8.8иcurl ifconfig.me - Если видите IP сервера — всё работает
Если интернет пропал после UFW
Чаще всего проблема в том, что:
- Нет IP-форвардинга
- Нет MASQUERADE в iptables
- UFW перезаписал правила
Решение — вернуться к шагу 8 и убедиться, что before.rules настроены.
Заключение
WireGuard + UFW + fail2ban — мощная и безопасная комбинация. Главное — не забывать про NAT и форвардинг, иначе клиенты будут подключаться, но не смогут выходить в интернет.
Сохраните эту инструкцию — пригодится после перезагрузки или развёртывания нового сервера.
Комментарии
Пока нет комментариев. Будьте первым!