Tem que ser telnet? Usar telnet simples é altamente desencorajado porque não é muito seguro.
Se você puder usar o SSH, ele terá dois recursos que o ajudarão: TCPKeepAlive (que é habilitado por padrão, portanto não há necessidade de usá-lo) e ServerAliveInterval (que está desabilitado por padrão, portanto, isso pode ajudá-lo).
Da página man (man ssh_config):
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server, or 300 if the BatchMode option is set. This option
applies to protocol version 2 only.
Para usar isso de uma só vez:
ssh -o 'ServerAliveInterval=30' your-server.com
Para usá-lo sempre, adicione ServerAliveInterval 30
ao seu arquivo .ssh/config
:
Host *
ServerAliveInterval 30