web-dev-qa-db-ja.com

DNSサーバーアドレスはresolv.confに保存されなくなりました。今はどこですか?

タスクバーのNetworkManagerインジケーターを使用して、DNSサーバーを切り替えることがあります。これは以前のバージョンでも問題なく機能し、実際には12.04でも問題なく動作します。ただし、Conkyを使用してDNSアドレスを含むいくつかのシステム情報を表示し、常に127.0.0.1を表示していることに気付きました。

私はresolv.confを見ました。これはこのアドレスを取得する場所であり、確かにそれが常に言っていることです。私は単一の行を持っていますが、手作業でファイルを編集しないように注意してください:

nameserver 127.0.0.1

DNSサーバーアドレスを確認する唯一の方法は、ネットワークマネージャーGUIを開いて情報ページを確認することです。では、この情報は現在どこに保存されていますか?

14
Marty Fried

情報はNetwork Managerによって内部的に管理されます。付属のnmcliツールを使用して、コマンドラインでこの情報を取得できます。

次のコマンドを使用して、特定のネットワークインターフェイスのNetwork Managerの情報を取得できます。

nmcli dev list iface eth0

eth0を、接続しているインターフェイスに置き換えます)。出力には、インターフェイスおよびそのインターフェイスで現在アクティブな接続に関する情報が含まれます。

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

この出力から目的の情報を抽出するのはそれほど難しくないはずです。

nmcliの出力に依存しない、このデータにアクセスするプログラムによる方法が必要な場合、この情報はNetwork ManagerのD-Busインターフェイスからも利用できるはずです。

17

Ubuntu開発者は、これらの変更を/etc/resolv.confに文書化する必要がありますが、そうではありません。

簡単なコマンドのリストを次に示します。

  1. 現在のDNSサーバーを表示する

    nm-tool | grep DNS
    
  2. /etc/dhcp/dhclient.confで静的DNSサーバーを定義します。次の行を追加し、ローカルリゾルバーを再起動します。

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    コマンドプロンプトから:

    invoke-rc.d network-manager restart
    
10
cmcginty

Nmcliを使用すると、必ずしも完全な答えが得られるとは限らないことに注意してください。例えばopenconnect(またはvpnc、おそらく)を使用してVPNを起動し、resolvconfパッケージをインストールしている場合(/etc/resolv.confの自動管理を行うため)、VPNを自動的に挿入できることがわかります。 127.0.0.1より先に/etc/resolv.confにDNS設定を行います。この状況では、単に「nmcli -f IP4 dev list」をチェックするだけでは、真の現在のDNSリストは得られません。このシナリオがあなたに影響を与えるかどうかはわかりませんが、言及する価値があると考えました。

4
agd