我目前正在尝试建立一个临时网络,用于在上课时传递笔记。我的想法是在我的笔记本电脑上运行一个聊天服务器(我正在使用 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.8
DNS
设置当地址不是本地时使用的一个或多个服务器。这些是开放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 范围
DHCP
:192.168.0.20
到192.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 服务器才是最佳选择。显然,无需在此详细说明如何执行此操作,因为这是一个复杂的过程,您似乎有能力执行。