Из-за чего не работает VPN?
Сейчас ситуация такая: я весь день мучаюсь с настройкой VPN и, похоже, сам уже не справляюсь. У меня на сервере (Ubuntu) поднят OpenVPN и WireGuard. Клиенты OpenVPN подключаются — сертификаты рабочие, интерфейс на клиенте поднимается, адрес из подсети приходит (например, 10.8.0.6), но дальше тупик: пинг до шлюза 10.8.0.1 не проходит, до 8.8.8.8 тоже. DNS-запросы висят. Включал net.ipv4.ip_forward=1, правил iptables, добавлял MASQUERADE, проверял разные варианты MTU/mssfix, push redirect-gateway и block-outside-dns — без толку.
По вводным: потом поставил WireGuard, интерфейс wg0 поднялся, сервер получил 10.0.0.1, клиент — 10.0.0.2. Но и здесь то же самое: соединение есть, а трафика в интернет нет. Проверял вариант «OpenVPN поверх WireGuard» (отдельный конфиг server-wg.conf на 1195 порту), клиент noex5 цепляется, но зависает на стадии «Connecting».
Сейчас ситуация такая: важно: на этом сервере уже работают другие OpenVPN-конфиги, поэтому сломать их нельзя. Хочу просто сделать новый конфиг (например, noex5), который будет работать из России и давать выход через Германию, не трогая остальное.
По вводным: может ли кто-то подсказать, как правильно настроить маршрутизацию/NAT в такой связке, чтобы:
По вводным: клиент пинговал серверный шлюз (10.8.0.1 или 10.0.0.1).
По вводным: был нормальный выход в интернет через сервер.
Сейчас ситуация такая: остальные OpenVPN-конфиги не пострадали.
По вводным: буду благодарен за конкретные шаги или рабочий пример конфигов.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Если OpenVPN и WireGuard оба подключаются, получают адреса, но трафик не ходит даже до VPN-шлюза, почти наверняка проблема не в сертификатах и не в DNS, а в маршрутизации, firewall или конфликте сетей/интерфейсов на сервере. Нужно диагностировать по слоям: интерфейс поднялся, пакеты приходят на сервер, сервер отвечает, NAT работает.
На сервере сначала проверьте адреса и маршруты:
ip a ip route sysctl net.ipv4.ip_forward iptables -S iptables -t nat -S ufw status verbose
Для OpenVPN с подсетью 10.8.0.0/24 и внешним интерфейсом eth0 базово должно быть:
sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Для WireGuard аналогично, только интерфейс wg0 и подсеть, например 10.0.0.0/24:
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
Замените eth0 на реальный внешний интерфейс из ip route. Частая ошибка — NAT повесили на неправильный интерфейс, например ens3/venet0 вместо eth0.
Если клиент не пингует даже 10.8.0.1 или 10.0.0.1, запустите tcpdump:
tcpdump -ni tun0 icmp tcpdump -ni wg0 icmp
Если пакеты от клиента не приходят — проблема в клиентском маршруте, AllowedIPs, конфиге OpenVPN/WireGuard или firewall до интерфейса. Если приходят, но ответа нет — локальный firewall сервера. Если ответ уходит, но клиент не видит — обратный маршрут или firewall клиента.
Также проверьте конфликт подсетей. Если у клиента локальная сеть тоже 10.0.0.0/24 или 10.8.0.0/24, маршруты будут ломаться. Для VPN лучше брать менее типичную подсеть, например 10.77.8.0/24. И не запускайте OpenVPN поверх WireGuard, пока базовая схема не заработала отдельно: это усложняет диагностику и маскирует простую ошибку NAT/FORWARD.