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


14

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

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

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

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

回答:


30

素早い回答

新しい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用途MANY SPACE)。sedTABに、元の出力で、空白になります。


7
+1。このユーティリティについて知りませんでしたが、Ubuntu 14.04を実行し、コマンドはnmcli d listです。それ以外に、素晴らしいものがここにあります!
テランス

1
sedには拡張正規表現用の-Eフラグがあり、r+代わりにrr*
-Squidly

1
この回答はどのバージョンに基づいていますか?私のTrustyのnmcliバージョンで0.9.8.8 nmcli dev showは、大きなカーリーエラーメッセージがスローされます。
オリ

5
@Oli nmcli dev showは15.04でnmcliに 属します。なんらかの理由で古いnmcliは不安定だと思われたので。。。現在、nmcliFedoraと同じフラグを使用しています。おそらくsystemdへの切り替えが原因です。この回答は15.04ではなく14.04のために収まるので、私は強く、それをdownvoteに誘惑しています
Sergiy Kolodyazhnyyに

1
上記のコメントをエコーし​​たいのですが、これは15.04では正しいかもしれませんが、質問である14.04では正しくありません。
アレックス

4

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

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

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)

2

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

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

1

バージョン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完全なレポートを取得します。完全なレポートを取得するには、[ 拡張テスト]をクリックします。


1

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

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


1

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より前で機能し
ます。Ubuntu16.04の場合:
nmcli dev show | grep DNS


おそらくnmcli dev show、そうではありませんnmcli dev listか?
ホルム

いくつか掘り下げたところ、Ubuntu 14.04と16.04の間でCLIが変更されたようです。どうやらnmcli dev list14.04で動作しますが、16.04では動作しません。
ホルム

1

Ubuntu 18.04LTSについて誰かが私と同じ質問をしている場合:

network-managerで管理されているすべてのネットワークデバイスをリストします。

networkctl list

特定のデバイスの構成を表示します。

networkctl status eth0

eth0の代わりに、前にリストに表示されているネットワークデバイスの名前を入力する必要があります。DNSエントリがない場合、カードにはネームサーバーが構成されていません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.