web-dev-qa-db-ja.com

Ubuntuで14.04以降に使用しているDNSを知る方法

12.04の同様の質問 へのフォローアップ。)

Ubuntu 12.04より前では、/etc/resolv.confにアクティブなDNSが表示される場合があります。 Ubuntu 12.04では、NetworkManagerはファイルを使用できなくなりました。コマンドラインツールnm-toolを直接参照する必要があります。

興味深いことに、nm-toolは14.04以降ではデフォルトでインストールされなくなりました。 apt-get installを使用してインストールすることはできますが、すべてのUbuntuがすぐに使用できるとは限りません。

したがって、問題は残っています。デフォルトのインストールでは、コマンドラインで使用しているDNSをどのように知っていますか?

14
Koala Yeung

素早い回答

新しいNetworkManagerツールnmcliがデフォルトでインストールされるようになりました。コマンドラインツールは非常に強力ですが、学ぶのが少し難しくなります。私たちの質問に固執すると、短い答えは次のとおりです。

nmcli dev show | grep DNS

または、出力をよりクリーンにするため

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


説明する

時間があれば、上記のジャンボマンブルについて説明できます。

  1. nmcli dev show

    古いnm-toolコマンドに少し似ています。現在のネットワーク情報を詳しく説明します。

    インターフェイス名を追加して、特定のインターフェイスの設定を学習することもできます。たとえば、eth0の情報を学習するには、nmcli dev show eth0を使用できます。

  2. grep DNS

    明らかに、「DNS」というテキストが含まれる行のみをgrepします。

  3. sed 's/\s\s*/\t/g' | cut -f 2

    これは、出力をクリーンアップするためだけです。 cutは列ごとに出力を選択できますが、セパレータとして1文字のみを使用します(nmcliは多くのスペースを使用します)。 sedは、元の出力のスペースをTABに変換します。

30
Koala Yeung

パケット分析は、NetworkManagerまたは使用する他のネットワーク接続ツールに関係なく機能する代替方法です。基本的な考え方は、nslookupを使用してdnsクエリを送信し、2番目の端末でパケットの送信先を確認することです。

そのためには、最初にネットワークに接続する必要があります。そのため、接続が煩雑になることはありません。次のコマンドを実行します。

Sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

代替端末で実行:

nslookup google.com 

tcpdumpからパケットのリストを取得したら、IPアドレスからどこへ行くかを確認します。

例えば、

$ Sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

ご覧のように、私のラップトップeagleは、私の大学のDNS b.resolvers.Level3.net.domainにパケットを送信します。 IPアドレスを確認したい場合は、-nフラグとtcpdumpを使用できます。

例えば:

$ Sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)
4

ネットワーク接続を確認してください:

ls /etc/NetworkManager/system-connections/

構成する接続を選択します。

 Sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

接続名なしで「インターネット」を置き換えます


引き続き使用できますnm-tool

nm-tool | grep DNS

U14.04以降で使用してインストールします

Sudo apt-get install nm-tool

例:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1
2
Maythux

バージョン14.04では、network-managerにバンドルされているため、デフォルトで引き続き利用可能です。それはnetwork-manager(バージョン15.04以降)から削除されており、apt-getからも利用できません。

現在のところ、バージョン15.04では、古いパッケージからnm-toolを手動でダウンロードして抽出できます。次のコマンドを実行します。

まず、作業する一時ディレクトリを作成します。

cd
mkdir APTGET;cd APTGET

次に、古いバージョンをダウンロードしてファイルを抽出します。

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_AMD64.deb'
ar xvf *
tar xvf dat*

新しいディレクトリを作成します。

mkdir ~/bin

file already existsと表示されている場合は、メッセージを無視して続行します)。

ファイルを新しいディレクトリにコピーします。

cp ./usr/bin/nm-tool ~/bin

ホームディレクトリに戻り、一時ディレクトリを削除します。

cd ..
rm -R APTGET

次に、nm-toolのエイリアスを設定します。

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

現在のユーザーは、ターミナルからnm-toolを実行できるはずです。


さらに、これは、使用しているすべての実際のDNSリゾルバーをまだ正確に提供しない可能性があります。

DNSleaktest.com にアクセスすると、完全なレポートを取得できます。 Extended Testをクリックして、完全なレポートを取得します。

1
mchid

nmcli devリスト| grep DNS

次のようなものが出力されます。
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

上記のコマンドは、Ubuntu 16.04より前で動作します
Ubuntu 16.04の場合:
nmcli dev show | grep DNS

1
Komu

実際、NetworkManagerは/etc/resolv.confを使用します。ただし、デフォルト設定では、resolv.confにリストされているDNSサーバーは127.0.0.1です。これは、NetworkManagerが独自の内部DNSサービスを使用するため 技術的な理由がわからないためです 多くの人には関係ありません。 NetworkManagerが内部で使用しているDNSサーバーを確認するためにnmcliを使用する必要があるのはこのためです。

ただし、この動作を無効にして、使用中の実際のDNSサーバーがresolv.confにリストされている古い動作に戻ることもできます。これを行うには、dns=dnsmasq/etc/NetworkManager/NetworkManager.confの行をコメントアウトして再起動します。ほとんどの人にとって、これは実際のDNSサーバーがresolv.confに表示されるという事実以外に違いはないはずです。変更が導入されたコーナーケースの場合、これはすぐに明らかになり、行のコメントを再度解除することでデフォルトの動作に戻すことができます。

0
fkraiem