У меня есть виртуальная машина с новой установкой Debian (wheezy), и я установил на нее node и mongo. Виртуальная машина использует мостовое сетевое соединение, поэтому я ожидал, что смогу указать браузеру моих хост-машин на IP-адрес виртуальной машины Debian (порт 1337 для моего примера узла или порт 28017 для моей страницы статуса mongo) и увидеть один из две службы (узел или монго). Однако мои запросы отклоняются.
Насколько я могу судить, Debian по умолчанию разрешает весь трафик, и вам нужно вручную настроить iptables для сброса трафика. Я проверил iptables, и он говорит, что он настроен на пропуск всего. Выглядит это так:
root@devbox:/home/jlewis# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
В качестве теста я установил nginx и смог без проблем попасть на целевую страницу nginx с моего хоста, поэтому очевидно, что http-трафик разрешен. Затем я настроил nginx для перенаправления всего восходящего трафика на mongo - никаких проблем, я смог увидеть страницу статуса. Затем я сделал то же самое для моего примера сервера узлов, и снова без проблем. Итак, http-трафик в порядке, но весь остальной трафик заблокирован.
Кто-нибудь знает, почему debian может отказываться от всего остального трафика, кроме iptables, настроенного на его сброс?
РЕДАКТИРОВАТЬ - вывод netstat -nltp:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:28017 0.0.0.0:* LISTEN 1762/mongod
tcp 0 0 0.0.0.0:51028 0.0.0.0:* LISTEN 1541/rpc.statd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2462/sshd
tcp 0 0 127.0.0.1:1337 0.0.0.0:* LISTEN 2794/node
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2274/exim4
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1762/mongod
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1510/rpcbind
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2189/nginx
tcp6 0 0 :::22 :::* LISTEN 2462/sshd
tcp6 0 0 :::45335 :::* LISTEN 1541/rpc.statd
tcp6 0 0 ::1:25 :::* LISTEN 2274/exim4
tcp6 0 0 :::111 :::* LISTEN 1510/rpcbind
Упомянутые вами порты 1337 и 28017 (а также 25) прослушиваются не на всех интерфейсах, а только на 127.0.0.1 или localhost. Таким образом, к ним нельзя получить доступ за пределами локальной машины. По соображениям безопасности обычно это то, что вам нужно.
Напротив, службы на портах 22, 80, 111, 45335 и 51028 привязаны к 0.0.0.0 или :: и, таким образом, доступны для всего мира.
Если вы действительно хотите, чтобы эти службы были доступны всему миру, вам придется настроить их как таковые, следуя их собственным соответствующим директивам конфигурации.
Я не могу (пока) комментировать, чтобы попросить разъяснений ... все еще работаю над своей репутацией, но вот оно:
Я могу представить следующие вещи, которые помогут вам узнать:
Это должно помочь вам получить больше информации и, возможно, уточнить вопрос.
[редактировать]
Как показывает вывод netstat и как описано в комментариях: прослушивание 127.0.0.1 означает, что они будут доступны только с локального хоста (как видно из виртуальной машины), и они должны быть привязаны либо к 0.0.0.0, либо к конкретному IP-адресу на виртуальной машине, который доступен с физического хоста.