![如果路由器未连接到互联网,则无法通过名称进行 SSH](https://linux22.com/image/1508086/%E5%A6%82%E6%9E%9C%E8%B7%AF%E7%94%B1%E5%99%A8%E6%9C%AA%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%BA%92%E8%81%94%E7%BD%91%EF%BC%8C%E5%88%99%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%E5%90%8D%E7%A7%B0%E8%BF%9B%E8%A1%8C%20SSH.png)
我在通过名称通过 ssh 连接时遇到问题。我有 1 台主计算机(Gigabyte)和另外 4 台附加计算机(Odroids)。我在所有计算机上都运行 Ubuntu。我使用路由器将计算机置于网络中,因此当我通过 ssh 连接其中一台 odroid 时,我会执行以下操作:
ssh [email protected]
如果路由器已连接到互联网,我可以通过名称 ssh 连接所有机器。但如果路由器未连接到互联网,则无法 ssh 连接最后一台机器。因此:
ssh [email protected]
不起作用。我有两个路由器都出现这种情况。它们是 Buffalo 路由器。另一方面,我可以通过 IP 地址连接到 odroid4。
ssh [email protected]
如果我使用时发现 IP 地址不正确,它会给我:ssh -vvv [email protected]
debug1: Connecting to odroid4.local [192.168.11.1] port 22.
debug1: connect to address 192.168.11.1 port 22: Connection refused
ssh: connect to host odroid4.local port 22: Connection refused
192.168.11.1
不是任何机器的 IP 地址。我认为我在路由器或计算机上缺少一些配置,但我不知道是什么。
答案1
这ssh -vvv
表明所有请求都被重定向到您的网关(如果192.168.1.1
确实如此)。
您可能使用 DHCP 获取本地 IP 配置。随之而来的是 DNS 服务器配置,它很可能是您的本地网关。它通常充当 DNS 中继,将您的 DNS 请求发送到外部 DNS 服务器。
当您没有互联网连接时,大多数 CPE(客户端设备)都会提供一个强制门户,使您(客户)能够在您尝试使用您喜欢的浏览器访问外部网站时排除互联网连接故障。
为此,CPE 使用 DNS 欺骗将所有请求重定向到自身。对于 CPE 来说,这很正常,即使通常只重定向 http 请求以避免此类问题,也只重定向外部请求。这可能是 Buffalo 方面的缺陷。
要解决该问题,您可以:
- 为自己提供一款漂亮的新型一体式路由器;
- 更便宜的是,在你的局域网中设置你自己的 DNS 服务器来处理你发出的请求;
- 甚至更少,设置一个本地主机文件。
DNS 设置
- 使用您想要的 LAN 名称配置本地区域文件
- 将其用作您的主 DNS 服务器
- 使用网关作为您的第二个 DNS 服务器。
但是,在外部 FQDN 解析的情况下,这可能会使 DNS 请求变慢(最多会多几百毫秒)。
本地 hosts 文件
您可以编辑此文件来注册本地 FQDN。您的系统会在发送 DNS 请求之前查找它,如果找到匹配项,则会使用关联的 IP。
在 Windows 中:C:\Windows\System32\drivers\etc\hosts
在 Unix 系统(包括 Mac OS X)中:/etc/hosts
如果我的回答不能解决您的问题并且您能够提供更多相关信息,请随意评论我的回答(正如您所见,我不得不写很多“可能”。这是您首先可以添加更多信息的地方:))。