Обычно ошибка 404 указывает на то, что запрашиваемая страница не найдена на сервере, т. е. сервер работает и доступ к нему есть, но определенный URL или ресурс отсутствует. Однако, когда проблема касается доступности сервера снаружи, применительно к вашей ситуации с Raspberry Pi, доступной по внешнему IP, следует проверить следующие вещи:
1. **Проверка работы сервера:**
* Подключитесь к Raspberry Pi локально или через SSH и убедитесь, что веб-сервер работает корректно, прослушивая порт 80. Можно использовать команды `sudo netstat -tulnp | grep :80` или `sudo ss -tulnp | grep :80`, чтобы увидеть, запущен ли сервис на порту 80.
* Попробуйте открыть веб-страницу на самом Raspberry Pi, используя `curl http://localhost` или `wget http://localhost`.
2. **Настройка роутера:**
* Проверьте, настроен ли на роутере NAT (Network Address Translation) или правило проброса порта (port forwarding) для перенаправления трафика на 80-й порт внешнего IP на внутренний IP адрес Raspberry Pi.
* Проверьте настройки брандмауэра вашего роутера, он может блокировать входящие соединения на порт 80.
3. **Firewall на Raspberry Pi:**
* Проверьте настройки брандмауэра на Raspberry Pi, убедитесь, что он не блокирует входящие соединения на порт 80. Команды `sudo ufw status` или `sudo iptables -L` могут помочь в проверке правил.
4. **DNS настройки:**
* Проверьте, корректно ли настроен DNS для вашего домена, если вы используете доменное имя для доступа к серверу. DNS должен указывать на внешний IP адрес вашего белого IP.
5. **Убедитесь, что IP не изменился:**
* Если IP-адрес динамический, убедитесь, что он не изменился со времени последней настройки правил на роутере и DNS.
6. **Проверьте логи веб-сервера:**
* Логи веб-сервера могут дать информацию о том, доходят ли вообще запросы до сервера и какие ошибки возникают при обработке этих запросов.
7. **ISP блокировка:**
* Некоторые интернет-провайдеры по умолчанию блокируют входящие соединения на широко используемые порты, такие как 80 и 443. Проверьте это обстоятельство с вашим интернет-провайдером.
Если после всех проверок проблема не решена, может потребоваться более глубокая диагностика, включая проверку на последовательное соединение через каждый сетевой элемент (маршрутизатор, модем и т.д.), анализ использования NAT, внешних и внутренних IP-адресов, и запущенных сервисов.