У меня есть простой сервер Flask, который выводит запросы на терминал. Запросы, которые я отправляю через публичный IP-адрес устройства, не регистрируются.
Сервер фляги запускается правильно на всех интерфейсах с .run(host="0.0.0.0", port=5000, debug=False)
. В целях тестирования мой маршрутизатор настроен с использованием флэш-сервера в DMZ.
Мой основной метод проверки возможности подключения был с помощью curl. Вот мои результаты:
С главной машины:
curl localhost:5000
- Успехcurl 127.0.0.1:5000
- Успехcurl 192.168.1.115:5000
(Локальный IP-адрес) - Успехcurl 64.x.x.x:5000
(Общедоступный IP-адрес) - Ошибкаcurl xxx.com:5000
(Домен, который разрешается в общедоступный IP-адрес) - ОшибкаПопытки получить доступ к последним двум хостам из удаленной (мобильной) сети также терпят неудачу.
Сервер представляет собой простую машину с Linux, на которой не работают какие-либо известные мне брандмауэры.
Просматривая журналы маршрутизатора, я никогда не вижу попыток подключения к общедоступному IP-адресу на порту 5000. Это кажется странным.
Это говорит мне, что сервер правильно привязан ко всем портам, но локальные IP-адреса неправильно маршрутизируются с общедоступного IP-адреса. Что мне нужно сделать, чтобы это исправить?
Изменить: я переместил весь сервер в другую сеть, и он работает правильно. В моей сетевой конфигурации явно есть какая-то проблема, но я не могу определить, что именно.
Изменить 2: вот что-то еще, что кажется странным. Если я бегу с .run(host="0.0.0.0", port=5000, debug=False, ssl_context=('fullchain.pem', 'privkey.pem'))
(передавая ему правильные учетные данные), я даже не могу подключиться к нему локально: я просто получаю