除了Yamakaja的答案之外,这也是设置本地DNS服务器的方式。
首先,您需要一台要在其上运行DNS服务器的计算机。这可以是您的普通计算机之一(如果它们运行Linux并且在大多数时间都处于运行状态),也可以是Raspberry Pi。这种设备的优点是价格便宜,不需要很多电源并且体积小。
设置DNS服务器
我决定使用dnsmasq
,在Raspberry Pi上设置DNS服务器,这是一个小型DNS服务器工具,非常适合在小型网络中使用。您也可以使用bind
事实上的标准DNS工具,但这对于小型家庭网络来说可能有点强大。
dnsmasq
在基于Debian的系统(例如Raspbian)上使用软件包管理器进行安装,命令为
sudo apt-get install dnsmasq
现在,我假设您已经设置了静态IP地址分配(即,您在问题中提到的IP地址不变)。如果您还没有,它dnsmasq
也可以用作DHCP服务器,但是我还没有这样做。
dnsmasq
从中获取主机名/etc/hosts
。如下编辑该文件:
# IP address Host name
192.168.1.1 router
192.168.1.22 printer
主机名称router
现在已分配给192.168.1.1
,printer
给192.168.1.22
。
现在,您已经设置了自己的DNS服务器,但是网络中的计算机尚未使用它。要使他们使用此服务器,您必须执行一个准备步骤:
使用ip address
(找到)找到您的dnsmasq设备的IP地址192.168.1.42
。打开/etc/dnsmasq.conf
并添加以下行:
listen-address=127.0.0.1
listen-address=192.168.1.42
这告诉dnsmasq
它应该在寻址到请求时127.0.0.1
(即,当其本身想要使用其DNS服务器时)或192.168.1.42
(例如,当其他计算机想要使用其DNS服务器时)侦听对该请求的请求。
使用DNS服务器
您必须告诉网络中的每台计算机(也应该)192.168.1.42
用作DNS服务器。执行此操作的方式取决于您的操作系统。您可以轻松地在Internet上查找您指定的操作系统(只需搜索“在<OS>上更改DNS服务器”,或类似的东西)。
对于Windows 7,您可以按照以下教程进行操作:https : //www.opennicproject.org/configure-your-dns/how-to-change-dns-servers-in-windows-7/。
在系统(Arch Linux)上,我必须将以下行添加到 /etc/resolvconf.conf
name_servers=192.168.1.42
请注意,您必须使用的文件取决于您的网络管理器配置。在要使用DNS的每台计算机上添加DNS服务器IP。
如果设备无法立即运行,则可能必须重新启动设备。
就是这样,您完成了。现在,您/etc/hosts
只需使用为其提供的主机名即可访问dnsmasq服务器中输入的所有设备。
(可选)检查功能
如果要检查DNS解析是否正常工作,请dnsutils
在应使用服务器的系统上安装(Linux)。然后执行
$ dig router
这应该返回这样的东西
; <<>> DiG 9.10.4-P1 <<>> router
;; global options: +cmd
;; Got answer:
...
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;router. IN A
;; ANSWER SECTION:
router. 0 IN A 192.168.1.1
;; Query time: 14 msec
;; SERVER: 192.168.1.42#53(192.168.1.42)
;; WHEN: So Jun 26 10:43:18 CEST 2016
;; MSG SIZE rcvd: 50
它显示您要解析的主机名,解析为的IP地址以及使用的DNS服务器。如您所见,一切都很好。
(可选)指定TLD
如果您不仅要使用router
或printer
还要使用router.home
和访问设备printer.home
,请在您的计算机上添加以下几行/etc/dnsmasq.conf
:
expand-hosts # Tells dnsmasq to add a TLD to each host name
domain=home # The TLD
您可能需要再次重新启动。
资料/进一步阅读
关于dnsmasq
:
关于bind
(如果您对此感兴趣):