在不同环境中的许多系统上使用相同的 IP

Dan*_*tor 6 linux ssh hosts hostname known-hosts

我在一个有多个位置的环境中工作,并且在每个位置我们都有相同的 IP 寻址方案,也就是说,我们有许多机器(每个位置一台)共享相同的 IP 地址(尽管主机名不同)。当然,这些位置之间没有通信,也没有 DNS。我通过打开 VPN 隧道依次连接到每个位置。我的工作站是 Linux。

我正在尝试开发一个系统,让我在这种环境中尽可能安全地工作。我想直接使用主机名而不是 IP 地址,因为我们有一个易于记忆的命名约定。到目前为止我遇到的问题是:1) 错误地登录到不同的机器,因为隧道打开到错误的位置,以及 2) ssh 有一个不同的主机,具有相同的 IP,但在 known_hosts 中有不同的主机名,以及拒绝连接。

到目前为止,我正在考虑为每个位置(例如 /etc/hosts.location1)创建一个不同的 /etc/hosts 和 ~/.ssh/known_hosts 文件,并使用位置切换脚本通过复制这些文件来自动切换这些文件通过默认文件(例如cp /etc/hosts.location1 /etc/hosts)为我的目标位置定制的版本。理想情况下,这个脚本最终将与我用来打开不同位置的 VPN 的软件集成。

我的问题是:有没有更好的方法来做到这一点?我错过了 ssh 或 linux 名称解析中的任何功能吗?

非常感谢。

编辑:这是一个生产环境,我正在寻找解决此问题的工作站解决方案。

And*_*inn 1

您提到您通过 VPN 连接到每个站点。每个站点是否可以有一个(或两个)DNS 服务器,它们有自己的站点域(site1.mycorp.com、site2.mycorp.com)并使用诸如绑定视图之类的东西(http://www.zytrax.com/books/dns ) /ch7/view.html)为 VPN 网络的指定主机提供 IP 地址?

这样,您可以为每个站点中的每个主机指定一个唯一的 FQDN(barney.site1.mycorp.comrubble.site2.mycorp.com),并且只有当您通过 VPN 连接到正确的站点并且绑定视图响应时,这些主机才会正确解析。在每个站点中,barney.site1.mycorp.com并且rubble.site2.mycorp.com可能具有相同的 IP 地址。但如果您连接到错误的 VPN,它们将无法从外部解析。

这并不是一个“工作站”解决方案。但是,如果您能够向每个站点(不一定需要成为生产的一部分)添加节点(虚拟机或物理主机),那么这可能是一个解决方案。如果您已经拥有可以轻松修改的生产 DNS,那么您可能已经能够利用现有的视图和命名。