2

У меня есть сервер на основе Java (файл JAR), и он работает на порт 8080.

Он хорошо работает на моем localhost , но я не могу получить к нему доступ через другие сети

Я думаю, что это проблема брандмауэра. Итак, сначала я попробовал socketfilterfw:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add 
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp 

hellomac# sudo /usr/libexec/ApplicationFirewall/socketfilterfw --list
ALF: total number of apps = 5 

1 :  /usr/bin/nc 
     ( Allow incoming connections ) 

2 :  /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java 
     ( Allow incoming connections ) 

Это не помогает Во-вторых, добавить правило в pf .

hellomac# cat /etc/pf.conf 
#
# Default PF configuration file.
#
# This file contains the main ruleset, which gets automatically loaded
# at startup.  PF will not be automatically enabled, however.  Instead,
# each component which utilizes PF is responsible for enabling and disabling
# PF via -E and -X as documented in pfctl(8).  That will ensure that PF
# is disabled only when the last enable reference is released.
#
# Care must be taken to ensure that the main ruleset does not get flushed,
# as the nested anchors rely on the anchor point defined here. In addition,
# to the anchors loaded by this file, some system services would dynamically
# insert anchors into the main ruleset. These anchors will be added only when
# the system service is used and would removed on termination of the service.
#
# See pf.conf(5) for syntax.
#

#
# com.apple anchor point
#
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

pass in proto tcp from any to any port 8080

Но это тоже не помогает.

Так что не так? Что мне теперь делать?

1 ответ1

0

У меня просто была похожая проблема с рельсами.

Проблема в том, что у Yosemite есть брандмауэр приложения, и хотя я уверен, что должен быть способ открыть отдельные порты независимо от привязки приложения к этому порту, я не смог найти быстрый и простой способ сделать это.

Самый простой способ сделать то, что вы пытаетесь сделать, это добавить исполняемый файл "java" (JVM), который вы используете для запуска своего приложения, в системных настройках> security> firewall> options firewall, и он должен работать.

Например, для открытия порта 3000 для доступа к разрабатываемому приложению rails я добавил исполняемый файл ruby, который запускает rails, и другой код ruby, запущенный для моего проекта.

Чтобы выяснить, какую Java (JVM) вы используете, используйте "which java".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .