Encaminhamento / NAT / Port forwarding apenas para uma porta?

1

Não sei qual é o termo correto a ser usado e não sei quais ferramentas devo usar. A única coisa que tenho é uma meta que gostaria de realizar.

Eu tenho duas máquinas linux (A e B) e um serviço remoto. O serviço está escutando na porta 16000. A conexão de saída da máquina A na porta 16000 é bloqueada por um firewall, mas em B não é. Eu preciso acessar o serviço do A. Assim, ele provavelmente precisará ser roteado (termo correto?) Por meio do B. Eu não posso modificar o programa que está acessando o serviço (por isso, ele sempre tentará na porta 16000).

Eu sei que há muitos tutoriais sobre tópicos semelhantes, mas eu não sei qual devo seguir, porque aparentemente há muitas possibilidades. Eu tenho acesso total a ambas as máquinas. Eu sou um desenvolvedor simples, não um administrador Linux, mas isso é realmente um bloqueador para mim :( Qual é a melhor maneira de conseguir isso? O que devo executar na máquina A e na máquina B?

Obrigado.

    
por NeplatnyUdaj 22.05.2013 / 15:24

2 respostas

3

Eu não sei o melhor caminho, existem vários

Corrigir o firewall

Isso parece-me melhor. Não está claro a partir de sua pergunta onde o firewall é (é um dispositivo separado, uma função de um roteador ou um firewall de software em A?)

Roteamento

Você provavelmente pode rotear todo o tráfego de A para B, mas eu evitaria isso.

Você teria que configurar o A com uma configuração de rede estática que fornece O endereço de B como o gateway padrão.

Você teria que configurar o B como um roteador de braço único.

Você pode ter que realizar alguns truques NAT extras no roteador LAN-Internet real, de modo que o tráfego de retorno para A seja entregue em B.

Provavelmente seria mais fácil colocar A em uma sub-rede e adicionar uma NIC para B.

Espere e veja se alguém apresenta uma solução fácil. Eu tentaria minha outra ideia abaixo primeiro.

Encaminhamento

Você poderia, por exemplo, adicionar uma entrada /etc/host em A que associa o nome DNS do serviço ao endereço IP de B. Geralmente, resolvedores de nomes consultam / etc / hosts primeiro (se não você pode especificar a ordem - detalhes dependem do SO

Em B, use algo como socat para configurar um encaminhamento / retransmissão de escuta na porta 16000 que atua como um proxy. Veja o terceiro exemplo na documentação socat

    
por 22.05.2013 / 15:54
1

Se qualquer conexão de saída para 16000 do Servidor A estiver bloqueada e o aplicativo puder se conectar apenas à porta 16000, sua única esperança é que você tenha permissão para se conectar à porta local 16000 (local como no Servidor A).

Se isso for possível, basta configurar o encaminhamento de porta SSH da porta local 16000 para o Servidor B:

ssh -L 16000:service:16000 server_b
    
por 22.05.2013 / 15:56