bug:resolv.conf 自动填充搜索和名称服务器查找:永久或临时(每次系统启动时运行。)
推荐的解决方案:resolvconf 包解决了自动填充问题(不要与 resolv.conf 混淆)
-https://www.youtube.com/watch?v=NEyXDdBrw2c
-https://unix.stackexchange.com/q/209760/441088
-https://unix.stackexchange.com/q/362587/441088
我的问题与上一个问题(441088)相同,除了需要 resolv.conf 不再更新(自动填充)搜索和名称服务器
#sudo vi 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 the actual nameservers.
nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1
search autopopulated-isp-router 1.1.1.1
显然,它只是在现有名称服务器下方添加了额外的自动填充名称服务器。 (这有点偷偷摸摸,所以你必须不断检查 resolv.conf 以捕获名称服务器和搜索服务器的自动填充,这些服务器会自动附加到 resolvconf 设置中)
我如何更改 resolv.conf 以防止自动填充名称服务器并使用 isp IP 地址进行搜索?
尝试过:
# service networking stop && service network-manager start
# service networking start && service network-manager stop
网络管理器:
网络和网络管理器都停止了 Wicd,
然后没有 wicd,只有 nmtui 了网络启动然后与网络管理器启动
可在 debian 10.1 和 kali 2020 上复制(任何版本 - 都尝试过)
可使用 dhcp 或静态配置进行复制(是的,能够 ping 本地网关网络路由器和网络上的其他 ip)
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files systemd
group: files systemd
shadow: files
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
答案1
我认为这里的问题在于填充 resolv.conf 文件的 NetworkManager。
禁用 DNS 更新。
1-使用编辑器打开conf文件:
sudo vi /etc/NetworkManager/NetworkManager.conf
2- 将以上内容添加到 [main] 部分:
dns=none
3-重新启动网络管理器:
sudo service network-manager restart
自从你上次编辑以来:
正如我在这里看到的,您正在使用 NetworkManager.service :
A- 如果您的接口使用 dhcp,请检查 DHCP 服务器的 DNS 设置:
cat /var/lib/NetworkManager/*.lease | grep 'domain-name-servers'
您可以直接设置这种情况下所需的 dns 条目并禁用 DHCP 提供它们:
# Edit dhclient configuration file
vi /etc/dhcp/dhclient.conf
# Set the fixed your dns server entries
supersede domain-name-servers 84.200.69.80, 84.200.70.40;
B-很明显,您的 /etc/resolv.conf 显然是由 systemd-resolved 服务管理的。
因此,您可以禁用此服务或让它运行并编辑其配置/etc/systemd/resolved.conf,因此要禁用它:
1- 首先检查当前 systemd-resolved.conf 文件的输出并检查 systemd-resolved 是否正在运行:
sudo cat /run/systemd/resolve/resolv.conf
sudo systemd-resolve status
2-停止/禁用服务:
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service
3-在 NetworkManager 中设置 DNS 处理模式,使其不再由 systemd-resolved 或 NetworKService 管理(编辑 /etc/NetworkManager/NetworkManager.conf ):
[main]
dns=none
4-销毁符号链接 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf :
sudo unlink /etc/resolv.conf
5-重新启动网络管理器:
sudo systemctl restart NetworkManager
6-重新创建 resolv.conf 文件:
sudo touch /etc/resolv.conf
sudo chown root:root /etc/resolv.conf
sudo chmod 644 /etc/resolv.conf
7-手动填充 resolv.conf 文件:
echo 'nameserver 84.200.70.40
nameserver 84.200.69.80
nameserver 192.168.4.1
nameserver 192.168.4.1
nameserver 192.168.1.1
nameserver 1.1.1.1' > /etc/resolv.conf
答案2
我制作了一个脚本来resolv.conf
永久更改文件:
#!/usr/bin/env bash
f="/etc/resolv.conf"
chattr -i "$f"
rm -f "$f"
echo "nameserver 1.1.1.1" >> "$f"
echo "nameserver 8.8.8.8" >> "$f"
chattr +i "$f"
该脚本使文件不可变,因此它不会被更改也无法删除。要删除文件,您需要使用命令:
chattr -i /etc/resolv.conf
然后删除该文件。