我的域设置为使用动态 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 操作printer
,phone
甚至可能fridge
无需考虑完全限定的域名...
答案4
在我看来,您似乎应该注册 DYNDNS 或类似的东西。
如果你真的想使用/etc/hosts,你必须监控你的IP。一旦发生变化:
- 更改 /etc/hosts 中的条目
- 重新加载主机缓存
- 持续监控
更新
如果您正在使用,dhcpcd
则可以使用脚本的“-c”选项来更改 /etc/hosts-entry,然后重新加载主机缓存。
这取决于您的 dhcp 客户端的功能。