Как открыть определенный порт в Firewall OS X 10.9.4


15

Как открыть определенный порт в брандмауэре? Я не могу использовать «разрешить соединения из приложения», так как хочу открыть порт для Jenkins, которого нет в списке ...


Какие порты и протоколы вы хотите, чтобы Jenkins мог слушать? Этот пост поможет вам увидеть, на каких портах он настроен ... stackoverflow.com/a/10106086/475228
bmike

На прото Tcp порт 8080
Парень

Будет ли это сообщение ipfwактуальным? apple.stackexchange.com/questions/33871/...
bmike

Ответы:


7

Apple OS X Mavericks содержит три брандмауэра. Прежде всего, брандмауэр прикладного уровня, который можно настроить с помощью системных настроек. Но есть также ipfw, межсетевой экран фильтрации пакетов, такой как netfilter / iptables в GNU / Linux и pf (FreeBSD / OpenBSD).

Вы можете настроить ipfw с помощью командной строки или с помощью графического интерфейса, такого как free / libre WaterRoof .

Вы можете начать с команды ipfw, например:

sudo ipfw add 31010 allow tcp from any to any dst-port 8080

7
ipfw устарел и ушел в Эль-Капитан
slashdottir

21

У меня была такая же проблема под OS X Yosemite (10.10.3). Нашел этот пост в блоге, который содержит четкие инструкции. Мы больше не можем использовать ipfw, так как он устарел. Вместо этого используйте pfctl, который, к сожалению, не имеет хорошего способа командной строки, чтобы сказать ему, чтобы открыть порт. Вместо этого вам необходимо:

  1. Откройте /etc/pf.conf в текстовом редакторе.
  2. Добавьте такую ​​строку:

# Откройте порт 8080 для TCP на всех интерфейсах

перейти в прото TCP с любого на любой порт 8080

  1. Сохраните файл.
  2. Загрузите изменения:

sudo pfctl -f /etc/pf.conf

Если вам нужно открыть порт udp, измените tcpна udp, если вам нужно оба, добавьте вторую строку. Дополнительные детали можно найти в man pf.conf.

Также убедитесь, что ваш сервер прослушивает фактический интерфейс, через который вы хотите, чтобы он был доступен (или все интерфейсы, использующие 0.0.0.0или ::0), а не localhost ( 127.0.0.1или ::1).


3
Вау, перезагрузка? Вы действительно должны перезагрузиться, чтобы открыть порт?
jcollum

1
передача -nв pfctl проверяет правила и не загружает их. Используйте только -f /etc/pf.confдля загрузки правил. Убедитесь, что они загружены pfctl -sr. Тем не менее, хотя правила pfctl необходимы, сами по себе они не являются достаточными для предоставления доступа к El Capitan через данный порт.
Брайан М. Хант

... Также необходимо убедиться, что приложение связано с именем хоста (не localhost); каждый получает имя хоста $ hostnameв командной строке. Кроме того, вместо перезагрузки можно перезагрузить брандмауэр, перейдя в «Системные настройки» -> «Безопасность и конфиденциальность» -> «Брандмауэр» -> «Выключить брандмауэр», а затем включите «Брандмауэр».
Брайан М. Хант

@ Королевский фантастический аватар - отличные воспоминания!
Донал

6

ipfw устарела Apple. Mountain Lion и позже используйте pfctl.

http://support.apple.com/kb/ht5413


6
Вы можете отправить конкретную команду, чтобы открыть порт?
Это

Если вы хотите добавить определенный порт, то я думаю, что вам нужно отредактировать файл конфигурации (см. Krypted.com/mac-security/… и найдите деталь с 192.168). С другой стороны, если вы хотите убедиться, что приложение не заблокировано, jamfnation.jamfsoftware.com/discussion.html?id=6566 содержит довольно хорошее резюме в последнем комментарии. Я до сих пор в основном использую 10.6, поэтому я мало работал с pfctl.
Кент,

1

Вот один вкладыш, вместо того, чтобы требовать от пользователя возиться с Vim. Полезно для автоматизации.

sed -i '' -e '$a\pass in proto tcp from any to any port 8080' /etc/pf.conf; pfctl -vnf /etc/pf.conf

Или альтернатива для пользователей Linux

sed -i -e '$a\pass in proto tcp from any to any port 8080' /etc/pf.conf; pfctl -vnf /etc/pf.conf

Просто убедитесь, что вы изменили 8080в примере то, что вы имеете в виду. Поменяйте местами tcp с udp, если хотите.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.