Como avançar uma porta no Mac OS X

36

Gostaria de fazer com que todas as conexões de entrada da porta 1000 do meu host (IP: 200.234.XXX.XXX) fossem encaminhadas para a porta 80 no host 10.211.55.5

Como posso fazer isso no meu host? Está executando o Mac OS X 10.5.8

Daniel Cukier
fonte
ah, você também está executando paralelos, tendo o mesmo problema que eu? :)
LearnCocos2D

Respostas:

30

Muito simples de fazer, primeiro você precisará habilitar o serviço de login remoto no seu mac ( Preferências do Sistema -> Compartilhamento -> Login Remoto ). Isso inicia seu servidor ssh.

Em seguida, execute o seguinte comando no seu OS X Terminal:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

Pode ser necessário aceitar inicialmente a impressão digital do servidor e digitar sua senha local para o login ssh. (Você também pode configurar uma chave pública / privada ssh local para local para não solicitar uma senha, isso será um exercício para o leitor.)

O formato é:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1
Marius
fonte
Podemos fazer isso se a porta 22 não estiver aberta?
Afshin Moazami
11
Você precisa se conectar de alguma forma. Mas você sempre pode executar o ssh em outra porta ... talvez porta http? ou a porta BIND (DNS)? Esses são abertos principalmente em firewalls.
Marius
10

Muito simples usando a versátil ferramenta ncat:

sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

Obtenha os binários do ncat / nmap para Mac OS X no site oficial: http://nmap.org/download.html#macosx

EDIT: adicionado sudo para escutar em uma porta restrita <1024

Tony Baguette
fonte
11
obrigado. é muito simples, além de não precisar reiniciar!
verystrongjoe
Além disso, você não precisa iniciar o servidor SSH no seu macOS.
Tony Baguette
5

Supondo que você tenha um roteador UPnP, é fácil configurar portas usando o PortMap

Ele tem uma interface muito simples.

texto alternativo

Alexis Hirst
fonte
por que sua imagem é tão pequena?
barlop
3

Bem, posso lhe dizer como faço esse tipo de coisa no meu sistema Mac OS X 10.5.8.

Comecei com uma resposta sobre o NAT, mas acho que você realmente deseja um programa de encaminhador TCP (você menciona 'proxy' e encaminhamento de porta).

Existem algumas maneiras de fazer isso, dependendo de suas necessidades, até o 'SSH' pode ser acionado, embora minha maneira curta e doce favorita seja um script Perl tcpforward .

Se você precisar de alguma manipulação HTTP (talvez seja necessário ajustar os redirecionamentos HTTP, para que, quando uma solicitação for enviada para uma URL sem um '/' à direita, você não seja redirecionado para o servidor real e inacessível), o Apache poderá fazer o trabalho de um proxy reverso. Você vai querer ver mod_proxy e, especificamente, ProxyPass e ProxyPassReverse. Você não permitir ProxyRequests, que é de proxy para a frente. Deve ser possível usar o próprio Apache do Mac OS para fazer isso, se você o tiver em execução. Ele vem com mod_proxy e /etc/httpd/httpd.conf é o arquivo de configuração a ser atualizado.

Mesmo com o Apache, você precisa garantir que todos os links no conteúdo do servidor real sejam relativos; se eles fizerem referência ao servidor real, você poderá tentar o módulo mod_proxy_html (não tenho experiência de como isso funciona).

jrg
fonte
+1 para tcpforward, o Perl nunca deixa de ser útil.
Steve Kehlet
0

Sua máquina está conectada diretamente à Internet (IE - sem roteador)? Normalmente você faz o encaminhamento de porta no roteador, mas se você usa um modem para se conectar diretamente, o iptables é provavelmente a melhor maneira.

Dentrasi
fonte
Não faço ideia por que isso foi rejeitado porque é a verdade.
Hasaan Chop
4
@HasaanChop Isso está com voto negativo porque não é útil. Se detalhasse exatamente como usar iptablespara realizar o que a pergunta fazia, isso poderia ser útil.
Jon-Eric.
Não há iptables no mac os x.
Unnamed_1 7/07
-1

Aqui está um bom artigo: http://www.cyberhq.nl/article/384/port-forwarding-in-macos-x

Mas, como você está encaminhando para 80, suponho que você queira que ele vá para um servidor da Web, então eu alteraria a configuração do servidor da Web para configurar um proxy reverso ou algo assim.

Nisse Engström
fonte
6
Parece que a ligação é interrompida
Jochen Bedersdorfer