Como fazer a conversão de endereços de porta para conectar-se a uma porta reversa para frente localmente

0

Eu estou rodando 4 indexadores splunk e eu tenho que conectar a ele na porta 9997. Eu não tenho nenhuma linha direta de visão ou qualquer forma de roteamento para esses servidores splunk além de redirecionar ssh portforwards que eu posso conectar no 127.0. 0.1: 8971, 127.0.0.1:8972, 127.0.0.1:8973 e 127.0.0.1:8974.

Como posso enganar minha máquina linux (sles 11 SP4):

  • 1.2.3.1:9997 - > 127.0.0.1:8971
  • 1.2.3.2:9997 - > 127.0.0.1:8972
  • 1.2.3.3:9997 - > 127.0.0.1:8973
  • 1.2.3.4:9997 - > 127.0.0.1:8974

Eu tenho uma regra de saída

   51  3060 DNAT       tcp  --  *      *       0.0.0.0/0            1.2.3.4       tcp dpt:9997 to:127.0.0.1:8971

que funciona, mas a resposta que recebo é lixo

14:37:23.425219 IP 192.168.58.10.55403 > 127.0.0.1.8971: S 2063729062:2063729062(0) win 14600 <mss 1460,sackOK,timestamp 1532158690 0,nop,wscale 5>
14:37:23.425243 IP 127.0.0.1.8971 > 192.168.58.10.55403: S 2663988489:2663988489(0) ack 2063729063 win 32768 <mss 16396,sackOK,timestamp        1532158690 1532158690,nop,wscale 5> 
14:37:23.425249 IP 192.168.58.10.55403 > 127.0.0.1.8971: R 2063729063:2063729063(0) win 0

e não completa o soquete como se eu estivesse conectado diretamente à porta

14:38:33.822640 IP 127.0.0.1.34731 > 127.0.0.1.8971: S 2794569169:2794569169(0) win 32792 <mss 16396,sackOK,timestamp 1532176289 0,nop,wscale 5>
14:38:33.822649 IP 127.0.0.1.8971 > 127.0.0.1.34731: S 1241947612:1241947612(0) ack 2794569170 win 32768 <mss 16396,sackOK,timestamp 1532176289 1532176289,nop,wscale 5>
14:38:33.822655 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.822991 IP 127.0.0.1.34731 > 127.0.0.1.8971: F 1:1(0) ack 1 win 1025 <nop,nop,timestamp 1532176289 1532176289>
14:38:33.825172 IP 127.0.0.1.8971 > 127.0.0.1.34731: . ack 2 win 1024 <nop,nop,timestamp 1532176290 1532176289>
14:38:33.835115 IP 127.0.0.1.8971 > 127.0.0.1.34731: F 1:1(0) ack 2 win 1024 <nop,nop,timestamp 1532176292 1532176289>
14:38:33.835138 IP 127.0.0.1.34731 > 127.0.0.1.8971: . ack 2 win 1025 <nop,nop,timestamp 1532176292 1532176292>
    
por Peter Turner 04.05.2018 / 21:39

1 resposta

1

Se você pode usar dns ou nomes de host, seria possível fazer o seguinte

  1. abre o ssh com tunelamento reverso (melhor usar uma conexão ssh com chave para automação do sistema)
  2. após o estabelecimento do túnel, inclua as entradas do nome do host no arquivo / etc / hosts, mas aponte-as para 127.0.0.1
  3. quando o túnel ficar inativo, remova essas entradas do arquivo / etc / hosts.

O passo 1 é bastante simples, muitos exemplos estão disponíveis.
Os passos 2 e 3 não são tão diretos, mas são fáceis o suficiente

Em um nível alto, use um script acionado por cron, observe a saída do netstat para determinar se você tem conexões reversas ativas e, em seguida, reescreva seu arquivo host com sed ou awk para apontar para o endereço correto.

Se os nomes de host não forem realmente viáveis, pode ser possível redefinir sua configuração de túnel remoto para usar 127.0.0.x em vez de 1 e espalhar suas portas.

algo como

ssh credentials -NT -R 1.2.3.1:9997:127.0.0.2:9997 
    
por 04.05.2018 / 22:25