Como abrir uma porta específica no Firewall OS X 10.9.4


15

Como abro uma porta específica no firewall? Não consigo usar o "permitir conexões do aplicativo", pois quero abrir a porta do Jenkins, que não está na lista ...


Em que porta (s) e protocolos você deseja que o Jenkins possa escutar? Este post vai ajudá-lo a ver o que os portos é configurado em ... stackoverflow.com/a/10106086/475228
bmike

Em proto Tcp port 8080
Guy

Esta publicação ipfwseria relevante? apple.stackexchange.com/questions/33871/...
bmike

Respostas:


7

O OS X Mavericks da Apple contém três firewalls. Primeiro, o Firewall no nível do aplicativo, que pode ser configurado usando as configurações do sistema. Mas também existe o ipfw, um firewall de filtragem de pacotes como o netfilter / iptables no GNU / Linux e o pf (FreeBSD / OpenBSD).

Você pode configurar o ipfw usando a linha de comando ou usando um front-end gráfico como o WaterRoof free / libre .

Você pode começar com um comando ipfw como:

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

7
ipfw é obsoleto e ido em El Capitan
slashdottir

21

Eu tive o mesmo problema no OS X Yosemite (10.10.3). Encontrei este post do blog que fornece instruções claras. Não podemos mais usar o ipfw, pois está obsoleto. Em vez disso, use pfctl, que infelizmente não possui uma boa maneira de linha de comando para dizer para abrir uma porta. Em vez disso, você precisa:

  1. Abra /etc/pf.conf em um editor de texto.
  2. Adicione uma linha como esta:

# Porta 8080 aberta para TCP em todas as interfaces

passar em proto tcp de qualquer porta 8080

  1. Salve o arquivo.
  2. Carregue as alterações com:

sudo pfctl -f /etc/pf.conf

Se você precisar abrir uma porta udp, altere tcppara udp, se precisar de ambas, adicione uma segunda linha. Detalhes adicionais podem ser encontrados em man pf.conf.

Verifique também se o servidor está escutando a interface real em que você deseja acessá-la (ou todas as interfaces, usando 0.0.0.0ou ::0), e não localhost ( 127.0.0.1ou ::1).


3
Whoa, reinicie? Você realmente precisa reiniciar para abrir uma porta?
Jcollum

1
passar -npara pfctl verifica as regras e não as carrega intencionalmente. Use apenas -f /etc/pf.confpara carregar as regras. Verifique se eles estão carregados pfctl -sr. No entanto, embora as regras pfctl sejam necessárias, elas não parecem suficientes para permitir o acesso a um El Capitan em uma determinada porta.
Brian M. Caça

... Também é preciso garantir que o aplicativo esteja vinculado ao nome do host (não localhost); um obtém o nome do host $ hostnamena linha de comando. Além disso, pode-se reiniciar o firewall, em vez de reinicializar, acessando Preferências do sistema -> Segurança e privacidade -> Firewall -> Desativar firewall e, em seguida, Ativar firewall.
Brian M. Caça

@ Avatar fantástico fantástico - ótimas lembranças!
Dónal

6

O ipfw foi descontinuado pela Apple. Mountain Lion e mais tarde use pfctl.

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


6
você pode postar o comando específico para abrir uma porta?
Thias 28/08/14

Se você deseja adicionar uma porta específica, acho que precisa editar o arquivo de configuração (consulte krypted.com/mac-security/… e procure a peça com 192.168). Por outro lado, se você quiser garantir que um aplicativo não esteja bloqueado, jamfnation.jamfsoftware.com/discussion.html?id=6566 possui um resumo muito bom no comentário final. Eu ainda uso principalmente o 10.6, então não trabalhei muito com o pfctl.
Kent

1

Aqui está uma lista, em vez de exigir que o usuário mexa com o Vim. Útil para automação.

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

Ou uma alternativa para usuários do Linux

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

Apenas certifique-se de alterar 8080o exemplo para o que tiver em mente. Troque tcp com udp, se quiser.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.