Порт, кажется, открыт, но соединение отказано

Я пытаюсь открыть порт 3000 в Ubuntu 12.04, потому что у меня там прослушивается веб-сервер. Я здесь немного не в своей зоне комфорта и потратил много часов, безуспешно пытаясь решить эту проблему.

Порт, похоже, открыт в брандмауэре :

$> sudo ufw statusStatus: activeTo                         Action      From--                         ------      ----...3000/tcp                   ALLOW       Anywhere3000/tcp                   ALLOW       Anywhere (v6)

Сервер нормально прослушивает этот порт :

$> netstat -an | grep "LISTEN "...tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN     ...

И я даже могу wget хорошо, индексная страница :

$> wget localhost:3000Connecting to localhost (localhost)|127.0.0.1|:3000... connected.HTTP request sent, awaiting response... 200 OK

И полученный файл содержит то, что я ожидаю ("привет, мир" :).

Однако при попытке с другого компьютера или если я wget mydomain.com:3000 Я получаю "connection refused", и nmap сообщает мне, что порт не открыт :

$> nmap -A -T4 mydomain.comHost is up (0.00032s latency)....Not shown: 999 closed portsPORT   STATE SERVICE VERSION22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)...Service Info: OS: Linux

Есть идеи, что мне следует попробовать дальше???

РЕДАКТИРОВАТЬ

Вот что дает traceroute :

$> traceroute mydomain.comtraceroute to mydomain.com (176.31.x.x), 30 hops max, 60 byte packets 1  mydomain.com (176.31.x.x)  0.034 ms  0.013 ms  0.010 ms

Если ваш сервер прослушивает только интерфейс localhost, вы не сможете получить к нему доступ с удаленного компьютера. Похоже, это ваша основная проблема, поскольку в вашем выводе netstat указан только 127.0.0.1:3000.

Вам также необходимо будет убедиться, что "mydomain.com " разрешает правильный IP-адрес для вашего компьютера, так что подключение к нему приведет к взаимодействию с внешним интерфейсом этого компьютера.

Недавно у меня возникла эта проблема с HTTPS-сервером nodejs, и ее решением было не использовать "localhost", "127.0.0.1" или даже доменное имя. Он должен был использовать "0.0.0.0".

Я полагаю, что это действует как подстановочный знак, теперь позволяющий использовать общедоступное разрешение через доменное имя, а также работает с "localhost".

Редактировать: Вот ссылка на страницу serverfault в теме 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

Есть ли какая-либо вероятность того, что вы используете AWS или какие-либо другие облачные сервисы? В этом случае порт должен быть открыт на уровне облачного сервиса. В частности, среди AWS вам следует искать "Группы безопасности", где вам нужно открыть доступ к порту 3000.

Отключите ufw, повторите попытку. Если это не сработает, между удаленным компьютером и вашим сервером есть другой брандмауэр/ устройство.

Я уже пробовал … не решил проблему :frowning:

“между удаленным компьютером и вашим сервером есть другой брандмауэр / устройство”. : это очень маловероятно. Я попробовал второй wget с сервера, чтобы он совершал круговой переход по сети.

а? Вы не можете ввести wget serverseb.com из serverseb и заставить его совершить поездку туда и обратно без какой-либо причудливой магии маршрутизации iptables. Пожалуйста, вставьте выходные данные traceroute mydomain.com с удаленного компьютера. Вы можете ** вывести последние два октета последнего (серверного) IP для обеспечения конфиденциальности.

отредактировано с помощью трассировки

Как сторонний наблюдатель, читая комментарий, начинающийся с “а?”, я чувствую себя неловко. Я хотел бы развивать свои технические навыки в обстановке гостеприимства, поддержки и принятия.