我得到了迷你版的文件linux
,可以直接启动到firefox
.它可以完成它应该做的所有事情,只是我没有互联网连接。
我们的网络中有 3 个 DNS 服务器,全部正常工作。我也可以 ping 通他们。但是当我尝试这样做时ping google.de
,wget google.de
我得到了一个bad address
错误。
nslookup google.de
由于某种原因起作用。
我跟踪问题到我的启动系统上的内容与我放入文件中resolv.conf
的内容不一样。resolv.conf
.iso
我尝试了解创建和修改resolv.conf
.我不太确定我是否掌握了全部内容,但我绝对没有在那里找到我的解决方案。
因此,作为最后的努力,我尝试resolv.conf
使用使文件不可变
:~# chattr +i /etc/resolv.conf
令我惊讶的是,当再次重建和启动时,我的文件被重命名为resolv.conf~
,取而代之的是一直困扰着我的同一个标准文件。
文件内容让我相信它从网络本身获取信息。当在没有互联网访问的 Virtualbox 中启动时.iso
,我的文件将保持原样。
我尝试通过删除文件的一部分来更改/etc/dhcp/dhclient.conf
为不从网络获取信息。domain-name-server
domain-name-search
request
不幸的是没有工作。
我没有安装 NetworkManager。该iso基于Ubuntu 14.04。
可能缺少重要信息。我很乐意提供它。
更新:
我想我找到了可以清除的文件resolv.conf
。
好像是/usr/share/udhcpc/default.script
#!/bin/sh
# udhcpc script edited by Tim Riker <[email protected]>
[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
RESOLV_CONF="/etc/resolv.conf"
[ - n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"
case "$1" in
deconfig)
/bin/ifconfig $interface 0.0.0.0
for i in /etc/ipdown.d/*; do
[ -e $i ] && . $i $interface
done
;;
renew|bound)
/bin/ifconfig $interface $ip $BROADCAST $NETMASK
if [ -n "$router" ] ; then
echo "deleting routers"
while route del default gw 0.0.0.0 dev $interface ; do
:
done
metric=0
for i in $router ; do
route add default gw $i dev $interface metric $((metric++))
done
fi
echo -n > $RESOLV_CONF # Start ----------------
[ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
for i in $dns ; do
echo adding dns $i
echo nameserver $i >> $RESOLV_CONF
done
for i in /etc/ipup.d/*; do
[ -e $i ] && . $i $interface $ip $dns
done # End ------------------
;;
esac
exit 0
这是计划的一部分udhcpc
。一个小型 dhcp 客户端,它是busybox
将进一步调查。
更新2和解决方案:
我注释掉了该部分(#Start 到 #End),这似乎覆盖了文件/etc/resolv.conf
,果然如此。这就是罪魁祸首。所以一个晦涩的脚本造成了所有这些麻烦。
我改变了问题来反映,实际上需要知道什么来解决我的问题,这样对于有同样问题的人来说会更容易找到,所以我可以接受答案。
感谢您在这里帮助解决问题。
答案1
您不应手动更新 DHCP
resolv.conf
,因为所有更改都将被本地 DHCP 服务器提供的数据覆盖。如果您希望它是静态的,请运行sudo dpkg-reconfigure resolvconf
并对动态更新回答“否”。如果您想在其中添加新条目,请编辑/etc/resolvconf/resolv.conf.d/base
并运行sudo resolvconf -u
,它将附加您的条目和 DHCP 服务器的条目。尝试编辑您的条目
/etc/network/interfaces
并在那里添加您的条目,例如auto eth0 iface eth0 inet dhcp dns-search google.com dns-nameservers dnsserverip
然后重新启动/etc/init.d/networking restart
或sudo ifdown -a
和sudo ifup -a
答案2
Ubuntu 16.04
如果服务器实例的网络接口由 DHCP 控制,则/etc/resolv.conf
每当网络服务重新启动时 dhclient 程序都会覆盖您的文件。
/etc/dhcp/dhclient.conf
您可以通过编辑文件并添加“取代”语句来解决问题域名,域名搜索和域名服务器如下:
supersede domain-name "local.com";
supersede domain-search "local.com";
supersede domain-name-servers 192.168.56.103;
在这种特殊情况下,名称服务器位于“192.168.56.103”,域名为“local.com”
请注意,每行均以分号结尾,并且域名用双引号引起来。
答案3
我也遇到了这个。评论domain-name-server
也没有解决我的问题。
另外,我没有使用resolvconf
,只是简单的/etc/resolv.conf
。
我没有尝试使用chattr +i
锁定,resolv.conf
因为它看起来太老套了。另外,我希望 Puppet 能够resolv.conf
在必要时进行修改。
这最佳解决方案我发现覆盖了使用其记录的挂钩的默认行为dhclient
。
/etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
使用以下内容创建一个新文件:
#!/bin/sh
make_resolv_conf() {
:
}
然后使文件可执行:
chmod +x /etc/dhcp/dhclient-enter-hooks.d/nodnsupdate
现在,当 dhclient 运行时(无论是重新启动还是手动运行sudo ifdown -a ; sudo ifup -a
),它都会加载此脚本nodnsupdate
。该脚本覆盖了一个make_resolv_conf()
通常会覆盖的内部函数resolv.conf
,而不执行任何操作。
这对我在 Ubuntu 12.04 上有用。
答案4
我的 OVH 的 ubuntu 18.04 没有附带该/etc/network/interface
文件。它使用 netplan 来管理 ips 和名称服务器。文件:/etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
dhcp4: true
match:
macaddress: fa:16:3e:d8:f7:7b
set-name: ens3
version: 2
所以我按照它说的做了并创建了文件: /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
# network: {config: disabled}
network:
ethernets:
ens3:
dhcp4: true
match:
macaddress: fa:16:3e:d8:f7:7b
set-name: ens3
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
search: [mydomain.com]
version: 2
然后我应用了设置netplan apply
,重新启动,旧的设置仍然回来了。然后我检查ls -la /etc/resolv.conf
并发现它软链接到:
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
。
所以我删除了该文件,并创建了一个新文件。
rm -f /etc/resolv.conf
{ echo "nameserver 1.1.1.1";
echo "nameserver 1.0.0.1;
echo "search mydomain.com"; } > /etc/resolv.conf
chattr +i /etc/resolv.conf
reboot
重新启动后一切正常,我的文件仍然完好无损且未链接。chattr +i /etc/resolv.conf
如果是软链接就不要这样做。首先将其删除。