Как мне настроить прием запросов от Яндекс Форм на своем сервере?

У меня имеется тестовое приложение на Quart (асинхронный Flask) с следующим кодом: <br/> <br/> Мой текущий статус ufw: <br/> <pre><code>Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp                     ALLOW       2a02:6b8:c00::/40</code></pre> <br/> <br/> В документации Яндекса указано: <br/> <blockquote><br/>
Для корректной работы HTTP-запросов необходимо разрешить вашему сервису принимать пакеты из сети Yandex Forms 2a02:6b8:c00::/40. В противном случае файрвол вашего сервиса может блокировать данные, отправляемые формой.<br/>
<br/>
Интеграция функционирует исключительно с протоколом IPv6. Сервис Yandex Forms не поддерживает отправку HTTP-запросов с адресов IPv4.<br/>
</blockquote> <br/> <br/> Вот конфигурация nginx: <br/> <pre><code>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;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /var/www/html;  # Укажите путь к директории с HTML страницей ошибок
    }
}</code></pre> <br/> <br/> В результате, если я открываю 80-й порт для всех, запросы от Яндекса успешно доходят до Quart, однако, когда я открываю 80-й порт только для диапазона адресов Яндекса, запросы не доходят, и Яндекс сообщает о какой-то внутренней ошибке. Как правильно настроить открытие порта для этого диапазона?
  • 8 марта 2025 г. 7:14
Ответы на вопрос 1
Чтобы настроить ваш сервер для корректного приема запросов от Яндекс Форм и при этом сохранить уровень безопасности, вам необходимо правильно настроить правила вашего файрвола UFW для разрешения запросов только от определенного диапазона IP-адресов.

### Шаги по настройке UFW для разрешения запросов от Яндекс Форм

1. **Проверьте текущее состояние UFW:**
   Убедитесь, что ваш UFW активен и правильно настроен. Используйте команду:
   ```bash
   sudo ufw status verbose
   ```

2. **Удалите правило для 80 порта, если оно открыто для всех:**
   Это сделает ваш сервер более безопасным:
   ```bash
   sudo ufw delete allow 80/tcp
   ```

3. **Добавьте правило для разрешения доступа с диапазона IP-адресов Яндекса:**
   Используйте следующую команду для открытия порта 80 только для адресов из диапазона `2a02:6b8:c00::/40`:
   ```bash
   sudo ufw allow from 2a02:6b8:c00::/40 to any port 80 proto tcp
   ```

4. **Проверьте настройки UFW:**
   Убедитесь, что новое правило применено:
   ```bash
   sudo ufw status
   ```

### Примечания:

- Убедитесь, что ваш nginx настроен правильно, как вы указали. Проверьте, что сервер обрабатывает запросы на IPv6, что позволяет вашему приложению (Quart) обращаться к запросам с адресов Яндекса.
- Если ваш сервер также обрабатывает запросы по IPv4, убедитесь, что для этих адресов есть соответствующие правила, если это необходимо для других пользователей.
- Обратите внимание на безопасность вашего сервера, позволяя только разрешенные диапазоны IP.

### Проверка работы:

После внесения изменений вы можете протестировать данную конфигурацию, отправив запросы через Яндекс Формы. Если доступ все еще не удается получить, рассмотрите возможность проверки логов nginx и вашего приложения, чтобы понять, откуда возникает проблема. Логи можете посмотреть с помощью команды:
```bash
sudo tail -f /var/log/nginx/error.log
```

### Заключение:

Такой подход позволит вашему серверу безопасно принимать запросы от Яндекс Форм, не открывая доступ к 80 порту для всех адресов, а только для необходимого диапазона. Не забывайте регулируйте настройки в соответствии с вашими потребностями и соблюдайте безопасность вашего сервера.
Похожие вопросы