タスクバーのNetworkManagerインジケーターを使用して、DNSサーバーを切り替えることがあります。これは以前のバージョンでも問題なく機能し、実際には12.04でも問題なく動作します。ただし、Conkyを使用してDNSアドレスを含むいくつかのシステム情報を表示し、常に127.0.0.1
を表示していることに気付きました。
私はresolv.conf
を見ました。これはこのアドレスを取得する場所であり、確かにそれが常に言っていることです。私は単一の行を持っていますが、手作業でファイルを編集しないように注意してください:
nameserver 127.0.0.1
DNSサーバーアドレスを確認する唯一の方法は、ネットワークマネージャーGUIを開いて情報ページを確認することです。では、この情報は現在どこに保存されていますか?
情報は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インターフェイスからも利用できるはずです。
Ubuntu開発者は、これらの変更を/etc/resolv.conf
に文書化する必要がありますが、そうではありません。
簡単なコマンドのリストを次に示します。
現在のDNSサーバーを表示する
nm-tool | grep DNS
/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
Nmcliを使用すると、必ずしも完全な答えが得られるとは限らないことに注意してください。例えばopenconnect(またはvpnc、おそらく)を使用してVPNを起動し、resolvconfパッケージをインストールしている場合(/etc/resolv.confの自動管理を行うため)、VPNを自動的に挿入できることがわかります。 127.0.0.1より先に/etc/resolv.confにDNS設定を行います。この状況では、単に「nmcli -f IP4 dev list」をチェックするだけでは、真の現在のDNSリストは得られません。このシナリオがあなたに影響を与えるかどうかはわかりませんが、言及する価値があると考えました。