有没有办法/etc/hosts
根据每个用户定义主机别名(如),即在文件中/home/user/.hosts
?
我的主要目标是通过 rsync 在我的小型局域网中的机器之间轻松共享主机别名。由于没有机器可以始终可靠地连接,因此 DNS 服务器不是一个选择(对吗?)。
谢谢。
答案1
更好的解决方案是安装 Avahi 和 libnss-mdns,然后使用HOSTNAME.local
地址。
这些名称不是针对每个用户的,但可以解决您所述的目标,即为 LAN 上的所有机器提供通用名称。
答案2
看https://github.com/figiel/hosts找到一种方法来准确完成您所要求的操作。
这是一个小型库,通过 LD_PRELOAD 加载,并覆盖 gethostbyname() 和程序用于 DNS 解析的几个相关函数。对我来说效果很好。我发现的唯一问题是 Chrome 网络浏览器不使用本机 DNS 解析,而是实现自己的 DNS 客户端。要解决这个问题,您需要禁用 Chrome 的 DNS 客户端。
答案3
Linux glibc 实现无法做到这一点。
但是你可以用 nss 库来扩展它。这很容易编写,因为你可以从 nss_files 目录中删除 libc 的相关部分
http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2
例如
然而,这将是一件相当奇怪的非标准的事情。
答案4
如果你有两台机器,它们大部分时间都在运行,那么你可以在每台机器上安装 BIND,并让它们成为 DNS 服务器。或者使用以下其中一台(http://www.marvell.com/products/embedded_processors/developer/kirkwood/sheevaplug.jsp)。
使用 BIND 来提供始终在线的 DNS。