我在各种上下文中遇到 DNS 解析问题,这些问题似乎可以追溯到我的网络配置。
我运行刚刚dnsmasq-base
安装dnsmasq
上的两个Linux安装(Lubuntu 12.04和12.10)。我没有对 configure 做任何特别的事情dnsmasq
,但我认为我之前所做的一些其他更改可能会导致升级时配置不正确。
运行12.04台机器“A”的工作配置/etc/resolv.conf
使用127.0.1.1(在/etc/hosts
设置为$HOSTNAME
)在机“B”,其中的某些应用,如OpenVPN的经验DNS解析问题,/etc/resolv.conf
设置为192.168.1.1,这是我的网关知识产权。仅某些应用程序受到影响。例如,网络浏览工作得很好。
知道这种差异是否是 DNS 解析问题的原因,以及为什么“B”的行为不同?
编辑:
'A' 和 'B' 都在运行dnsmasq
,都使用 DHCP 来获取 DNS 配置,而我只使用 dnsmasq 进行 DNS。
没有/etc/dnsmasq.conf
文件。我知道这在运行时是正常的dnsmasq-base
。
/etc/resolvconf
两台机器上的内容似乎相同。没有无关/丢失的文件。
抱歉,我不能更具体地说明问题的性质。“DNS 解析问题”是我与 VPN 提供商的技术支持讨论的终点。
我想作为描述OpenVPN的配置更新DNS的服务器在这里。这似乎有效,但resolvconf
将名称服务器(以及搜索域)添加到现有名称服务器列表中。我怎样才能让它把东西附加到最后(即给这些设置较低的优先级)?
无论我通过 DHCP 获得什么,我都想使用某些 DNS 服务器。我正在尝试配置 dhclient 以忽略这些,但我似乎无法让它工作。
根据本文的建议,我supersede domain-name-servers 8.8.8.8, 8.8.4.4;
在我的/etc/dhcp/dhclient.conf
文件中添加了节。我还尝试了来自 superuser.com 的这些答案,domain-name-servers
并domain-search
从request
指令中删除了值。这两者,单独应用以及一起应用,似乎都没有效果。运行sudo dhclient -r
然后sudo dhclient
,我仍然在以下条目中找到以下条目/etc/resolvconf/run/interfaces/enp2s0.dhclient
:
domain lan
nameserver 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
哪个提示resolvconf
放入nameserver 192.168.1.1
我的/etc/resolv.conf
文件。
我仔细检查了我是否没有遗漏任何分号或类似的语法元素。我怎样才能让我的配置工作?我不想删除 resolvconf,因为它在我使用企业 VPN 时管理我的名称服务器中的更改并且它做得很好。看起来 dhclient 是这里的违规方。
/etc/dhcp/dhclient.conf
为了清楚起见,这是我目前删除的默认评论:
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, host-name,
dhcp6.name-servers, dhcp6.domain-search, …
Run Code Online (Sandbox Code Playgroud) 我使用 Lubuntu 17.04,当我连接到新网络时,NetworkManager 服务(子系统?)在 Lubuntu 17.04 上执行一些配置操作。其中之一是(重新)将/etc/resolv.conf
文件设置为:
# Generated by NetworkManager
search some-local-domain-here
nameserver 127.0.1.1
Run Code Online (Sandbox Code Playgroud)
至少这是我在使用 DHCP 时得到的。有一个dnsmasq
侦听本地主机的实例(下面提供了有关它的更多信息。)
现在,在某些网络上,并且非常一致地,在这种情况下无法解析名称;但是如果我用nameserver
从 DHCP 租约 ( /var/lib/NetworkManager/dhclient-blah-blah.wlan0.lease
)获得的实际名称服务器地址替换该行- 解析工作正常。
问题:
附加信息:
本地DNS服务器是一个dnsmasq
实例,命令行如下:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --clear-on-reload --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
Run Code Online (Sandbox Code Playgroud)
配置目录/etc/NetworkManager/dnsmasq.d
只有一个文件,其内容是:
# Tell any system-wide dnsmasq instance to make sure to bind to interfaces
# …
Run Code Online (Sandbox Code Playgroud) 当我运行 nslookup、dig、host、ping 等命令时,我想知道哪些 DNS 服务器有效。
一般的答案是cat /etc/resolv.conf
,或者查看 NetworkManager,但这只会显示我通常使用的服务器列表。当我连接到 VPN 时,它不会向我显示任何推送给我的 DNS 服务器。
有没有办法获取 nslookup、dig、host、ping 等命令将尝试使用的 DNS 服务器的有序列表?
其手册页中对resolveconf的描述告诉我们:“resolvconf 包包含一个用于运行时名称服务器信息的简单数据库......”。
手册页中清楚的是如何向该数据库添加或删除信息。
但是,如何查询呢?.
我目前正在从事一个需要进行一些 DNS 故障排除的项目,但是我对美妙的网络世界还很陌生,并且对从哪里开始有点茫然。我的具体问题可能属于 RaspberryPi StackExchange,因此我将避免交叉发布。只是在这里寻找信息。
寻找信息,我被引导到resolv.conf(5)
文件resolvconf(8)
,systemd-resolve(1)
, 和avahi
似乎是的野兽。
我的带有 Raspbian Buster 的 Raspi 似乎avahi-daemon
正在运行。我的 Ubuntu 18.04.4 LTS 有systemd-resolved
AND avahi-daemon
。并resolvconf(8)
协调两个(手册页仅在Ubuntu)?何时/etc/resolv.conf
使用/忽略?
在 Ubuntu 上:
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about …
Run Code Online (Sandbox Code Playgroud) 当使用“resolvconf -u”运行时,我试图让 resolvconf 在 /etc/resolv.conf 中添加两个额外的名称服务器。我的 /etc/resolvconf.conf 文件如下:
# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details
resolv_conf=/etc/resolv.conf
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
name_servers=1.1.1.1 1.0.0.1
# Mirror the Debian package defaults for the below resolvers
# so that resolvconf integrates seemlessly.
dnsmasq_resolv=/var/run/dnsmasq/resolv.conf
pdnsd_conf=/etc/pdnsd.conf
unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf
Run Code Online (Sandbox Code Playgroud)
当我运行命令“resolvconf -u”时出现问题,这是我得到的输出:
/sbin/resolvconf: 7: /etc/resolvconf.conf: 1.0.0.1: not found
/sbin/resolvconf: 7: /etc/resolvconf.conf: 1.0.0.1: not found
/sbin/resolvconf: 7: /etc/resolvconf.conf: 1.0.0.1: not …
Run Code Online (Sandbox Code Playgroud) 我最近遇到了一个明显的 DNS 解析问题,我在此处记录了该问题,这促使我进一步调查 /etc/resolv.conf。
在我的 Linux Mint 机器上,这是一个指向 /run/systemd/resolve/stub-resolv.conf 的符号链接,其内容为:
nameserver 127.0.0.53
options edns0 trust-ad
Run Code Online (Sandbox Code Playgroud)
该文件实际上包含更多注释行,建议管理员不要更改其内容(我最终必须这样做才能解决我原来的问题)。
经过一番研究后,我想我明白了现代 Linux 系统使用了一个新的resolveconf
软件包,尽管非常令人不安的是,sudo apt changelog resolvconf
它表明最新版本 1.82 是不稳定的。
我的理解是 127.0.0.53 正在将 DNS 请求重定向到resolveconf,后者将执行必要的查找。 有人可以确认一下吗?
这篇文章声称可以使用备用 DNS 服务器创建一个文件,然后通过sudo resolvconf -u
更新 /etc/resolv.conf。嗯,在 1.82 版本中这个命令不存在。man resolvconf
显示最接近的是,resolvectl
但页面没有显示任何此类 -u 选项,也没有提及建议的基本文件。 事情又发生了变化吗?还是那篇文章中的评论根本就是错误的?
我的临时快捷方式是删除符号链接/etc/resolv.conf
并创建一个具有相同名称和我选择的 DNS 服务器的文件,但我认为这完全使resolveconf 包变得无用,并可能产生其他负面影响。因此,我在完成我需要的操作后立即恢复我的黑客行为。与此同时,我正在寻求进一步的澄清,我希望有人能在这里阐明一些观点。
我不太了解网络……但我花了很多时间阅读它。
在我的列表中,/etc/resolv.conf
我列出了 3 nameservers
. 我知道只有在第一个名称出现故障或超时时才使用第二个名称。
当第一个无法解决时,有没有办法让它使用第二个?
这是在我的 Centos 工作站上。我没有运行名称服务器。
我使用 resolvconf 进行名称服务器管理,因为我的 OpenVPN 需要它。但是,我注意到它生成的名称服务器信息并不是我想要的:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 173.31.45.181
nameserver 192.168.1.1
nameserver 8.8.8.8
search lan 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
当我没有连接到 VPN 时,这里的每个指令都是不受欢迎的,除了nameserver 8.8.8.8
. 我怎么知道为什么 resolvconf 会放置一个特定的条目?有没有办法辨别,即什么程序想要nameserver 192.168.1.1
在那里?我试过了,man resolvconf
但它没有提供答案。
resolvconf ×11
dns ×10
openvpn ×3
resolv.conf ×3
debian ×2
dnsmasq ×2
arch-linux ×1
avahi ×1
centos ×1
dhclient ×1
dhcp ×1
linux ×1
networking ×1
ubuntu ×1
vpn ×1