Здравствуйте, я запускаю веб-приложение на порту 8000. Когда я получаю доступ к нему с хост-сервера localhost: 8000, он отвечает нормально, 127.0.0.1:8000 также работает, но 192.168.1.7:8000 не работает. 192.168.1.7 - это ip моего сервера.
Также, если я пытаюсь перейти на другое веб-приложение, работающее на порту 80, оно работает 192.168.1.7
Я включил брандмауэр UFW и установил разрешение UFW по умолчанию. Я использую Ubuntu Server 12.04
Любые предложения о том, почему я не могу получить доступ к своему приложению через порт 8000, используя IP-адрес: 8000?
Заранее спасибо!
netstat -tln | grep 8000
может пролить свет на проблему. Если локальный адрес сервера,127.0.0.1:8000
а не0.0.0.0:8000
, то он будет доступен только через интерфейс обратной связи.Ответы:
Как указывает @JamesHenstridge, поведение, которое вы наблюдаете, связано не с тем, что Ubuntu блокирует ваше приложение на некоторых IP-адресах, а с тем, что ваше приложение явно привязано только к локальному интерфейсу обратной связи (127.xxx). По крайней мере, если вы не установили и не настроили брандмауэр для конкретной блокировки этого порта.
Вам необходимо ознакомиться с документацией вашего приложения, чтобы узнать, есть ли настройка, позволяющая ему прослушивать другие (или все) интерфейсы.
источник
В одном файле конфигурации вашего приложения вы должны настроить приложение для прослушивания внешнего externalIP: yourport. Это означает, что есть файл конфигурации, в котором вы можете найти директиву, призывающую приложение прослушивать 127.0.0.1:xxxx или localhost: xxxx. Это IP-адрес, который нужно изменить с помощью внутреннего IP-адреса (например, 192.168.1.40) или внешнего IP-адреса.
Иногда локальный IP-адрес следует заменить на 0.0.0.0:xxxx, что означает, что приложение должно отвечать на запрос с любого IP-адреса.
Iptables также может помочь пересылать пакеты с внутреннего IP на внешний IP.
источник