Я успешно настроил туннель между двумя серверами, так что входящие соединения через порт 80/443 перенаправляются на другой сервер, на котором фактически работает веб-сервер. Кроме того, я использовал autossh для поддержания соединения.
Это прекрасно работает, за исключением того, что вместо полного закрытия многие входящие соединения заканчиваются в состоянии FIN_WAIT2:
пример вывода netstat
... и поскольку они связаны с запущенным процессом, они никогда не очищаются системой. В конце концов, я достиг предела открытых файлов, в результате чего клиент SSH не принимал новые подключения. Проблема в том, что я не могу понять, почему это происходит. Многие из входящих соединений закрываются без проблем, но другие просто сохраняются бесконечно.
Что я пробовал:
Отключение ServerAliveInterval/CountMax, ClientAliveInterval/CountMax и TCPkeepAlive
Перезапуск службы (работает, но не является решением)
Исследование, которое я провел в этом, привело меня к очень небольшому количеству источников информации, таких как
этот вопрос о сбое сервера, которые не предложили никакого решения.
Я не понимаю, как соединения, которые не поддерживаются и от которых отключился клиент, остаются активными. Кто-нибудь может пролить свет?