O antigo utilitário ipfw
foi desencorajado nas versões recentes do Mac OS X e agora saiu do El Capitan.
Qual é a maneira moderna de encaminhar portos em El Capitan?
Eu simplesmente quero que a porta 80 encaminhe para a porta 8080.
O antigo utilitário ipfw
foi desencorajado nas versões recentes do Mac OS X e agora saiu do El Capitan.
Qual é a maneira moderna de encaminhar portos em El Capitan?
Eu simplesmente quero que a porta 80 encaminhe para a porta 8080.
Respostas:
Para encaminhar todo o tráfego da porta 80 para a porta 8080, você pode inserir o seguinte na linha de comando do Terminal.
echo "
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
Retirado de https://salferrarello.com/mac-pfctl-port-forwarding/
sudo pfctl -F all -f /etc/pf.conf
e para exibir suas regras atuais de encaminhamento de porta, #sudo pfctl -s nat
pf.conf
arquivo
A maneira moderna de encaminhar portas em El Capitan está usando pf
. No exemplo abaixo, todas as solicitações da porta 80 são encaminhadas para a porta 8080 no mesmo host. Ajuste os redirecionamentos de acordo com suas necessidades.
Crie um arquivo âncora org.user.forwarding em /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
com o seguinte conteúdo e uma linha vazia à direita
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
rdr pass on en1 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
ou
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
Modifique o arquivo /private/etc/pf.conf, mas mantenha uma linha vazia à direita
arquivo original:
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
para
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
Analise e teste seu arquivo âncora para garantir que não haja erros:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
Agora modifique /System/Library/LaunchDaemons/com.apple.pfctl.plist de
<array>
<string>pfctl</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
para
<array>
<string>pfctl</string>
<string>-e</string>
<string>-f</string>
<string>/etc/pf.conf</string>
</array>
Você precisa desativar a Proteção de integridade do sistema para fazer isso. Após editar o arquivo, reative o SIP. Após a reinicialização, o seu Mac pf será ativado (essa é a opção -e).
Como alternativa, você pode criar seu próprio daemon de inicialização semelhante à resposta aqui: Usando o Servidor 5.0.15 para compartilhar a Internet SEM compartilhamento de Internet .
Após uma atualização ou atualização do sistema, alguns dos arquivos originais acima podem ter sido substituídos e você deve reaplicar todas as alterações.
Se você deseja encaminhar através de diferentes interfaces, é necessário habilitar isso no /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
ping
é seu amigo no diagnóstico de problemas de rede.
Para estender a solução da resposta @ sal-ferrarello, criei dois scripts shell super-básicos para ativar ou desativar o redirecionamento sem comprometer as entradas já existentes no pf
.
I. Primeiro encontre com quais entradas você já possui:
sudo pfctl -s nat
Minha saída foi como:
No ALTQ support in kernel
ALTQ related functions disabled
nat-anchor "com.apple/*" all
rdr-anchor "com.apple/*" all
O que nos interessa são entradas reais, então omita as duas primeiras linhas de informação.
II Criar enable.sh
script:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080
" | sudo pfctl -ef -
sudo pfctl -s nat
As duas primeiras linhas a seguir echo
são as entradas que já estavam lá. A terceira linha está com o novo redirecionamento - neste caso, 80 a 8080. No final, chamamos sudo pfctl -s nat
para ver se as alterações foram aplicadas.
III Criar disable.sh
script:
Semelhante ao enable.sh
que criamos script, mas sem redirecionamento 80-> 8080, mas com entradas anteriores já existentes:
#!/bin/sh
echo "
nat-anchor \"com.apple/*\" all
rdr-anchor \"com.apple/*\" all
" | sudo pfctl -ef -
sudo pfctl -s nat