在远程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的连接断开时,由于某种原因,192.168.1.123上的端口2000未被释放。
我发出
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上自动释放?那是正常的吗?我认为这种情况并非总是会发生,因为有时我确实会短暂断开连接,但隧道不会受到影响。