本地 DNS 服务器

本地 DNS 服务器

我目前正在尝试建立一个临时网络,用于在上课时传递笔记。我的想法是在我的笔记本电脑上运行一个聊天服务器(我正在使用 prosody,它已启动并正在运行),这样我们就可以共享信息。

我还在笔记本电脑上设置了 BIND DNS 服务器,这样我的朋友就可以使用我的主机名登录,而不必手动设置他们的帐户指向我的 IP 地址。

在这方面我有两个不同的问题。1) 我真的不知道如何让他们的电脑使用我的笔记本电脑作为他们的 DNS 服务器。我也应该安装 DHCP 服务器吗?2) 我的电脑拒绝使用我自己的 DNS 服务器。我认为这是因为 networkmanager 运行的 dnsmasq。我可以通过编辑 /etc/hosts 来解决这个问题,但我确实想在本地使用我的服务器。

我正在运行 16.04。

对于后代:关于第 2 点,我只需转到 NetworkManagers 配置文件并删除包含 dnsmasq 的行。否则 dnsmasq 会拒绝使用本地主机上的 dns 服务器。

此外,我设置了我的 ad-hoc 网络来为我手动设置 IP 地址,因为自动设置对我来说根本不起作用。所以我使用 NetworkManager 为我提供了一个静态 IP,然后我的所有客户端都可以正常使用来自 dnsmasq 的 DHCP。

答案1

您可以使用 来执行此操作dnsmasq

Dnsmasq 接受 DNS 查询,然后从小型本地缓存中应答查询,或将其转发到真实的递归 DNS 服务器。它会加载 /etc/hosts 的内容,以便可以解析未出现在全局 DNS 中的本地主机名,并应答 DHCP 配置主机的 DNS 查询。

安装dnsmasq只是使用 apt-get 的一个示例。

sudo apt-get install dnsmasq

将 dnsmasq 设置为 DNS DHCP

首先查看文件/etc/dnsmasq.conf。列出的行是我从默认值更改的行。只需取消注释并根据需要进行修改即可。(从行首删除“#”)。

sudo nano /etc/dnsmasq.conf
domain-needed
bogus-priv
no-resolv
no-poll
server=/example.com/192.168.0.5
server=8.8.8.8
server=208.67.220.220
local=/example.com/
address=/doubleclick.net/127.0.0.1
no-hosts
addn-hosts=/etc/dnsmasq_static_hosts.conf
expand-hosts
domain=example.com
dhcp-range=192.168.0.20,192.168.0.50,72h  
dhcp-host=mylaptop,192.168.0.199,36h
dhcp-option=option:router,192.168.0.1
dhcp-option=option:ntp-server,192.168.0.5
dhcp-option=19,0 # ip-forwarding off
dhcp-option=44,192.168.0.5 # set netbios-over-TCP/IP aka WINS
dhcp-option=45,192.168.0.5 # netbios datagram distribution server
dhcp-option=46,8           # netbios node type

这些线条能为您做什么。

  • 需要域这告诉dnsmasq您永远不要将短名称传递给上游 DNS 服务器。如果名称不在本地/etc/hosts文件中,则将返回“未找到”。

  • bogus-priv所有未找到的反向 IP(192.168.xx)查找/etc/hosts将返回为“没有这样的域”,并且不会转发到上游服务器。

  • 无解决不要阅读resolv.conf以查找查找 DNS 的服务器。

  • 无民意调查不轮询resolv.conf更改

  • 服务器=8.8.8.8DNS设置当地址不是本地时使用的一个或多个服务器。这些是开放DNS服务器。

  • 本地=/example.com//etc/hosts我们的本地域,这些域中的查询由或静态主机文件来回答。

  • 地址=/doubleclick.net/127.0.0.1使用此强制指定域的地址。例如,阻止广告doubleclck.net强制localhost

  • 无主机此选项停止dnsmasq使用本地/etc/hosts文件作为查找源。

  • addn-hosts=/etc/dnsmasq_static_hosts.conf强制dnsmasq使用此文件进行查找。其格式与 相同/etc/hosts

  • 扩展主机因此,我们可以通过我们的主域查看我们的本地主机,而不必在我们的/etc/hosts文件中重复指定域。

  • 领域这是您的本地域名。它将告诉DHCP服务器要为哪个主机提供 IP 地址。

  • dhcp 范围这是将提供服务的 IP 范围DHCP192.168.0.20192.168.0.50,租约时间为 72 小时。租约时间是该 IP 将链接到主机的时间长度。

  • dhcp 主机=mylaptop,192.168.0.199,36h任何声称自己是的机器都会hostname = ‘mylaptop’获得此IP地址

  • dhcp 选项=选项:路由器,192.168.0.1当主机IP通过请求地址时DHCP,也会告诉它要使用的网关。

  • dhcp 选项 = 选项:ntp 服务器,192.168.0.5当主机通过请求 IP 地址时,DHCP也会告诉它NTP要使用什么。

您可以在文件中/etc/dnsmasq_static_hosts.conf以与 hosts 文件相同的格式添加具有静态 IP 地址的本地计算机列表。这也是创建别名或 CNAME 记录的简单方法。

192.168.0.8  mail mail.example.com
192.168.0.9  smtp smtp.example.com
192.168.0.120 mythtvbox mythtvbox.example.com

启动和停止服务

sudo service dnsmasq start
sudo service dnsmasq stop
sudo service dnsmasq restart

还有一件事要做。终止DHCP本地网络上的所有其他服务器。您的DHCP/DNS服务器必须只有一个。

答案2

设置本地 DNS 服务器似乎需要做很多工作,而且对于您的问题来说有点儿过分。创建 DHCP 服务器也是如此。这两种方法可能都有效,但您愿意为此投入多少时间?

我认为最简单、最干净的方法是让每个用户在其本地 /etc/host 文件中添加一行:

主机名 IP_地址

然后,练习结束后,可以删除或注释掉该行。

根据您的反馈,听起来建立一个完全由您控制的私有 LAN 并拥有自己的 DHCP 和 DNS 服务器才是最佳选择。显然,无需在此详细说明如何执行此操作,因为这是一个复杂的过程,您似乎有能力执行。

相关内容