オンラインで表示される情報のほとんどは/etc/resolv.conf
を編集するように指示されていますが、そこで行った変更はすべて上書きされます。
$ cat /etc/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 nameserver 127.0.1.1
127.0.1.1はdnsmasq
のローカルインスタンスのようです。 dnsmasq
のドキュメントには、/etc/resolv.conf
の編集が記載されています。カスタムネームサーバーを/etc/resolv.conf.d/base
に配置しようとしましたが、sudo resolvconf -u
に表示されませんでした。 。
参考までに、接続ごとにDNSを変更したくないので、特に指定がない限り、すべての接続に使用するデフォルトのDNS設定を設定したいと思います。
更新:
私はこの質問に自分で答えました: https://unix.stackexchange.com/a/163506/67024
次の理由から、これが最善の解決策だと思います。
- 機能します。
- 必要な変更は最小限であり、
- それは、バイパスするのではなく、dnsmasqのDNSキャッシュと連携して機能します。
コメント
回答
DNSネームサーバーを上書きする場合は、base
resolv.conf.d
の下のファイル。
例
$ sudo vim /etc/resolvconf/resolv.conf.d/base
次に、ネームサーバーリストを次のように配置します。つまり:
nameserver 8.8.8.8 nameserver 8.8.4.4
最後にresolvconf
を更新します:
$ sudo resolvconf -u
resolvconf
のマニュアルページを見ると、/etc/resolvconf/resolv.conf.d/
の下にあるさまざまなファイルが説明されています。
/etc/resolvconf/resolv.conf.d/base File containing basic resolver information. The lines in this file are included in the resolver configuration file even when no interfaces are configured. /etc/resolvconf/resolv.conf.d/head File to be prepended to the dynamically generated resolver configuration file. Normally this is just a comment line. /etc/resolvconf/resolv.conf.d/tail File to be appended to the dynamically generated resolver configuration file. To append nothing, make this an empty file. This file is a good place to put a resolver options line if one is needed, e.g., options inet6
head
ファイルの先頭に警告がありますが:
この警告は、これらのファイルが作成されたときに、最終的に結果のresolv.conf
ファイルに反映されるようにするためのものです。作るために使用されます。したがって、上記のbase
ファイルについて説明したnameserver
行をファイルも。
参照
コメント
- Ubuntu14.04-ネームサーバーを
base
に配置してresolvconf -u
を実行すると、ネームサーバーは not はresolv.confに入れません-ネームサーバーをhead
に入れると、 - Ubuntu14.04-コメントアウトする必要がありました
/run/resolvconf/interface/NetworkManager
- タイプ
nslookup google.com
で設定された構成で、リストの最初のIPは、そうでない場合は新しいネームサーバーである必要があります、間違ったことをしました - Ubuntu 16.04:
/etc/resolvconf/resolv.conf.d/head
に追加した場合にのみ機能し、。nslookup google.com
で確認済み。 - 最初に、
resolvconf
をインストールしておく必要があります。sudo apt-get install resolvconf
を実行してインストールできます。
回答
この質問にも興味があり、@ simで提案されたソリューションを試しました。
テストするために、
nameserver 8.8.8.8
を/etc/resolvconf/resolv.conf.d/base
および
nameserver 8.8.4.4
in /etc/resolvconf/resolv.conf.d/head
次に、ネットワークを再起動しました
sudo service network-manager restart
その結果、/etc/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 nameserver 8.8.4.4 nameserver 127.0.1.1
およびnm-tool
は、dnsserverが
DNS: 208.67.222.222 DNS: 208.67.220.220
これは私のルーターによって提供されるものです。一方、アドレスを掘ると、
;; Query time: 28 msec ;; SERVER: 8.8.4.4#53(8.8.4.4)
私が正しければ、これらすべてから
- のみであると結論付けられます。 「head」部分はresolvonfによって読み取られます。「base」部分はdnsmasqによって何らかの形で制御されます。
- dhcpによって提供されるサーバーに関係なく、dnsserverは実際には8.8.4.4に強制されますが、提供されるキャッシュは失われます。 dnsmasqによって、リクエストは常に8.8.4.4に送信されるため、
- dnsmasqは引き続きdhcpによって提供されるdnsserverのみを使用しています。
全体としては機能しますが、私は求められた意図した結果だとは思わないでください。私が思うより近い解決策は次のとおりです。編集
sudo vim /etc/dhcp/dhclient.conf
次に追加
supersede domain-name-servers 8.8.8.8;
結果は次のとおりです:resolv.conf 127.0.0.1のみが含まれています。これは、dnsmasqキャッシュが呼び出され、nm-toolが
DNS: 8.8.8.8
と表示することを意味します。つまり、検索された名前がキャッシュにない場合、次に、dhcpによって提供されるサーバーではなく8.8.8.8で要求されます。
別の(おそらくより良い)オプションは、「supersede」の代わりに「prepend」を使用することです。名前が8.8.8.8で解決されない場合、リクエストは他のサーバーにフォールバックします。実際、nm-toolは
DNS: 8.8.8.8 DNS: 208.67.222.222 DNS: 208.67.220.220
コメント
- ハッキングするよりもはるかに良い答えだと言っていますNS構成。特に、dhcpが提供するサーバーの前にサーバーを追加するオプション。新しい問題を作成せずに、問題を解決する完璧なバランスのようです!
- ‘注目に値するnm-toolはnmcliに置き換えられました
回答
dnsmasq
が使用するネームサーバーを変更できることがわかりました/etc/dnsmasq.conf
に次の行を追加します。
server=8.8.8.8 server=8.8.4.4
ファイルはdnsmasqパッケージによってインストールされるためですが、Ubuntuにはdnsmasq-baseしか付属していません。 sudo apt-get install dnsmasq
を実行し、/etc/dnsmasq.conf
を編集してから、sudo service dnsmasq restart
とsudo service network-manager restart
。
sudo tail -n 200 /var/log/syslog
を実行してsyslogをチェックし、dnsmasq
が指定したネームサーバー:
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53 Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53
コメント
- これが最高としてマークされるのには理由があります答え…確かにそうだから!どうもありがとう!あなたが言及したすべてのステップの後、すべてがスムーズに機能するためにネットワークの再起動が必要になるかもしれないことを付け加えておきます(それは私のためでした….
sudo service network-manager restart
) - Ubuntu 14.04サーバーでは、コールドブートの約半分の時間でURLを使用したインターネット接続は行われませんが、IPアドレスは機能します。私はそれを修正しようとして無駄に多くの時間を費やし、何ヶ月もあきらめて、そしてこの解決策を見つけました。私もそれが最善の答えだと思います。
- ‘はdnsmasqをインストールする必要があることに興味をそそられます。これにより、通常の状況でDNSが実際に修正されましたが、VPN構成が完全に壊れました(VPN接続が失敗しました…)
- Centosにはそのようなファイルはありません
- ubuntu 16:
dnsmasq
を使用したプロシージャからの変更は、/etc/resolv.conf
に伝播されません。その結果、hatnslookupは元の定義済みローカルホスト127.0.0.1を引き続き使用します。言及されているsyslogを確認できますが、
回答
静的IPの状況については、Ubuntuサーバーガイドに次のように記載されています。ファイル/ etc / network / interfacesを次のように変更します。
iface eth0 inet static address 192.168.3.3 netmask 255.255.255.0 gateway 192.168.3.1 dns-search example.com dns-nameservers 192.168.3.45 192.168.8.10
必要なIPに192.168.3.45192.168.8.10を変更します。 、8.8.8.8のように
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf ページ38
コメント
- これは確かに正しいように見えますが、resolv.confを再生成するにはどうすればよいですか?!
- @JoelBerger
ifdown eth0; ifup eth0
。 - Centosに/ etc / network / interfacesがありません
回答
-
「ネットワーク接続」を検索
-
開く
-
次に、WiFiまたはイーサネット、あるいは使用しているものを選択し、[編集]をクリックします。これが表示されます:
-
タブでipv4を選択します
-
メソッドでのみアドレスを選択
-
以下にDNS名を入力し、保存します
-
完了
コメント
- I ‘ dはネットワーク接続ごとにこれを行う必要があります。以前は、すべての接続のデフォルトを変更できました。これは、私がここで実行しようとしていたことです。
- 愛しています!このUI設定は、sudoとvimの混乱から私のお尻を救いました:’(
- Mintの使用(Ubuntu 14.04)-しかし、KDEでもこれを見ました-理由は、GUIネットワークマネージャーでDNSサーバーを設定しても’端末で使用されるDNS設定には影響しません
- ベストアンサーimho。Ubuntu14.04では2つの外部を取得しました’ホームネットワーク内のクライアントを認識しないDNSのIPアドレス。’自動(DHCP)’は既存のリストにルーターのIPアドレスを追加しました’。wlan0を介したワイヤレス接続の場合、’は機能しませんでしたが、’自動(DHCP)アドレスのメソッドのみ’ 外部アドレスをルーターIPに置き換えすると、それも機能しました。
sudo service network-manager restart
で変更を適用し、少し待ってから、nmcli d list | grep 'DNS\|IP-IFACE'
で確認します。そして、名前で内部クライアントにpingを実行します。 - これが正解です
回答
まだ言及されていない迅速で汚い回避策は、編集直後にresolv.conf
ファイルに不変フラグを設定することです。
$ sudo nano /etc/resolv.conf
これを追加して保存します:
nameserver 8.8.8.8
次に:
$ sudo chattr +i /etc/resolv.conf
それでうまくいくはずです。私も自分のシステムでこれを行います。
コメント
- ソリューションにchattrが含まれる場合は常に、’は実際には解決策ではありません。
- これは、何らかの理由で一時的にDNSを変更する必要があり、’構成を変更したくない。永続的な解決策として、’お勧めしません。
- “迅速で汚れた回避策”
- これは汚れていません’プログラム汚れていることがよくわかっているため、ローカル構成が破壊されます。
回答
私の問題は少し異なっていました、ルーターのDNSサーバーを上書きしたかった。 Ubuntuから次のリンクを見つけました: https://wiki.ubuntu.com/OverrideDNSServers
次のように表示されます: DHCPサーバーから提供されたDNS設定を上書きし、
/etc/dhcp3/dhclient.conf
を開いて、次の行を追加します。
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;
<dns_ip_address*>
アイテムを適切なコンテンツに置き換えます。
コメント
- これが私の問題を解決した答えです。
- 完璧です。変更を有効にするには、sudoサービスネットワークを再起動する必要があることを追加するだけです。
- ‘その
dhcp3
フォルダー? Xubuntu 17.10を使用していますが、/etc/dhcp
に移動しましたか? - @PlasmaBinturong私の場合は
/etc/dhcp/dhclient.conf
でしたDebianとUbuntuの最新バージョン。
回答
dns-nameservers XXX.XXX.XXX.X
/etc/networking/interfaces
ファイルに追加します。
コメント
- 反対票を投じるときはコメントを残してください。これは、38ページのマニュアルに記載されている方法です。
- 前述のマニュアルには、すべてのIPが1行で表示されています。この答えは、行を追加することを示唆しているようです。そして、なぜ最後の数字は1 X幅しかないのですか?反対票を集めたのは、ほとんどが非常に非公式で不確実な短いチャットスタイルの文章だったと思います。@ Zook
回答
何かが足りないかもしれませんが、 https://help.ubuntu.com/14.04/serverguide/network-configuration.html の設定手順に従ってください。以下を更新します。プロキシを実行していません。ファイアウォールとローカルDNSの背後にあるマシンだけです(例ではGoogleを示していますが、必要なものに設定してください)。
nano /etc/network/interfaces
デフォルト:
# This file... # and how to activate... # The loopback... auto local iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
更新:
# This file... # and how to activate... # The loopback... auto local iface lo inet loopback # The primary network interface #iface eth0 inet dhcp iface eth0 inet static address x.x.x.x netmask 255.255.255.0 gateway x.x.x.x #nameservers # you may not need dns-search # I use it because I"m running this on a Windows network # so its useful to have # dns-search x.y dns-nameservers 4.4.4.4 8.8.8.8
可能であれば、再起動します。
回答
ここでの回答のいくつかは問題なく機能します。しかし、手動で実行する必要があるという事実に満足していませんでした。 「適切な」DNS
を設定するための構成ファイル ady はDHCP
をNetworkManager
で受信しています。
少し調べてみると、/etc/resolv.conf
ファイルが実際にはリンクであり、/run/systemd/resolve/stub-resolv.conf
。いくつかの実験の結果、/run/systemd/resolve/
ディレクトリにresolv.conf
という名前の別のファイルが含まれているようです。このファイルにはすでに
。したがって、/etc/
の構成ファイルを手動で上書き/作成する代わりに、/etc/resolv.conf
を再リンクして
ファイルですべて問題ないはずです:
# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
これでネットワークからでも設定を編集できるようになりますGnomeのマネージャー。 🙂
これが古いubuntuで機能するかどうかはわかりませんが、Ubuntu17.10では機能します。
コメント
-
systemd-resolve --flush-cache
を実行すると、元のリンクファイルが切断されたようです。上記の回答を復元します。元の機能
回答
5月6日編集2016
/etc/Network-Manager/system-connections/
ディレクトリのシステム接続のすべての設定を更新するスクリプトを作成しました。個々の接続を編集するために使用するGUIは、そのディレクトリ内の特定のファイルを編集します。スクリプトはすべてのファイルを更新します。dnsがgrepで設定されていないユーザーを検索し、awkで設定します。
これらのファイルにアクセスするにはsudo
アクセスが必要なため、このスクリプトをsudo
で実行してから、ネットワークマネージャーを再起動します
#!/bin/bash # Author: Serg Kolo # Date: May 6, 2015 # Description: this script checks all settings for connections in # /etc/NetworkManager/system-connections/ , and if there"s no custom # dns set , this script sets it; # NOTE: run sudo service network-manager restart after running this script set -x for file in /etc/NetworkManager/system-connections/* ; do grep "dns=208.67.220.220;" "$file" || ( awk "{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220. 220;\nignore-auto-dns=true"}}" "$file" > .tmpfile && ( cat .tmpfile > "$file") ) done
実行中のスクリプト:
元の投稿ここの一部のユーザーは、DNSが何らかの形でdnsmasq
によって制御されていると指摘しました。それは確かに真実です。 /etc/resolvconf/resolv.conf.d
headまたはbody
をどのように変更しても、やや小さな問題に直面しました。 / div>、私のコンピュータは実際にはドメイン名によってインターンされたアクセスにアクセスできませんでした-IPアドレスでのみ動作します。
私がしたことは、/etc/NetworkManager/NetworkManager.conf
ファイルを編集することです。元々はdns=dnsmasq
と表示されていましたが、dns=208.67.222.222
に変更しました。このように、nm-tool
は208.67.222.222について言及していませんが、IPアドレスだけでなく、ドメイン名も使用できました。
これが私の方法です。 NetworkManager.conf
ファイルは次のようになります:
[main] plugins=ifupdown,keyfile,ofono #dns=dnsmasq dns=208.67.222.222 [ifupdown] managed=false
注: 私の問題とこの解決策の詳細については、 askubuntu.com への投稿を参照してください。
UPDATE#1
本日大学から帰宅したところ、自宅のWi-Fiに接続できないことがわかりました。そして、[main]
のdns=
は実際にはプラグインの行であることが判明したため、dns=dnsmasq
は、実際にはdnsmasqプラグインをNetworkManagerに追加しているようです。
それで、私のソリューションは、私が期待していたようには機能しませんでした。マンページからの抜粋:
dns=plugin1,plugin2, ... List DNS plugin names separated by ",".
DNSプラグインは、ローカルキャッシングネームサーバー機能を提供するために使用されます(DNSクエリを高速化します)そしてそれを使用するアプリケーションにDNSデータをプッシュします。
したがって、dns=208.67.222.222
基本的に、NetworkManagerがそのプラグインを使用できないようにした可能性があります。そうしないとローカルDNSサーバーが使用されます(明らかに機能しません)。
回答
2つのメソッド
メソッド1
使用するDNSサーバーは、resolv.conf.d
iv id = “57ec694751の下にあるhead
ファイルを更新することで変更できます。 “>
次に実行
$ sudo resolvconf -u
上記により、一般的なresolv.conf
ファイルが生成されます/etc
ディレクトリにあります。すべての解決リクエストは、上記のネームサーバーに送信されます。 解決済み。
ただし、これには影響があります。 resolvconf
を使用して1.1.1.1
にアドレス解決を直接クエリすると、dnsmasqによって提供されるキャッシュの機能が失われます。すべてのリクエストは1.1.1.1
方法2
に送信されます
上記を実行したくない場合は、DNS解決にdnsmasqを使用してくださいこの回答。回答はここで簡単に説明されています。
/etc/dnsmasq.conf
ファイルに次のコンテンツを追加します。 。
server = 1.1.1.1
次に、dnsmasqサービスを再起動します
$ sudo systemctl restart dnsmasq.service
問題なく動作します。解決済み。
回答
DNSを変更する簡単な方法:
$ sudo nano /etc/network/interfaces
問題が発生した場合は、nano
:
$ sudo apt-get install nano -y
次に..
- これを見つける:
dns-nameservers
- 見つからない場合は、そこに入力してください
- 次のように入力しました:
dns-nameservers 199.85.126.10 199.85.127.10
これが最善の方法だといいのですが、ちなみにVPSではこのようにしました。
回答
ルート:
- コメント
dns=dnsmasq
on/etc/NetworkManager/NetworkManager.conf
-
/etc/dhcp/dhclient.conf
の最後にsupersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;
を追加しますdiv> -
sudo service network-manager restart
以下により、上記の変更が行われます。
$ sudo sed -i "s/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/" \ /etc/NetworkManager/NetworkManager.conf $ echo "supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;" | \ sudo tee --append /etc/dhcp/dhclient.conf $ sudo service network-manager restart
7/10秒待って再起動プロセスを終了し、「nslookupnist.gov」で構成を確認します。 Ubuntu LTS14.04でうまく機能します。
回答
注:ほとんどの回答と同様に、これはNetworkManagerの使用を前提としています。ただし、他のほとんどの回答とは異なり、resolvconf
、dhclient
などの使用を想定していません。引き継ぐ可能性があることに注意してください。ただし(更新を参照)。
この質問のビュー数を考えると、この 8文字ソリューションはまだ投稿されていません:man NetworkManager.conf
によると、
dns:[…]なし:NetworkManagerはresolv.confを変更しません。これはrc-managerが管理されていないことを意味します
したがって追加
iv id = /etc/NetworkManager/NetworkManager.conf
の[main]
セクションにある “5c2d009f1c”>
次に、NetworkManagerを再起動すると、
はもうありません。
rc-manager=unmanaged
の設定はdns=none
と同等である必要があることに注意してください、およびその設定rc-manager=symlink
と、/etc/resolv.conf
をシンブとして持つolicリンクの方が良いかもしれません(上記のマンページを読んでください)。
更新:
NetworkManagerが/etc/resolv.conf
の上書きを停止した後、私は考えました。 dhcpcd
は、起動時に/etc/resolv.conf
を役に立たない空のファイルに置き換えていました。 dhcpcd.conf
のマンページが役に立ちました。dhcpcd.conf
nohook resolv.conf
を追加するだけで十分です。 (私のものは/etc/dhcpcd.conf
にあります)。
回答
「特定のインストール済みアプリケーションがこのファイルを管理しているためです。そのアプリケーションをアンインストールするか、そのアプリケーションから直接目的のオプションを設定できます。
同じ状況の私の場合(Linux centos7最小サーバー) # Generated by NetworkManager
はresolv.conf
ファイルの先頭にあるため、このオプションを変更する最善の方法は
nmtui
コマンド。このツールでネームサーバーを編集できます。このユーティリティからnetworkmanagerのオプションを変更すると、再起動後に/etc/resolv.conf
に自動的に適用されます。詳細はこちらです。
回答
何もありませんすべてインターネット上で彼はNordVPNのCLIユーティリティは、VPNに接続して接続を解除するたびに、/etc/resolv.conf
を上書きし続けたためです。 chattr +i
を上書きすることさえありました。これは非常に面倒でした!!
私にとってうまくいったのは、 resolvconfを完全に無効にすることでした!
/etc/resolvconf.conf
を編集して、これを唯一のエントリにします:
resolv_conf=NO
これにより、、つまり/etc/resolv.conf
が変更されることはありません。次に、sudo chattr +i /etc/resolv.conf
を適切に測定します。
ArchLinuxでテスト済み。
回答
Centos 7で、NetworkManagerを使用して、私が見つけた最もクリーンで永続的な実用的なソリューションは、nmcliを使用して必要な値を設定するNetworkManagerスクリプトを作成することです。
eg
権限755と次の内容で/etc/NetworkManager/dispatcher.d/mydns.sh
を作成します:
#!/usr/bin/sh if [ $1 == "enp0s11" -a $2 == "up" ] then echo "Setting my DNS ($1 is $2)" | logger # disable default DNS nmcli device mod enp0s11 ipv4.ignore-auto-dns yes # Substitute our own DNS, in the desired order nmcli device mod enp0s11 ipv4.dns "10.0.1.101 10.0.1.1" fi
再起動せずにテストするには:
systemctl restart NetworkManager.service cat /etc/resolv.conf
YMMVですが、これが/etc/resolv.confを許可する唯一の方法です。不要な値で上書きされることなく、再起動を「存続」させます。
/etc/NetworkManager/NetworkManager.conf
にdns=none
を追加することです(以下の私の回答の詳細を参照してください)。