ssh tunnel - como habilitar tempos limite?

1

Muitas vezes, de forma temporária e rápida (ad-hoc), quero tunelar o tráfego HTTP (e outros protocolos também) de um servidor para outro usando um túnel ssh. Eu uso para isso (no servidor de origem):

ssh -f -n -L *:80:target-server.com:80 target-server.com sleep 11555200

O problema é que depois de um tempo existem centenas de conexões que eu vejo por

lsof -n -i:80

ssh     17076 root    5u  IPv6 425353159       TCP <source-serverIP>:http->173.245.48.218:52116 (ESTABLISHED)
ssh     17076 root    8u  IPv6 425352908       TCP <source-serverIP>:http->82.177.80.10:49936 (FIN_WAIT2)
ssh     17076 root    9u  IPv6 425353148       TCP <source-serverIP>:http->173.245.48.218:31791 (ESTABLISHED)
ssh     17076 root   10u  IPv6 425353029       TCP <source-serverIP>:http->80.125.175.214:49837 (FIN_WAIT2)
ssh     17076 root   11u  IPv6 425353100       TCP <source-serverIP>:http->90.10.149.220:47749 (FIN_WAIT2)
ssh     17076 root   12u  IPv6 425353160       TCP <source-serverIP>:http->79.22.138.109:60744 (ESTABLISHED)
ssh     17076 root   13u  IPv6 425353105       TCP <source-serverIP>:http->90.10.149.220:53312 (FIN_WAIT2)

Essas conexões nunca parecem expirar. E quando o número desses atinge ~ 1024 túnel não aceita novas conexões em tudo. O que devo fazer para esse tempo limite de conexões como se fosse sem túnel?

# lsof -n -i:80|grep 'FIN_WAIT2'|wc -l
1016

alterar /proc/sys/net/ipv4/tcp_fin_timeout para um valor pequeno não corrige nada.

Além disso, este problema parece acontecer apenas com o tráfego http com túnel (talvez https também). Com o tunelamento pop3 / imap, não vi esses problemas.

Também gostaria de saber como alterar o limite máximo da conexão de túnel aberto para > 1024. Eu amarrei

ulimit -n 99999 ssh -f -n -L *:80:target-server.com:80 target-server.com 'ulimit -n 99999 && sleep 11555200'

mas não corrige. Também definir tcp_max_orphans para um valor alto não afeta isso.

    
por user191219 24.09.2013 / 08:03

2 respostas

1

Existem três conjuntos de comandos que ativam keepalives de conexão.

TCPKeepAlive e ServerAliveInterval combinados com ServerAliveCountMax e ClientAliveInterval combinados com ClientAliveCountMax

TCPKeepAlive mantém uma conexão ativa enviando um keepalive OUTSIDE da criptografia ssh padrão, o que significa que qualquer equipamento de rede pode ver que é apenas um keepalive. Isso é spoofable. Este método não é recomendado.

ServerAliveInterval é iniciado pelo CLIENTE. ServerAliveCountMax definirá um número máximo de keepalives para enviar, após o qual ocorre uma desconexão.

ClientAliveInterval é o mesmo que ServerAliveInterval , exceto que é iniciado pelo servidor.

Verifique se todas as três opções não estão sendo chamadas. Verifique $HOME/.ssh/config e /etc/ssh/ssh_config .

    
por 24.09.2013 / 22:07
1

Você acertou na primeira vez, exceto pelo atraso do sono ... que está em segundos! tente um valor menor, para mim isso funciona (vai fechar em 5 minutos):

ssh -f -n -L *: 80: target-server.com: 80 target-server.com dorme 300

    
por 29.09.2016 / 21:24

Tags