Як відкрити певний порт у Firewall OS X 10.9.4


15

Як відкрити певний порт у брандмауері? Я не можу використовувати "дозволити з'єднання з додатком", оскільки я хочу відкрити порт для Дженкінса, тобто його немає в списку ...


Які порти та протоколи ви хочете, щоб Дженкінс міг слухати? Це повідомлення допоможе вам побачити , які порти він налаштований на ... stackoverflow.com/a/10106086/475228
bmike

На proto Tcp порт 8080
Гай

Чи ipfwбуде висвітлення цієї публікації доречним? apple.stackexchange.com/questions/33871/…
bmike

Відповіді:


7

Apple OS OS 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в командному рядку. Крім того, замість перезавантаження можна перезапустити брандмауер, перейшовши в Налаштування системи -> Безпека та конфіденційність -> Брандмауер -> Вимкнути брандмауер, а потім Увімкнути брандмауер.
Брайан М. Хант

@Keen фантастичний аватар - чудові спогади!
Dónal

6

Apple ipfw застаріла. Гірський лев і пізніше використовують pfctl.

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


6
чи можете ви опублікувати конкретну команду, щоб відкрити порт?
thias

Якщо ви хочете додати певний порт, то, я думаю, вам потрібно відредагувати файл конфігурації (див. 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.