( 12.04の同様の質問 へのフォローアップ。)
Ubuntu 12.04より前では、/etc/resolv.conf
にアクティブなDNSが表示される場合があります。 Ubuntu 12.04では、NetworkManagerはファイルを使用できなくなりました。コマンドラインツールnm-tool
を直接参照する必要があります。
興味深いことに、nm-tool
は14.04以降ではデフォルトでインストールされなくなりました。 apt-get install
を使用してインストールすることはできますが、すべてのUbuntuがすぐに使用できるとは限りません。
したがって、問題は残っています。デフォルトのインストールでは、コマンドラインで使用しているDNSをどのように知っていますか?
新しいNetworkManagerツールnmcli
がデフォルトでインストールされるようになりました。コマンドラインツールは非常に強力ですが、学ぶのが少し難しくなります。私たちの質問に固執すると、短い答えは次のとおりです。
nmcli dev show | grep DNS
または、出力をよりクリーンにするため
nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2
時間があれば、上記のジャンボマンブルについて説明できます。
nmcli dev show
古いnm-tool
コマンドに少し似ています。現在のネットワーク情報を詳しく説明します。
インターフェイス名を追加して、特定のインターフェイスの設定を学習することもできます。たとえば、eth0
の情報を学習するには、nmcli dev show eth0
を使用できます。
grep DNS
明らかに、「DNS」というテキストが含まれる行のみをgrepします。
sed 's/\s\s*/\t/g' | cut -f 2
これは、出力をクリーンアップするためだけです。 cut
は列ごとに出力を選択できますが、セパレータとして1文字のみを使用します(nmcli
は多くのスペースを使用します)。 sed
は、元の出力のスペースをTABに変換します。
パケット分析は、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)
ネットワーク接続を確認してください:
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
バージョン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をクリックして、完全なレポートを取得します。
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
実際、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
に表示されるという事実以外に違いはないはずです。変更が導入されたコーナーケースの場合、これはすぐに明らかになり、行のコメントを再度解除することでデフォルトの動作に戻すことができます。