我在个人电脑上运行 Ubuntu,并且在家里的本地网络上有一个服务器网络。我有一个云服务器、一个软件开发服务器,还有一些其他服务器。
我的服务器有不少依赖 SSH 的服务,并且有几台服务器在几个不同的端口上运行着 OpenSSH 服务。内部服务都通过 DDNS 连接到域。
我所在地区的互联网速度非常快,但带宽有限。让我们通过一个场景来解释我的问题。
假设我有一个 10 GB 的大文件,我想将其从云服务器传输到我的个人计算机,并且我想使用 Ubuntu OpenSSH 客户端通过 SFTP 传输它。假设我的个人计算机当前与服务器连接到同一个本地网络。
我的个人计算机有一些用于连接到此服务器的 SSH 配置文件,但它们指向的是“cloud.mydomain.com:22”而不是“192.168.1.1:22”。客户端是否足够“智能”,知道域指向的是发出请求的同一外部 IP,而是直接路由到内部 IP,或者我是否将双向传输并通过我的互联网连接传输 20GB 的文件,而不仅仅是直接传输 10GB 的文件?
网络描述:
路由器 #1 是提供互联网的路由器。所有端口都转发到路由器 #2。路由器 #2 是一个中继桥,特定端口转发到特定 IP 地址。(2222 指向云服务器 SSH,22 指向开发服务器 SSH,等等)(这样设置,我可以将我的设置移动到新的路由器 #1,然后只需一个设置即可将所有端口转发到路由器 #2。)
云服务器每 5 秒左右更新一次 DDNS。Domain.com 指向路由器 #1,后者又将所有外部流量转发到路由器 #2。根据端口,流量将被路由到端口映射到的任何服务器。
答案1
SSH 客户端解析您域的 DNS 并连接到它收到的 IP。它执行所有其他面向 Internet 的客户端所做的操作。这与“足够聪明”无关。
答案2
不,因为您告诉它连接到外部,而它就会这样做。
如果您有一个本地 DNS 服务器,它会在搜索互联网之前检查来自客户端的本地域请求,那么您可能能够解决这个问题,这可能会起作用。