使用 /etc/hosts 创建域名别名

使用 /etc/hosts 创建域名别名

我的域设置为使用动态 DNS 指向 LAN 的外部 IP,因为我的外部 IP 地址经常更改。但是,我想为此主机创建一个别名,这样我就可以使用home.所以我将以下内容附加到我的/etc/hosts

example.com home

不过,它似乎并不喜欢这个域名。如果我将其更改为IP:

0.0.0.0 home

然后它就可以工作了,但是这当然违背了动态 DNS 的目的!

这可能吗?

答案1

该文件/etc/hosts仅包含 IP 地址和主机名。您无法通过此方法以您想要的方式为字符串“home”起别名。

如果您运行自己的 DNS 服务器,则可以添加一条CNAME记录来home.example.com为 建立别名domain.example,但否则您就不走运了。

您可以做的最好的事情是使用相同的 DNS 客户端来更新完全限定名称。

答案2

如前所述,其目的不是为名称到 IP 查找/etc/hosts提供别名 ( ) 功能。CNAME在设置适当的 DNS 服务器并配置时,CNAME肯定会有一种始终准确的方法来解析home的 IP example.com,但它比简单的别名更复杂一些。

更改本身可以很容易地自动化到脚本中的一行:

sudo sed -i "s/.* home/$(dig +short domain.com|tail -1) home/" /etc/hosts

如果您已经有检测 IP 更改的方法,则可以轻松地将其附加到该过程中。否则,x可以使用简单的 cron 作业来设置仅在每个周期安排一次覆盖的强力方法。

参考:

答案3

处理您所描述的情况的最简单方法是将您的 DNS 搜索域设置为domain.com

另外,创建一个 DNS 记录,使其home.domain.com指向domain.com.

您的家用路由器应该允许您设置 DHCP 搜索域。大多数移动设备也允许这样做。

然后你就可以直接:

ping home

它应该 ping 通home.domain.com

设置搜索域的确切方式会因设备而异,但几乎每个设备都允许您设置搜索域...

那么您不必将自己限制为home...您也将进行 ping 操作printerphone甚至可能fridge无需考虑完全限定的域名...

答案4

在我看来,您似乎应该注册 DYNDNS 或类似的东西。

如果你真的想使用/etc/hosts,你必须监控你的IP。一旦发生变化:

  • 更改 /etc/hosts 中的条目
  • 重新加载主机缓存
  • 持续监控

更新 如果您正在使用,dhcpcd则可以使用脚本的“-c”选项来更改 /etc/hosts-entry,然后重新加载主机缓存。

这取决于您的 dhcp 客户端的功能。

相关内容