Отключение удаленно инициированного обратного ssh-туннеля не замечено локально - PullRequest
0 голосов
/ 19 февраля 2019

На удаленном VPS я запускаю обратный туннель к моему домашнему серверу.Он используется для прокси локального браузера Firefox.

Когда загружается удаленный VPS, он выполняет следующие две команды

autossh -f -C2qTnN -D 0.0.0.0:3000 user@localhost
autossh -f -N -R 0.0.0.0:2000:localhost:3000 user@home.dynamic.example.com

В домашней сети модем / маршрутизатор / шлюз имеет портпереадресация для порта 22 на сервер с IP 192.168.1.123, который затем начинает прослушивать порт 2000 (удаленно созданный обратный туннель).

Firefox настроил 192.168.1.123:2000 в качестве прокси-сервера SOCKS v5, иэто работает, как и ожидалось.

Проблема заключается в том, что когда соединение с VPS падает, по какой-то причине порт 2000 на 192.168.1.123 не освобождается.

Когда я выдаю

sudo lsof -n -i :2000| grep -P 'IPv4.+LISTEN' | sed -e 's/sshd\ +\(\d+\)\ /\1/p'

на этом сервере я получаю

sshd    1781   user   11u  IPv4 16700854      0t0  TCP *:2000 (LISTEN)

и мне нужно выдать kill 1781, чтобы освободить порт, чтобы обратный туннель снова был собран (autossh позаботилсяоб этом на VPS, поскольку он постоянно пытается, но терпит неудачу, потому что порт не свободен)

Что может быть причиной того, что порт не освобождается автоматически на 192.168.1.123, когда соединение разрывается?Это нормально?Я думаю, что это происходит не всегда, так как иногда я получаю короткие разъединения, но тогда туннель не затрагивается.

...