Это старая версия документа!
3 После подключения NAT стали отваливаться неактивные SSH сессии
Действительно, время жизни сессии в NAT ограничено, т.к. количество сессий у абонента - ограниченный ресурс и большое количество мертвых сессий в пуле уменьшает производительность NAT и общую.
У NAT нет возможности отличить, умерла сессия аварийно или просто в ней нет никакой активности, и закрывает такие долго висящие сессии по таймауту неактивности. Такое поведение предусмотрено стандартом и поддержано большинством производителей CG-NAT.
В СКАТ время жизни сессий можно корректировать следующими параметрами
lifetime_flow=60 lifetime_flow_long=600
где lifetime_flow_long время жизни в секундах неактивных TCP-сессий, lifetime_flow остальных.
Поэтому при необходимости поддержания долгоиграющих неактивных соединений рекомендуется использовать механизм tcp keep-alive, когда периодически в сессии передается пустой пакет, который сигнализирует, что сессия все еще активна.
Настроить tcp keep-alive можно как индивидуально для приложения на стороне сервера или клиента, так и на уровне операционной системы для всех приложений сразу.
Пример настройки на ssh сервере
в файл /etc/ssh/ssh_config добавляем строку ServerAliveInterval 60
Пример настройки на ssh клиенте
в файл ~/.ssh/config добавляем строки Host * ServerAliveInterval 60 или в командной строке ssh -o TCPKeepAlive=yes -o ServerAliveInterval=60 user@example.com
Пример настройки для всех приложений в centos
в файл /etc/sysctl.conf добавляем строки net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 20