我使用的是 Debian jessie,没有安装网络管理器或 resolvconf,并且使用的是 DHCP。
具有静态 DNS 的 DHCP
首先我尝试编辑:
/etc/network/interfaces
并添加以下内容:
dns-nameservers 8.8.8.8
所以现在接口文件看起来像这样:
allow-hotplug eth0
iface eth0 inet dhcp
dns-nameservers 8.8.8.8
同时拥有 DHCP 和静态 DNS,但重新启动网络服务后不会发生任何变化。
使用 DHCP 时:
ps aux | grep dhcp
dhclient -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
手动编辑
如果我手动编辑 /etc/resolv.conf 并将名称服务器 8.8.8.8 放在那里,重新启动 Networking.service 后,系统 DNS 服务器将更改为 8.8.8.8,但在执行 ifup 后:
sudo ifup eth0
/etc/resolv.conf 再次自动更改为 192.168.1.1。
网络管理器
然后我决定使用网络管理器,我安装了网络管理器,在默认连接中设置 DNS 服务器 IP 并重新连接后,它可以工作,但重新启动系统后,网络管理器会与默认 DNS 服务器(192.168.1.1)创建新连接)并自动连接到此。
我也检查过当该网络可用时自动连接到该网络连接正确,但重新启动后网络管理器再次连接到另一个。
10小时后重置
我以某种方式设法通过更改新的连接配置来解决此问题,现在它不会在每次启动时创建新连接并连接到正确的连接,但是现在大约 10 小时后 DNS 服务器自动更改为 192.168.1.1,我应该重新连接连接或重新启动 NetworkManager.service 以使 DNS 恢复为 8.8.8.8。
所以它不是覆盖 /etc/resolv.cof 的网络管理器
静态配置
面对所有这些之后,我决定采用静态配置。
首先,我卸载了网络管理器,然后将静态配置添加到:
/etc/network/interfaces
像这样的东西:
iface eth0 inet static
address 192.168.1.10
gateway 192.168.1.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8
重新启动networking.service后,这些设置将不适用于系统,并且接口没有IP,因此网络也无法访问。
关闭路由器 DHCP 现在我关闭了路由器的 DHCP,静态配置工作正常,但我需要为其他设备打开 DHCP。
允许
我可以编辑 /etc/resolv.conf 并更改它的权限,这样就没有人可以编辑它......
但我正在寻找一个理由。我想知道为什么这些不起作用,哪个程序覆盖 /etc/resolv.conf 以及设置 DNS 服务器的正确方法是什么。
我在这里缺少什么吗?
答案1
因为默认情况下 jessie 网络是通过 DHCP 配置的
你有多种解决方案
溶胶1:
sudo update-rc.d dhcpcd remove
溶胶2:
sudo nano /etc/dhcpcd.conf
或 /etc/dhcp/dhclient.conf
添加以下命令
nodhcp
并且在文件 /etc/network/interfaces 中必须按以下方式更改行:
iface lo inet loopback
auto eth0
any config .......
杰西的正常配置
编辑 dhcpcd.conf 文件
sudo nano /etc/dhcpcd.conf
并在文件末尾添加
interface eth0
static ip_address=192.168.1.56
#gateway
static routers=192.168.1.210
static domain_name_servers=8.8.8.8
答案2
如果resolvconf
安装了该程序,则不应resolv.conf
在基于 Debian 或 Ubuntu 的系统上手动编辑配置文件,因为它会被系统中的程序动态更改。如果您需要手动定义名称服务器(与静态接口一样),请在/etc/network/interfaces
文件中的接口配置文件中添加如下行:
#Place the line indented within an iface stanza, e.g., right after the gateway line.
dns-nameservers
8.8.8.8
127.0.0.1