Lösningar för SSH anslutning bakom NAT utan timeout!
Jag använder nästan dagligen SSH för allt från enkel fjärrstyrning av Linux-serverar för administration och underhåll, till att köra tunnel genom brandväggar. Om man går tillbaks ett par år hade jag ett irriterad problem som förs terminalfönstret efter ett par minuter inaktivitet på en SSH session. Detta berodde inte oftast på att jag hade dålig uppkoppling, utan det uppstår när en SSH anslutning får timeout eller dödas av någon anledning. Den vanligaste orsaken är oftast brandväggens NAT-funktion som kopplar ned anslutningar om ingen trafik har skickas inom en viss tid. Oftast är det efter 10-15 minuter, detta trots att enligt standard (RFC 5382 – NAT Behavioral Requirements for TCP) ska vara minst 2 timmar och 4 minuter. Varför detta inte uppfylls av vissa NAT-routrar kan ha flera orsaker. En anledning kan vara att brandväggen har brist på minne och genom olika åtgärder försöker frigöra minne, bland annat avsluta inaktiva uppkopplingar så som SSH anslutning i förtid.
Oavsett varför NAT beter sig som den gör är det faktum att det händer. Om man har en router eller brandvägg som har detta beteende finns det flera sätt att lösa problemet. Jag har listat tre stycket.