У меня есть служба, прослушивающая порт, как мне открыть порт извне?

У меня есть служба, которая прослушивает tcp-порт, и она указана с помощью этой команды:

>netstat -atp tcp | grep -i "listen"
tcp4       0      0  192.168.2.5.8070       *.*                    LISTEN          
tcp4       0      0  *.postgresql           *.*                    LISTEN
...and more

но он недоступен с других компьютеров в той же сети, и его нет в списке с помощью этой команды:

>nmap 192.168.2.5
PORT     STATE SERVICE
5432/tcp open  postgresql

(но, например, указан PostgreSQL).

Я могу получить доступ к веб-серверу локально http://192.168.2.5:8060, но не с других компьютеров в той же сети. Как я могу открыть порт извне?

Брандмауэр включенSystem Preferences > Security & Privacy > Firewall выключен .

Что это за услуга?
Это домашний веб-сервер. Но у меня возникает та же проблема с любым TCP-сервером, который я кодирую.
Обычный тест: telnet 192.168.2.5 8060что это показывает?
OS X имеет как минимум три брандмауэра; ты два других проверял? sudo pfctl -saсбросит состояние "pf" и sudo ipfw showстарый брандмауэр "ipfw". См. этот вопрос и мой ответ для некоторых примеров того, как должен выглядеть вывод.
@GordonDavisson хочешь сделать это ответом?

Ответы (3)

В MacOS X выше 10.8 вы должны разрешить входящие соединения для этого приложения.

В пределах:

System Preferences > Security & Privacy > Firewall > Firewall Options…

нажмите на +и выберите приложение для использования.

У меня Firewall: Off This computer's firewall is currently turned off. All incoming connections to this computer are allowed.в тех предпочтения.
→ Йонас: спасибо за добавление этой ключевой детали. Для меня на самом деле невообразимо запустить любую ОС без базового брандмауэра, ведения журнала и проверки :[.

Если файл /etc/ipfilter/ipfw.confсуществует, то его нужно либо удалить, либо отредактировать, чтобы ipfwне блокировался трафик. Поскольку ipfwон устарел, возможно, просто удалите файл и перезагрузите компьютер.

Оказывается, эта проблема была связана с проблемой сети. Два компьютера не могли связаться друг с другом. Так что проблем с брандмауэрами не было.