jon*_*sai 34 networking resolv.conf
我需要帮助弄清楚为什么我resolv.conf不断改变这个,导致我无法访问外部互联网而只能访问本地网络:
$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain
Run Code Online (Sandbox Code Playgroud)
我以为我通过摆脱环回接口并在 eth0 接口中添加jontsai 的海报博客/etc/network/interfaces上的说明来修复它。
我试过这样的事情:
$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient
Run Code Online (Sandbox Code Playgroud)
然后事情会暂时起作用,最终 resolv.conf 中的名称服务器将再次恢复。
PS 我也在ubuntuforums上发布了这个。
编辑:除了 NetworkManager 之外,至少还有一个其他程序正在写入resolv.conf,我知道这一点,因为当我刷新 NetworkManager 时,resolv.conf生成的文件有一个注释,上面写着# Generated by NetworkManager,而它不断更改的版本却没有。
所以我正在尝试这个:
while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done
编辑2:
添加文件输出:
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)
没有这样的文件 /etc/NetworkManager/NetworkManager.conf
$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet
[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063
[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false
[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0
[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false
Run Code Online (Sandbox Code Playgroud)
Aze*_*ale 16
您可以对/etc/resolv.conf. 这些添加可能会覆盖自动添加的内容。
首先,安装resolvconf软件包。
然后,按 Alt+F2 并运行gksudo nautilus. 打开/etc/resolvconf/resolv.conf.d/head,如果你想添加到文件的开始; /etc/resolvconf/resolv.conf.d/tail如果要添加到最后,请打开。进行更改,保存/关闭文件,然后运行sudo resolvconf -u以应用更改。
(抱歉,我不记得文件开头或结尾的设置是否具有最高优先级。)
(此答案包含调查正在发生的事情的方法。如果您使用这些方法收集并提供更多信息,我可能会给出实际的解决方案。)
看似自发更新的一个可能触发因素/etc/resolv.conf是您的 DHCP 租约更新。检查您获得 DHCP 租约的时间(这应该出现在系统日志中,我认为在/var/log/syslog)。
您可以使用审计 找出修改文件的内容。启动守护进程 (
sudo service auditd start) 并告诉它监视对该文件的修改:
sudo auditctl -w /etc/resolv.conf -p w
Run Code Online (Sandbox Code Playgroud)
审计日志在/var/log/audit/audit.log. 您将看到文件被修改的时间以及修改它的程序的名称。
如果您安装了该resolvconf软件包,网络管理器可能会踩到它的脚趾。尝试关闭所有网络接口,然后停止网络管理器 ( sudo service network-manager stop),然后重新启动它。
我遇到了完全相同的问题 - 每次重新启动服务器时都会重写 resolv.conf。
这是由DHCP引起的。要将 resolv.conf 设置为我想要的样子,我编辑/etc/dhcp/dhclient.conf并添加了以下内容:
supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";
Run Code Online (Sandbox Code Playgroud)
通过对此进行更改,您实际上可以对您的 resolv.conf 文件进行相当多的控制。
希望能帮助到你。
打开终端并输入
sudo chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
+i 确保文件不会在启动时重置,即使是 root。
要撤消上述操作
sudo chattr -i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
更多
man chattr
Run Code Online (Sandbox Code Playgroud)
小智 4
我通过创建一个名为inresolv.conf的文件来禁用更新disable_make_resolv_conf/etc/dhcp3/dhclient-enter-hooks.d
#!/bin/sh
make_resolv_conf(){
}
Run Code Online (Sandbox Code Playgroud)
它用负责刷新的同名替换标准函数resolv.conf。