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
を起動すると、ファイルがそのまま保持されます。
ファイルのrequest
部分から/etc/dhcp/dhclient.conf
とdomain-name-server
を削除して、ネットから情報を取得しないようにdomain-name-search
を変更してみました。
残念ながら動作しませんでした。
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
プログラムの一部です。 busybox
の一部である小さなdhcpクライアント
さらに調査します。
UPDATE2とソリューション:
私は一部をコメントアウトしました(#Startから#End)。これは/etc/resolv.conf
ファイルを上書きするようで、確かに十分です。それが犯人だった。したがって、あいまいなスクリプトがこの問題をすべて引き起こしました。
問題を解決するために実際に何を知る必要があるかを反映するように質問を変更しました。これにより、同じ問題を持つ人々が見つけやすくなり、答えを受け入れることができます。
ここで物事を理解する上で助けてくれてありがとう。
1)resolv.conf
を手動で更新しないでください。ローカルDHCPサーバーが提供するデータによってすべての変更が上書きされます。静的にしたい場合は、Sudo dpkg-reconfigure resolvconf
を実行し、動的更新に対して「いいえ」と答えます。そこで新しいエントリを追加したい場合は、/etc/resolvconf/resolv.conf.d/base
を編集してSudo resolvconf -u
を実行すると、エントリとDHCPサーバーのエントリが追加されます。
2)/ 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
を再起動します
3)システムで dhcp を使用しています。これは非常に小さなDHCPクライアントプログラムです。 udhcpクライアントはDHCPサーバーとリースをネゴシエートし、リースが取得または失われたときにスクリプトのセットを通知します。あなたはそれの使用法について読むことができます ここ または単にあなたがしたようにこのスクリプトを編集してください。
Ubuntu 16.04
サーバーインスタンスのネットワークインターフェースがDHCPによって制御されている場合、ネットワークサービスが再起動されるたびに、dhclientプログラムは/etc/resolv.conf
ファイルを上書きします。
この問題を解決するには、/etc/dhcp/dhclient.conf
ファイルを編集し、domain-name、domain-searchおよびdomain-nameの「supersede」ステートメントを追加します。 -serversは次のとおりです。
supersede domain-name "local.com";
supersede domain-search "local.com";
supersede domain-name-servers 192.168.56.103;
この特定のケースでは、ネームサーバーは「192.168.56.103」にあり、ドメイン名は「local.com」です。
各行はセミコロンで終了し、ドメイン名は二重引用符で囲まれていることに注意してください。
私もこれに遭遇しました。 _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
。このスクリプトは、通常_resolv.conf
_を上書きするmake_resolv_conf()
という内部関数をオーバーライドし、代わりに何もしません。
これは私にとってUbuntu 12.04で機能しました。
resolv.conf
のDNS関連の変更を永続的にするには、dhclient.conf
という名前のDHCP構成ファイルを変更する必要があります。このファイルは/etc/dhcp/dhclient.conf
にあります。
ファイルを編集用に開きます(Sudoを使用することを忘れないでください)。次のような行が表示されます。
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
上記の「#」を削除して、必要なドメイン名またはドメイン名サーバーを使用します。それを保存。 DNS関連の変更は永続的です。
クレジットは次の場所に移動します https://itsfoss.com/resolvconf-permanent-ubuntu/
このディレクトリに移動します:
cd /etc/resolvconf/resolv.conf.d
Headという名前のファイルを開き、そこにDNS IPまたは名前を入力します。 tailという名前のファイルを開き、そこにドメインを配置します。リブート。
Ubuntu 18.04ではNetworkManagerを使用します。 「resolv.conf」ファイルを削除して、NetworkManagerにファイルを生成させる必要があります。
ターミナルでファイルを削除するには、Sudo rm -f /etc/resolv.conf
;これによりファイルが削除されます。
システムを再起動すると、NetworkManagerがresolv.confファイルを生成します。
以下のコマンドを使用して、resolv.conf
または再起動後に上書きされないファイル:
chattr -V +i filename e.g chattr -V +i /etc/resolv.conf
変更を元に戻すには、以下のコマンドを使用します。
chattr -i filename - to re-enable insert to the file
chattr
(属性の変更)は、特定の属性をLinuxシステムのファイルに設定/設定解除するために使用されるコマンドラインLinuxユーティリティであり、たとえ次のようにログインしていても、重要なファイルやフォルダーが誤って削除または変更されるのを防ぎます。 rootユーザー。
Azure VMでは/etc/resolv.conf
は直接編集できません。
DNSエントリをネットワーク構成ファイルに追加してみてください/etc/sysconfig/network-scripts/ifcfg-eth0
などは以下のようになります。
DOMAIN=example.com
DNS1=10.*.*.*
DNS2=10.*.*.*
DNS3=10.*.*.*
ファイルを保存した後、ネットワークサービスを再起動します。構成がresolve.confにも追加されることがわかります。