Come aprire una porta specifica in Firewall OS X 10.9.4


15

Come posso aprire una porta specifica nel firewall? Non riesco a utilizzare il "consenti connessioni dall'applicazione" in quanto voglio aprire la porta per Jenkins, che non è nell'elenco ...


Su quali porte e protocolli vuoi che Jenkins sia in grado di ascoltare? Questo post vi aiuterà a vedere quali porte è configurato su ... stackoverflow.com/a/10106086/475228
bmike

Sulla proto porta Tcp 8080
Guy

Questo post ipfwpotrebbe essere rilevante? apple.stackexchange.com/questions/33871/…
bmike

Risposte:


7

OS X Mavericks di Apple contiene tre firewall. Innanzitutto il Firewall a livello di applicazione che può essere configurato utilizzando le impostazioni di sistema. Ma c'è anche ipfw, un firewall per filtrare i pacchetti come netfilter / iptables su GNU / Linux e pf (FreeBSD / OpenBSD).

Puoi configurare ipfw usando la riga di comando, oppure usando un front-end grafico come WaterRoof free / libre .

Puoi iniziare con un comando ipfw come:

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

7
ipfw è deprecato e sparito a El Capitan
slashdottir il

21

Ho avuto lo stesso problema con OS X Yosemite (10.10.3). Ho trovato questo post sul blog che fornisce istruzioni chiare. Non possiamo più usare ipfw, poiché è deprecato. Invece, usa pfctl, che purtroppo manca di un buon modo da riga di comando per dirgli di aprire una porta. Invece, devi:

  1. Apri /etc/pf.conf in un editor di testo.
  2. Aggiungi una linea come questa:

# Apri la porta 8080 per TCP su tutte le interfacce

passare in proto tcp da qualsiasi porta 8080

  1. Salva il file.
  2. Carica le modifiche con:

sudo pfctl -f /etc/pf.conf

Se è necessario aprire una porta udp, passare tcpa udp, se sono necessari entrambi, aggiungere una seconda riga. Ulteriori dettagli sono disponibili in man pf.conf.

Assicurati anche che il tuo server sia in ascolto sull'interfaccia effettiva su cui vuoi che sia accessibile (o su tutte le interfacce, usando 0.0.0.0o ::0), non localhost ( 127.0.0.1o ::1).


3
Whoa, riavvia? Devi davvero riavviare per aprire una porta?
jcollum,

1
il passaggio -na pfctl verifica le regole e non le carica in modo mirato. Utilizzare solo -f /etc/pf.confper caricare le regole. Verifica che siano caricati pfctl -sr. Tuttavia, sebbene siano necessarie le regole pfctl, non sembra di per sé essere sufficiente per consentire l'accesso a un El Capitan su un determinato porto.
Brian M. Hunt,

... Bisogna anche assicurarsi che l'applicazione sia associata al nome host (no localhost); si ottiene il nome host con $ hostnamedalla riga di comando. Inoltre, è possibile riavviare il firewall, anziché riavviare, andando su Preferenze di Sistema -> Sicurezza e privacy -> Firewall -> Disattiva Firewall e quindi Attiva Firewall.
Brian M. Hunt,

@Keen fantastico avatar - grandi ricordi!
Dónal,

6

ipfw è deprecato da Apple. Mountain Lion e successivamente utilizzare pfctl.

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


6
puoi pubblicare il comando specifico per aprire una porta?
thias,

Se si desidera aggiungere una porta specifica, penso che sia necessario modificare il file di configurazione (consultare krypted.com/mac-security/… e cercare la parte con 192.168). D'altra parte, se vuoi assicurarti che un'applicazione non sia bloccata, jamfnation.jamfsoftware.com/discussion.html?id=6566 ha un riassunto abbastanza buono nel commento finale. Uso ancora 10.6, quindi non ho lavorato molto con pfctl.
Kent,

1

Ecco una linea piuttosto che richiedere all'utente di scherzare con Vim. Utile per l'automazione.

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

O un'alternativa per gli utenti Linux

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

Assicurati solo di cambiare 8080l'esempio con quello che hai in mente. Scambia tcp con udp se vuoi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.