
Nova versão
Então, vou fazer uma lista das coisas que tenho para ficar mais claro.
- PC no Windows 10 executando um servidor de mídia Plex e Kitty
- VPS da OVH rodando em Debian 9 stretch
o que eu quero :
- quero acessar meu servidor de qualquer lugar fora da rede local
como :
- usando o vps como um túnel para meu servidor Plex
Problema :
- ip dinâmico Double Nat do roteador 4G / LTE do lado isp com uma assinatura
- nenhum encaminhamento de porta é possível
emitir :
- quando o ip mudava "diariamente" no PC (windows 10) a conexão com o vps através do kitty travava
solução manual para o problema:
- encontre o PID do processo que mantém a porta aberta e elimine-o
o que eu preciso :
- fazer isso automaticamente ou ter outra solução para o problema
Imagens para ajudar você a entender
Após mudança de ip no log da Kitty
Maneira manual de resolver o problema
Perguntas e respostas
Pimp Juice TI: obrigado ^^ de qualquer forma a ferramenta no-ip também me pareceu bastante adequada. Mas como o ISP tem NAT duplo e basicamente eu teria que rodar um software No-ip no segundo "roteador" atrás do meu. O que é impossível, você concordaria ^^. Realmente meu problema é muito simples, mas irritante porque parece que a saída disso é simples. Mas não consigo acertar :/
ps: sim, não se preocupe, a versão antiga é um grande rascunho do que eu queria que fosse ^^ na nova você tem tudo o que precisa para me ajudar, eu acho:/ ^^
Old version
Tenho um VPS da OVH que utilizo para encapsular o meu servidor multimédia no PLEX do meu PC para o VPS. Tudo bem e funcionando, exceto…
Meu IP é dinâmico e com NAT duplo. Meu IP externo muda e renova frequentemente, pelo menos uma vez por dia. Portanto, minha conexão com o VPS através do Kitty (um fork do PuTTY) é interrompida. Isso resolvi com a reconexão automatizada após uma interrupção da conexão. De qualquer forma, quando isso for feito, o tunelamento de porta que eu especifiquei no KiTTY falharia, porque a conexão anterior não foi fechada corretamente.
Para o lado do servidor é o Debian 9 Stretch.
Eu encontrei a solução que é encontrar o PID da própria conexão e matá-lomanualmente. Esse é o meu problema, gostaria de automatizar isso com um script. Aqui peço a sua ajuda, esperando que alguém possa ajudar.
Ps: minhas habilidades em scripts são tão baixas quanto podem parecer, então seja o mais claro possível, obrigado.
Respostas a alguns comentários
Scott– quando meu endereço IP muda, a conexão trava. Nesse momento ele se reconectaria graças ao KiTTY. Eu apenas digitaria na linha de comando
netstat -lnp
, isso me mostraria toda a conexão ativa. Eu encontraria aquele vinculado à porta especificada (neste caso32400
) e o PID associado e, em seguida, mataria o mesmoPID
comkill
. Da última vez o PID foi12007
por exemplo.Kamil Maciorowski– Eu tentei isso (referindo-se aesta resposta para outra pergunta):
permanentemente editando o
/etc/sysctl.conf
arquivo, adicione:net.ipv4.tcp_keepalive_time=300
e
Se você puder reconfigurar
sshd
no servidor, esta é, na minha opinião, a maneira mais elegante. Deixesshd_config
conter linhas como:ClientAliveCountMax 3 ClientAliveInterval 15
mas nenhum deles funciona para mim quando simulei uma falha na minha conexão, ela será reconectada e a porta ainda estará ocupada.
Também a solução abaixo
De volta ao cliente
pareceria funcionar para mim apenas se eu fosse capaz de adaptá-lo à minha situação.
"mas nada disso funcionou para mim quando simulei uma falha na minha conexão, ela será reconectada e a porta ainda estaria ocupada" - Você reiniciou o sshd? Você tentou se reconectar imediatamente? Com essas configurações você precisa esperar até um minuto para que a porta fique livre. –Kamil Maciorowski
sim, reiniciei o SSHD com o seguinte comando:
/etc/init.d/ssh reiniciar
e para estar seguro porque não sei, reinicie o sshd
serviço sshd reiniciar
a reconexão é automatizada e instantânea. Agora estou procurando uma maneira de atrasar esse processo, se você souber como é só me agradecer para saber:
net.ipv4.tcp_keepalive_time=300
Eu configurei para 10 segundos em vez de 300, ainda está bom.
Além disso, não recebi seu segundo comentário sobre o carregamento de duas sessões ao mesmo tempo, corrigindo-o com o segundo, meu objetivo é apenas reiniciar o processo de sessão real, que é automatizado, só agora preciso que a porta seja liberada para que eu possa abri-la novamente com o novo vínculo.
Esclarecimento: no meu comentário acima existe uma maneira genérica de evitar o bloqueio do servidor. Se você quebrou o sshd_config com severidade suficiente, não seria capaz de fazer o ssh novamente. É por isso que você deve sempre testá-lo com uma nova conexão, enquanto a antiga ainda permite reverter as alterações de qualquer maneira. Observe que, em geral, é possível ter um sshd_config sintaticamente válido e ainda assim não conseguir se conectar; portanto, reiniciar o sshd sem nenhum erro não significa necessariamente que funcionará. –Kamil Maciorowski
Então no final quais são as minhas soluções para que esse processo seja automatizado e a porta seja liberada após um período menor de tempo e como atrasar a reconexão no kitty com um script ou outra coisa? mais uma vez obrigado cara pelo seu tempo, eu aprecio
“a reconexão é automatizada e instantânea, agora estou procurando uma maneira de atrasar esse processo” – quer dizer que o KiTTY tenta se reconectar sem demora, certo? No Linux, no lado do cliente, seu problema pode ser facilmente resolvido com autossh ou looping ssh -o ExitOnForwardFailure=yes… (veja esta resposta). Acho que o ssh no Cygwin deve suportar esta opção. Se você insiste em um script do lado do servidor, acho que isso pode ser feito; mas o script não deve eliminar o túnel se não for o túnel antigo. Não tenho tempo agora para fornecer uma solução tão complicada; talvez em 12 horas. –Kamil Maciorowski
Ok, obrigado, te vejo em 12h de qualquer maneira, até então vou tentar todas as outras soluções e te conto como foi, obrigado novamente cara.