刚刚学习网络。
我在 Mint-18 上。使用network-manager
。dnsmasq
已启用。
我希望以特定域名结尾的地址通过私有名称服务器进行解析。
server
当我使用dnsmasq 配置文件的选项添加私有名称服务器时,一切都会失败。我什至无法解析 google.com:
> nslookup google.com
;; connection timed out; no servers could be reache
如果我删除该server
选项并将相同的私有名称服务器添加到顶部\etc\resolve.conf
,重新启动网络管理器,事情就会再次工作,我可以解析私有主机名称。
> nslookup abcprivate.net
Server: nn.nn.nn.nn
Address: nn.nn.nn.nn#53
Non-authoritative answer:
Name: abcprivate.net
Address: mm.mm.mm.mm
所以我知道私有名称服务器是正确的。所以这一定是我配置 dnsmasq 的方式。
这是我的配置文件
>cat /etc/NetworkManager/dnsmasq.d/dnsmasq.conf
server=/abcprivate.net/nn.nn.nn.nn
其中 abcprivate.net 是专用网络的域,nn 是数字。
答案1
事实证明我的设置是正确的,但它们没有被使用。
>ps ax | grep dnsmasq
1273 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
可以看出,它没有使用conf 文件...我做了一些其他测试以确保情况确实如此。
我最终确实解决了这个问题,但我是通过以下方式做到的:
- 禁用 Network-manager dnsmasq 插件:注释掉
dns
其中的行/etc/NetworkManager/NetworkManager.conf
- 移动
/etc/NetworkManager/dnsmasq.d/dnsmasq.conf
到/etc/dnsmasq.conf
- 将捕获所有名称服务器添加到 /etc/dnsmasq.conf(请参阅下面的文件列表)
- 将 dnsmasq 地址添加到 /etc/resolve.conf 的顶部(通过更改
/etc/resolvconf/resolv.conf.d/head
文件...请参阅下面的文件列表) - 启动 dnsmasq,使其不会读取resolve.conf:(
dnsmasq -d -R -q
我想在屏幕上记录查询,以便我可以看到发生了什么)。 - 一、我一切正常,我将 dnsmasq 封装在一个 systemD 单元文件中
$ cat /etc/dnsmasq.conf
cache-size=1000
listen-address=127.0.1.1
server=8.8.8.8
server=/abcprivate.net/nn.nn.nn.nn
cache-size=1000
$ cat /etc/resolvconf/resolv.conf.d/head
nameserver 127.0.1.1
$ cat /etc/systemd/system/dnsmasq.service
[Unit]
Description=SystemD - Dnsmasq is a Domain Name System (DNS) forwarder
Requires=network-manager.service
[Service]
Type=simple
ExecStart=/usr/sbin/dnsmasq -d -q -R
答案2
我相信dnsmasq
可以做你想做的事,但听起来你也遇到了一些问题dnsmasq.conf
您可能需要在以下位置取消注释此行dnsmasq.conf
:
resolv-file=/etc/dnsmasq.resolv
然后你需要一个包含其他名称服务器的文件/etc/dnsmasq.resolv
。我有这个:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 4.3.2.1
此外,我认为您需要类似以下的行/etc/dnsmasq.conf
:
server=/.intranet/10.0.0.3
server=/0.0.10.in-addr.arpa/10.0.0.3
local=/.intranet/
第一个设置“.intranet”域的 IP 地址服务器。我原来的 DSL 调制解调器在内部使用了 10.0.0.0/24 地址,所以这就是我今天得到的。第二行允许您从 IP 地址查找主机名。第三行告诉dnsmasq
您在“.intranet”域中查找完全限定名称/etc/hosts
,或者从dnsmasq
DHCP 中注册的客户端查找完全限定名称。 10.0.0.3是运行的机器的IP地址dnsmasq
。
总结一下:设置将其他名称转发到的dnsmasq.resolv
IP 地址。和dnsmasq
设置确定特定域的 DNS 服务器的 IP 地址,以及从何处获取该域中名称的地址。server
local