有没有办法在 ssh 期间抽象 IP 地址?

有没有办法在 ssh 期间抽象 IP 地址?

我有一台位于森林中的服务器。它通过微波链路和 ADSL 链路连接到互联网。因此它有两个不同的静态 IP 地址。现在,如果下大雨,微波链路就会中断,我应该使用速度慢得多的 ADSL 链路。我会不时地 ping 微波 IP 以检查它是否再次启动。但有时,即使微波链路恢复了,我最终还是会使用非常慢的 ADSL 链路。因此,我需要一种以以下方式自动执行此操作的方法。

1.我需要用其他名称抽象出机器的 IP 地址,当我使用 ssh 或 sftp 时,它将轮询两个 IP 并将我连接到最佳 IP。

例如:如果我说 ssh -Y name@server,它应该首先尝试连接到微波链路(如果不能),然后再连接到 ADSL。

2.假设我第一次连接时,微波链路断开,因此它连接到 ADSL,我需要它在再次工作时动态切换到微波链路。这可能吗?

答案1

你应该使用莫什(= Mobile Shell)。它无法执行第 1 点,但可以执行第 2 点:从其网页:

如果您的互联网连接断开,Mosh 会发出警告——但当网络服务恢复时,连接会恢复。

这一切都是自动的,无需人工干预。

因此,您可以通过在快速 IP 上使用 Mosh 同时解决第 1 点和第 2 点,当 Mosh 告诉您快速 IP 上的连接断开时,移动到相邻的终端以在慢速 IP 上启动常规 ssh 会话,同时密切关注 Mosh 终端是否恢复正常运行。

Mosh 的优势远不止这些,比如,在客户端电脑休眠期间依然可以存活、客户端电脑漫游时 IP 会随之发生变化;它可以避免在回显输入的命令时出现网络延迟、允许 Control-C 正常工作等等。

答案2

好吧,如果 IP 是静态的,您肯定知道哪一个属于每个链接。

您可以为同一台机器分配多个名称。

在您的 DNS 记录中,创建一个记录,如microwavehost.domain.com,并将其附加到您的快速 IP。然后为辅助 ADSL IP adslhost.domain.com 创建第二个条目。

现在你可以先尝试

ssh -Y [email protected]
if [ $? -ne 0 ]; then
  echo "WARNING: Using slow ADSL link"
  ssh -Y [email protected]
fi

相关内容