Encaminhamento de porta simples

19

Estou com alguns problemas porque estou tentando configurar um proxy reverso com e um segundo servidor. Minha ideia era fazer o firewall encaminhar https para o proxy reverso e a porta 29418 (gerrit ssh) para o segundo servidor. Agora meu colaborador de TI diz: NÃO PODE! As duas portas vão para o servidor 1 ou as duas portas vão para o servidor 2.

Ok, como solução alternativa, tentei configurar um encaminhamento de porta no proxy reverso da porta 29418 -> server2: 29418

Detalhes:

  • IP do Servidor1: 10.0.0.132 e 192.168.10.2 no Ubuntu 12.04.2 LTS
  • Servidor2 IP: 10.0.0.133 e 192.168.10.3 no Ubuntu 12.04.2 LTS

Agora, tanto a https quanto a porta 29418 vão do firewall para 10.0.0.132, a TI diz que é a única maneira. :(

Então, diga-me como encaminhar de 10.0.0.132:29418 -> 192.168.10.3:29418 ou 10.0.0.133:29418

Quando estou trabalhando no 10.0.0.132, posso conectar-me aos 10.0.0.133:29418 e 192.168.10.3:29418 para que as portas estejam abertas.

- Atualização -

Meu iptables -t nat -L é assim:

root @ dev: / raiz # iptables -t nat -L
PREROUTING em cadeia (política ACEITAR)
destino de origem da proteção de destino
DNAT tcp - em qualquer lugar dev.example.com tcp dpt: 29418 para: 10.0.0.133

ENTRADA em cadeia (política ACEITAR)
destino de origem da proteção de destino

SAÍDA da cadeia (política ACEITAR)
destino de origem da proteção de destino

Cadeia POSTROUTING (política ACEITAR)
destino de origem da proteção de destino
root @ dev: / raiz # cat / proc / sys / net / ipv4 / ip_forward
1 1
uncletall
fonte

Respostas:

32

Caso outra pessoa esteja procurando uma maneira que realmente funcione. Embora o @HorsePunchKid esteja certo em sua sugestão, eu encontrei este passo a passo que preenche as etapas ausentes:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

Em essência:

Ative o encaminhamento de IP:

sysctl net.ipv4.ip_forward=1

Adicione sua regra de encaminhamento (use nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Peça IPtables para Masquerade:

iptables -t nat -A POSTROUTING -j MASQUERADE

E é isso! De qualquer forma, funcionou para mim :)

Brendon Muir
fonte
11
Esta é a melhor resposta que encontrei sobre esse assunto.
Victor Piousbox
Perdeu a conexão do meu contêiner Docker depois de usar esta solução. Teve que excluir a regra. Rule estava funcionando, mas perdeu todo o tráfego. Eu não recomendo isso.
Dyin
iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... é isso, obrigado! Passou horas pesquisando na web e descobrindo. Isso é tão simples e funciona.
shrimpwagon
7

Se você possui o iptables instalado no 10.0.0.132, acho que isso será bem direto:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Isso indica que o tráfego é enviado para 10.0.0.132 na porta 29418 para 10.0.0.133, na mesma porta, antes de qualquer outro roteamento que 10.0.0.132 possa tentar fazer. Se você executar este comando e tiver problemas com ele, substitua o sinalizador -A por -D para removê-lo.

Se você deseja que essa regra seja executada automaticamente quando o 10.0.0.132 for iniciado, considere adicionar o comando acima como uma regra de "pós-up" em / etc / network / interfaces.

CavaloPunchKid
fonte
Foi exatamente o que fiz, mas não funcionou. Eu uncommented o net.ipv4.ip_forward = 1 em /etc/sysctl.conf mas eu ainda obter erros de conexão com a 10.0.0.132:29418
uncletall
6

Se alguém procurar um método temporário, tente a solução abaixo.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 [email protected]

O comando acima redireciona todas as conexões à porta 8080 na sua máquina base para a porta 80 da sua máquina virtual. Você pode testar o trabalho acessando a página da web http://192.168.0.10:8080 , e ela mostrará a página da web na máquina convidada.

Isso se aplica a todas as portas :)

homem comum
fonte
0

No final, tive que instalar o pfSense como um roteador dentro do meu servidor ESXi para rotear o tráfego para as diferentes VMs, pois não consegui fazê-lo funcionar no Ubuntu.

uncletall
fonte