将接口更改为静态 IP 后,没有到主机的路由

将接口更改为静态 IP 后,没有到主机的路由

我在我的家庭局域网内安装了一个 Linux(Ubuntu)服务器,最初它自动配置为使用 DHCP 接口。我使用该服务器的主机名从另一台计算机连接到此服务器。一切正常,我的路由器配置为在我的家庭网络内使用 DHCP,并自动为每台计算机分配一个 IP。但是当我使用 SSH 连接到此主机时,它警告我应该接受来自服务器每个新分配 IP 的指纹,这有点烦人。所以我将它配置为使用静态 IP 寻址,编辑文件/etc/network/interfaces如下:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0 iface eth0 inet static

address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1

一切都运行良好,只是我无法使用该服务器的主机名连接到它。执行 ping 操作时,我发现它被路由到由 DHCP 动态分配的最后一个 IP 地址,当然Destination Host is Unreachable。我知道我可以在我的/etc/hosts文件中对其进行硬编码,但我想知道——为什么它与 DHCP 配合良好,而与静态配合不好。显然,我不明白一些事情。提前致谢!

答案1

您的路由器可能充当本地网络的 DNS 服务器,分发有关通过 DHCP 获得地址的主机的信息。或者换句话说,当处理 DHCP 请求时,路由器会动态更新本地 DNS 数据库。DNSMasq 是路由器上执行此操作的常见 DHCP+DNS 服务器。

通过设置静态地址,您实际上是在剥夺路由器响应有关主机的 DNS 查询所需的信息。

如果可能的话,您应该在路由器中设置 DHCP 预留,而不是设置静态地址。如果那不是一个选项,那么您只需要在所有机器上更新主机文件,或者运行本地 DNS 服务器。

答案2

您无法通过主机名连接到服务器,因为您没有静态设置任何 DNS 服务器。这些服务器通常在客户端通过 DHCP 获取地址时提供给客户端,因此目前您没有将 IP 地址解析为名称的机制。您的 DNS 服务器还需要知道主机名和 IP 地址

您需要在/etc/resolv.conf文件中以类似于以下格式提供内部 DNS 服务器

nameserver 192.168.1.1
nameserver 8.8.8.8

答案3

这与 DHCP 无关,但很可能与 DNS 有关。您必须有一个/etc/resolv.conf知道服务器主机名的地址,这样解析才能进行。我认为 DHCP 提供的内容在这里插入了您在分配静态 IP 时缺少(或不同)的内容。

此外,该文件还/etc/nsswitch.conf定义了尝试 hosts 文件、mdns、DNS 等的顺序。它是以“hosts”开头的行。

因此,首先找出主机名到其 IP 地址的解析方式(使用 dhcp),然后继续查看 /etc/resolv.conf 中提到的机器或 /etc/nsswitch.conf 中的应答实体。

相关内容