Настройка UFW для приёма запросов от Yandex Forms через IPv6
При интеграции сервиса Yandex Forms с вашим веб-приложением через HTTP-запросы часто возникает проблема: форма отправляет данные, но сервер их не получает. Ошибка обычно связана с неправильной конфигурацией файрвола (UFW) или веб-сервера (Nginx). Разберём, как правильно настроить приём запросов от Yandex Forms, используя асинхронное приложение на Quart (Flask) и UFW.
Почему запросы не доходят при ограничении по IP?
Yandex Forms использует только протокол IPv6 и отправляет данные с диапазона 2a02:6b8:c00::/40. Если вы открываете порт 80 для всех (anywhere), запросы проходят успешно. Но при попытке ограничить доступ только этим диапазоном - запросы блокируются. Основная причина: UFW по умолчанию может не корректно обрабатывать IPv6-правила, если не включена поддержка протокола. Также важно, чтобы правило было добавлено с правильным синтаксисом и без конфликтов с другими правилами.
Пошаговая настройка UFW для Yandex Forms
Шаг 1: Включите поддержку IPv6 в UFW
Откройте файл конфигурации UFW:
sudo nano /etc/default/ufwНайдите строку IPV6=no и измените её на IPV6=yes. Сохраните изменения.
Шаг 2: Добавьте правило для диапазона Yandex Forms
Используйте команду:
sudo ufw allow from 2a02:6b8:c00::/40 proto tcp to any port 80Убедитесь, что правило добавлено. Проверьте список активных правил:
sudo ufw status verboseВы должны увидеть строку вида:
80/tcp (v6) ALLOW 2a02:6b8:c00::/40Шаг 3: Удалите общее правило для порта 80 (если есть)
Если ранее вы открывали порт 80 для всех IPv6 (например, ufw allow 80/tcp), удалите его, чтобы не было конфликтов:
sudo ufw delete allow 80/tcpШаг 4: Перезагрузите UFW
Примените изменения:
sudo ufw reloadНастройка Nginx для проксирования на Quart
Убедитесь, что Nginx слушает IPv6-адрес. В блоке server укажите:
server {
listen 80;
listen [::]:80;
server_name ваш-сервер-ip;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}После изменений перезапустите Nginx:
sudo systemctl restart nginxПроверка работы приложения на Quart
Ваше тестовое приложение Quart должно принимать POST-запросы на корневой маршрут. Убедитесь, что оно запущено на 127.0.0.1:5000. Для отладки можно временно включить логирование UFW:
sudo ufw logging onПроверьте логи в /var/log/ufw.log - там будут видны все заблокированные пакеты. Если запросы от Yandex Forms всё ещё блокируются, проверьте, что правило для диапазона стоит выше общего правила deny (если такое есть).
Распространённые ошибки
- Не включён IPv6 в UFW - по умолчанию UFW работает только с IPv4, и правило для IPv6 диапазона не применяется.
- Конфликт правил - если есть правило
allow 80/tcpдля всех IPv6, оно может перезаписывать более узкое правило. - Nginx не слушает IPv6 - без директивы
listen [::]:80;запросы по IPv6 не будут обработаны. - Ошибка в синтаксисе правила - убедитесь, что диапазон указан в формате CIDR:
2a02:6b8:c00::/40.
Заключение
Правильная настройка UFW для приёма запросов от Yandex Forms требует включения IPv6, добавления точного правила для диапазона 2a02:6b8:c00::/40 и корректной конфигурации Nginx. После выполнения всех шагов интеграция будет работать стабильно. Если проблема сохраняется, проверьте логи файрвола и убедитесь, что веб-сервер доступен по IPv6 из внешней сети.