什么原因导致反向 SSH 端口转发隧道在启动时无法工作但在午夜准时开始工作?

什么原因导致反向 SSH 端口转发隧道在启动时无法工作但在午夜准时开始工作?

我跟着本指南转发我的 VPS(公共静态 IP)上的端口以访问防火墙后面的远程服务器上的 Nextcloud 安装。它起作用了 - 有点。在任何时间点,远程服务器(安装了 Nextcloud)都能够建立到 VPS 的反向 SSH 隧道,因此可以从 VPS 本地访问。

这是我使用的定制服务:

     [Unit]  
 Description=Keep a tunnel to vps open  
 After=network-online.target

[Service]  
 Type=simple 
 User=autossh 
 Restart=always 
 RestartSec=60 
 ExecStart=/usr/bin/autossh -R *:13000:127.0.0.1:443 -N -o "ExitOnForwardFailure=yes" -o "ServerAliveInterval 15" -o "ServerAliveCountMax 3" autossh@[vps_ip] -p 22

[Install]  
 WantedBy=multi-user.target

但是,转发的端口 443(用于 https 访问)并不总是可以从客户端外部访问。

发生了以下非常奇怪的行为:

  1. 让我们从一切正常开始。自定义服务正在运行,隧道已打开,所有到 [vps_ip]:13000 的流量都正确转发到远程服务器上的端口 443,我可以访问我的 Nextcloud。

  2. 重新启动 VPS 后,隧道将关闭,远程服务器的服务将尝试重新连接,但没有成功。

  3. VPS 完全启动后,一切似乎都恢复正常,服务已连接,隧道已建立,没有任何日志或错误消息表明出现任何问题。但是,当从外部访问时,VPS 上的端口 13000 不再转发到远程服务器上的 443。当直接从 VPS 的 shell 访问时,隧道仍然有效。

这是对以下命令的响应:

sudo service nextcloud-forward status -vvv

nextcloud-forward.service - Keep a tunnel to vps open

     Loaded: loaded (/etc/systemd/system/nextcloud-forward.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-11-15 23:59:52 CET; 36min ago
   Main PID: 7430 (autossh)
      Tasks: 2 (limit: 4620)
     Memory: 1.7M
     CGroup: /system.slice/nextcloud-forward.service
             ├─7430 /usr/lib/autossh/autossh -R *:13000:127.0.0.1:443 -N -o ExitOnForwardFailure=yes -o ServerAliveInterval 15 -o ServerAliveCountMax 3 autossh@[vps_ip] -p 22
             └─7459 /usr/bin/ssh -L 33168:127.0.0.1:33168 -R 33168:127.0.0.1:33169 -R *:13000:127.0.0.1:443 -N -o ExitOnForwardFailure=yes -o ServerAliveInterval 15 -o ServerAliveCountMax 3 -p 22 autossh@[vps_ip]

Nov 15 23:59:52 nextcloud systemd[1]: Started Keep a tunnel to vps open.
Nov 15 23:59:52 nextcloud autossh[7430]: starting ssh (count 1)
Nov 15 23:59:52 nextcloud autossh[7430]: ssh child pid is 7459
  1. 不管多少次重启、重新启动服务(例如自定义隧道服务或 sshd 服务)、强制终止 ssh 进程并重新启动它们、重试不同的端口等似乎都无济于事。据我所知,没有错误,日志中也没有任何异常。

  2. 然后我突然发现,它突然在午夜时分自行重新开始工作。没有更改配置,没有重新启动服务,什么都没有。当再次从外部访问时,隧道突然开始工作。

我已经这样做了至少一个星期,但我不知道发生了什么。如果您有任何想法,我将不胜感激,如果有任何不清楚的地方,请提问。我可以提供必要的日志等。

提前致谢!

系统信息:两台机器都使用 Ubuntu 20.04.1 LTS。VPS 就像其他 VPS 一样,只是便宜的租赁 VPS,远程服务器在 Windows 10 LTSC 主机上的 Virtualbox 中运行。

我尝试在 Stack Overflow 上询问这个问题,但没有得到答案,也许有人可以帮助我?

答案1

无论这种奇怪行为的原因是什么,在 VPS 上从头开始重新安装 Ubuntu 似乎已经解决了这个问题。

相关内容