# Чиним full-VPN на старом сервере (v3.6) Если сервер `aura server` был развёрнут до v3.6 — клиенты в `default = "DIRECT"` работают (пинг `10.7.0.1` идёт), но в `default = "VPN"` весь внешний интернет «гаснет». Корневая причина: на сервере не настроен SNAT/MASQUERADE для пула `10.7.0.0/24`. Пакеты с приватным `src=10.7.0.10` уходят в интернет, а ответы дропаются провайдером (RFC1918 reverse-path filtering). В v3.6 у `aura server` появился **implicit auto-NAT**: если в `server.toml` нет секции `[server.nat]`, сервер сам пытается включить `ip_forward = 1` и поставить правило MASQUERADE на интерфейс по умолчанию (с автодетектом). Поэтому **самый простой фикс** — обновить бинарь на сервере и перезапустить. Если по каким-то причинам так нельзя (нет рутового доступа на момент апгрейда, нестандартная сеть, контейнер без `NET_ADMIN`, и т.д.) — два альтернативных варианта. --- ## Вариант A. Обновить бинарь (рекомендуется) С локальной машины (откуда есть `ssh root@187.77.67.17`): ```bash # Собираем релизный бинарь под целевую архитектуру сервера. cargo build --release -p aura-cli --target x86_64-unknown-linux-gnu # Заливаем и подменяем. scp target/x86_64-unknown-linux-gnu/release/aura root@187.77.67.17:/usr/local/bin/aura.new ssh root@187.77.67.17 'systemctl stop aura.service \ && mv /usr/local/bin/aura.new /usr/local/bin/aura \ && systemctl start aura.service \ && systemctl status aura.service --no-pager -n 30' ``` В логе `journalctl -u aura.service -n 30` должна появиться строка вида: ``` INFO aura::nat: v3.6 implicit auto-NAT: no [server.nat] section in server.toml — enabling IPv4 forwarding + MASQUERADE on the host's default egress. iface=eth0 pool=10.7.0.0/24 INFO aura::nat: running: sysctl -w net.ipv4.ip_forward=1 INFO aura::nat: running: iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE INFO aura::nat: auto-NAT applied (linux) ``` Если эти строки на месте — full-VPN на клиенте должен заработать сразу, без правки `client.toml` или `server.toml`. --- ## Вариант B. Точечно дописать `[server.nat]` в `server.toml` Если апгрейд бинаря пока не делаем, минимальный патч конфига: ```toml # /etc/aura/server.toml — добавить блок в конец файла [server.nat] auto = true egress_iface = "eth0" # ваш интернет-интерфейс; обычно eth0/ens3/enp1s0 dry_run = false ``` Затем `systemctl restart aura.service`. Это работает на v2+ и на v3.6 одинаково. Узнать имя интерфейса: ```bash ip route show default | awk '{print $5; exit}' ``` --- ## Вариант C. Настроить NAT руками без участия Aura Если по политике безопасности `aura server` не должен трогать nftables/iptables (например, оператор сам управляет фаерволом), то делаем всё руками **и явно выключаем implicit auto-NAT** через `[server.nat] auto = false`: ```bash # 1. IP-форвардинг — навсегда. echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-aura.conf sudo sysctl --system # 2. MASQUERADE — оператор сам выбирает inframework (iptables/nftables/etc). sudo iptables -t nat -A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE sudo apt-get install -y iptables-persistent && sudo netfilter-persistent save # 3. Сказать aura не лезть. cat >> /etc/aura/server.toml <<'EOF' [server.nat] auto = false EOF sudo systemctl restart aura.service ``` --- ## Проверка после фикса На клиенте (Mac): ```bash # 1) Туннель собран? Должно быть 5/5 и RTT ~70 мс. ping -c 5 10.7.0.1 # 2) Внешний интернет реально через VPN? IP должен быть IP сервера (не Mac'а). curl -sS https://ifconfig.co curl -sS https://ifconfig.co/json | jq .ip,.country # 3) DNS отвечает? dig +short cloudflare.com ``` Если `ifconfig.co` возвращает IP сервера (`187.77.67.17` в нашем случае) — full-VPN действительно работает. Если возвращает прежний IP мобильного оператора — что-то ещё не так и стоит смотреть `journalctl -u aura.service -f` на сервере. ## Откуда вообще проблема См. `crates/aura-cli/src/server.rs` (комментарий «Auto-NAT» вокруг проверки `cfg.server.nat`) и `crates/aura-cli/src/nat.rs` (`linux_apply_plan`): до v3.6 секция `[server.nat]` была опт-ин — без неё сервер вообще не трогал host networking, и оператор должен был помнить ручные `sysctl` + `iptables` из `docs/deployment.md §2.4`. Если оператор этого не сделал, single-IP-туннель работал (пинг внутреннего `10.7.0.1` идёт без NAT), но full-VPN — нет. v3.6 переворачивает поведение: NAT теперь опт-аут, что отсекает основную причину «впн не работает» из коробки.