Porta encaminhando solicitação de saída com PF

3

Estou tentando redirecionar todo o tráfego de saída da minha máquina local na porta 843 para acessar meu serviço local na porta 1234.

Então, quando faço uma solicitação para, por exemplo, 1.2.3.4:843 , quero que ele se conecte a 127.0.0.1:1234 (transparentemente ao aplicativo solicitante).

Estou no OS X, então estou tentando conseguir isso usando pf .

Veja o que eu tenho:

ext_if = "en0"
int_if = "lo0"

rdr on $ext_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234

Agora, quando eu faço telnet 1.2.3.4 843 , eu esperaria uma conexão no meu serviço local (rodando na porta 1234).

No entanto, não parece redirecionar corretamente. Usando tcpdump , posso ver que os pacotes são colocados na interface com o destino 1.2.3.4 .

Se eu fizer apenas regra de host local, por exemplo,

rdr on $int_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234

Em seguida, telnet localhost 843 funciona como esperado e recebo a resposta do meu serviço local, que está escutando na porta 1234 .

Não tenho certeza do que estou fazendo de errado e agora estou perdendo ideias. Qualquer ajuda / ponteiros é bem-vinda.

EDITAR:

Eu testei um pouco mais e parece que com a última regra, qualquer pedido que chega na interface de loopback funciona. Então telnet 127.2.3.4 843 também redireciona corretamente.

Eu tentei adicionar $ext_if acima

rdr on { $ext_if $int_if } proto tcp from any to any port 843 -> 10.0.1.10 port 1234

Mas sem sucesso. Eu também adicionei o encaminhamento sysctl. Não fez nada.

sudo sysctl -w net.inet.ip.forwarding=1
sudo sysctl -w net.inet6.ip6.forwarding=1
    
por Alexander Olsson 30.12.2014 / 13:16

0 respostas