Jak otworzyć określony port w Firewall OS X 10.9.4

15

Jak otworzyć określony port w zaporze? Nie mogę użyć opcji „zezwalaj na połączenia z aplikacji”, ponieważ chcę otworzyć port Jenkins, którego nie ma na liście ...

Chłopak
źródło
Na jakich portach i protokołach chcesz, aby Jenkins mógł nasłuchiwać? Ten post pomoże Ci zobaczyć, na jakich portach jest skonfigurowany ... stackoverflow.com/a/10106086/475228
bmike
Na proto Tcp port 8080
Guy
Czy pokrycie tego posta ipfwbyłoby odpowiednie? apple.stackexchange.com/questions/33871/...
bmike

Odpowiedzi:

7

Apple OS X Mavericks zawiera trzy zapory ogniowe. Przede wszystkim zapora na poziomie aplikacji, którą można skonfigurować za pomocą ustawień systemowych. Ale jest także ipfw, zapora filtrująca pakiety, taka jak netfilter / iptables na GNU / Linux i pf (FreeBSD / OpenBSD).

Możesz skonfigurować ipfw za pomocą wiersza polecenia lub graficznego interfejsu, takiego jak darmowy / libre WaterRoof .

Możesz zacząć od polecenia ipfw, takiego jak:

sudo ipfw add 31010 allow tcp from any to any dst-port 8080
Malte Bublitz
źródło
7
ipfw jest przestarzałe i nie ma go w El Capitan
slashdottir
21

Miałem ten sam problem w systemie OS X Yosemite (10.10.3). Znaleziono ten post na blogu, który zawiera jasne instrukcje. Nie możemy już używać ipfw, ponieważ jest przestarzały. Zamiast tego użyj pfctl, który niestety nie ma ładnego sposobu wiersza poleceń, aby nakazać mu otwarcie portu. Zamiast tego musisz:

  1. Otwórz /etc/pf.conf w edytorze tekstu.
  2. Dodaj taką linię:

# Otwórz port 8080 dla TCP na wszystkich interfejsach

przekazać proto tcp z dowolnego do dowolnego portu 8080

  1. Zapisz plik.
  2. Załaduj zmiany za pomocą:

sudo pfctl -f /etc/pf.conf

Jeśli chcesz otworzyć port udp, zmień tcpna udp, jeśli potrzebujesz obu, dodaj drugą linię. Dodatkowe szczegóły można znaleźć w man pf.conf.

Upewnij się także, że Twój serwer nasłuchuje na interfejsie, na którym chcesz, aby był dostępny (lub na wszystkich interfejsach, używając 0.0.0.0lub ::0), a nie na localhost ( 127.0.0.1lub ::1).

Zapalony
źródło
3
Zaraz, uruchom ponownie? Czy naprawdę musisz zrestartować komputer, aby otworzyć port?
jcollum
1
przekazanie -ndo pfctl weryfikuje reguły i wyraźnie ich nie ładuje. Użyj tylko, -f /etc/pf.confaby załadować reguły. Sprawdź, czy są załadowane pfctl -sr. Jednak chociaż reguły pfctl są konieczne, samo w sobie nie wydaje się wystarczające, aby umożliwić dostęp do El Capitan na danym porcie.
Brian M. Hunt,
... Należy również upewnić się, że aplikacja jest powiązana z nazwą hosta (nie localhost); jeden otrzymuje nazwę hosta $ hostnamew wierszu poleceń. Ponadto można zrestartować zaporę, zamiast restartować, przechodząc do Preferencji systemowych -> Bezpieczeństwo i prywatność -> Zapora -> Wyłącz zaporę, a następnie włącz zaporę.
Brian M. Hunt,
@Keen fantastyczny awatar - wspaniałe wspomnienia!
Dónal
6

ipfw jest przestarzałe przez Apple. Mountain Lion, a później użyj pfctl.

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

Kent
źródło
6
czy możesz opublikować konkretne polecenie otwarcia portu?
thias
Jeśli chcesz dodać konkretny port, myślę, że musisz edytować plik konfiguracyjny (patrz krypted.com/mac-security/... i wyszukaj część z 192.168). Z drugiej strony, jeśli chcesz się upewnić, że aplikacja nie jest blokowana, jamfnation.jamfsoftware.com/discussion.html?id=6566 ma całkiem dobre podsumowanie w ostatnim komentarzu. Nadal używam głównie wersji 10.6, więc nie pracowałem dużo z pfctl.
Kent,
1

Oto jedna linijka, zamiast wymagać od użytkownika, aby zadzierał z Vimem. Przydatny do automatyzacji.

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

Lub alternatywa dla użytkowników Linuksa

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

Upewnij się tylko, że zmienisz 8080przykład na cokolwiek, co masz na myśli. Zamień tcp na udp, jeśli chcesz.

BarryMode
źródło