以下是我从命令行调试此问题的方法:
$ dnsmasq --no-daemon --log-queries
Run Code Online (Sandbox Code Playgroud)
将log-queries选项放入配置文件中并将其作为守护进程运行,日志文件中仍然没有显示任何内容。我期待当我这样做时dig example.com,它应该出现。
这是上面命令的输出:
dnsmasq: started, version 2.89 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus no-UBus i18n IDN2 DHCP DHCPv6 no-Lua TFTP conntrack ipset nftset auth cryptohash DNSSEC loop-detect inotify dumpfile
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 8.8.8.8#53
dnsmasq: using nameserver 1.1.1.1#53
dnsmasq: using nameserver 2001:4860:4860::8888#53
dnsmasq: using nameserver 2001:4860:4860::8844#53
dnsmasq: read /etc/hosts - 7 names
Run Code Online (Sandbox Code Playgroud)
Ubuntu版本:23.10
内核6.5.0
dnsmasq版本:2.89
我想dnsmasq在 ubuntu 15.10 上设置上游服务器。我已经阅读了很多关于 dnsmasq 的文档或资源,其中提到了一个名为 的配置文件/etc/dnsmasq.conf,但我找不到它。我试图找出如何dnsmasq在系统启动已经开始,但是我找不到dnsmasq下/etc/init.d,无论是。
那么我应该修改哪个文件来设置上游服务器dnsmasq?
所以,我试图dnsmasq作为仅 PXE 的服务器运行。为此,我试图禁用 dnsmasq 的 DNS 功能。我已经把以下行/etc/dnsmasq.conf:
port=0
Run Code Online (Sandbox Code Playgroud)
但是,在启动时dnsmasq,它会在 中将自己注册为 DNS 服务器/etc/resolv.conf。
这显然是由/etc/init.d/dnsmasq. 该文件包含一些代码,通过lo在$DNSMASQ_EXCEPT. 但是我不知道我应该如何将它放在那里(不编辑文件)。
我尝试将以下行放入/etc/dnsmasq.conf:
except-interface=lo
Run Code Online (Sandbox Code Playgroud)
但这没有帮助。关于如何解决这个问题的任何想法?
更新:我正在运行 Ubuntu Server 16.04.1。
我在我的中启用了缓存dnsmasq,因为它速度很快。
在某些情况下(例如,VPN 关闭),dnsmasq缓存错误的结果。我想要一种快速清理缓存的方法(例如,当我连接到 VPN 时)。重新启动服务可以,但速度很慢(需要几秒钟)。我尝试过发送SIGHUP,它按预期重新加载配置,但不会刷新缓存。
有没有办法dnsmasq在不重新启动的情况下刷新缓存?
我在Ubuntu 18.04 上使用netplan呈现使用的配置NetworkManager:
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
Run Code Online (Sandbox Code Playgroud)
每次重新启动时,都会自动生成以下输出并将其写入 ,从而/etc/resolv.conf破坏了我的dnsmasq配置,因为我无法再解析 Internet 上的域:
# Generated by NetworkManager
nameserver 127.0.0.53
Run Code Online (Sandbox Code Playgroud)
我可以通过简单地注释掉 /etc/resolv.conf 中的名称服务器行来手动修复此问题。在我编写脚本来执行此注释之前,每次重新启动时,我应该了解发生了什么。
这是我的简单/etc/dnsmasq.conf:
port=53
domain-needed
bogus-priv
strict-order
server=/mydomain.net/10.0.0.2
server=/#/8.8.8.8
listen-address=127.0.0.1
bind-interfaces
Run Code Online (Sandbox Code Playgroud)
1)为什么NetworkManager每次重启都会写这个?
2)为什么它会中断dnsmasq,因为严格顺序服务器设置应该将所有其他请求转发到谷歌的 DNS 服务器?当dnsmasq运行时,系统是否看resolv.conf中第一个或dnsmasq.conf后?