web-dev-qa-db-ja.com

wlan0がKubuntu 15.04を使用しているDNSサーバーを確認する方法

背景

Wlan0デバイスでインターネットに接続するときに、使用されているDNSサーバーを見つけようとしています。 Kubuntu 15.04を実行しています。

私は周りを検索し、いくつかの解決策を試しましたが、どれも私にとってはうまくいきません。ここに私が試したものがあります:

1. nmcliコマンドを使用する

nmcli dev list | grep DNS

同様の質問に対する答えとして here。

これはOPの答えとしてマークされましたが、私にとっては次の出力が得られます:

エラー: 'dev'コマンド 'list'は無効です。

2. resolv.confの読み取り:

cat /etc/resolv.conf

これは、接続のDNS情報を提供しません。

  1. Nm-toolを使用する

nm-toolがシステムにインストールされていないようです。だからそれは私にとって正しい答えではありません。

  1. Dnsmasqを使用する

Dnsmasqの使用に関するいくつかの答えがあります。しかし、すべての場合において、私はそれを使用するのに十分な答えを理解しておらず、dnsmasqが何であるかを知りません。

質問

コマンドラインまたはGUIを介して、Kubuntu 15.04で接続が使用しているDNSを確認するにはどうすればよいですか?

[編集]

多くの人々が答えを提供してくれたので、この質問を明確に表現することは難しかったようです。明確化の試みは次のとおりです。

私のルーターはインターネット接続を提供する責任があるため、これまでに提供された回答は、単にルーターのアドレスを教えてくれます。しかし、私が本当に念頭に置いていた質問は、インターネットブラウザに「www.google.com」などと入力すると、どのinternetDNSサーバーが使用されますか?

主にどのインターネットDNSサーバーを自分で使用するかを簡単に決定できるため、これを見つけるのは比較的簡単だと思いました。たとえば、接続設定を表示して、DNSに8.8.8.8を使用するように指示できます。DNSは、GoogleのパブリックDNSサーバーです。私の質問は次のとおりです。特定のDNSサーバーを指定せず、割り当てられたものを使用するようにルーターを離れる場合、どのDNSサーバーが使用されているかをどのようにして確認できますか?

2
Brian J Hoskins

Nmcliを使用すると、dnsmasqが構成されているDNSサーバーを確認できます。

nmcli dev show wlan0 | grep -i dns

例は次のとおりです。

$ nmcli dev show wlan0 | grep -i dns
IP4.DNS[1]:                             10.11.12.1
IP4.DNS[2]:                             10.11.13.1
4
mgor

更新:質問の下のコメントで明らかになったように、OPはルーターが使用するDNSサーバーを知りたいと思っています。自動接続を使用する場合、ここに記載されているすべての回答は、ルーターのアドレスを示します。つまり、要求は最初にルーターに送信されます。次に、ルーターには独自の設定があり、ルーターのDNSに送信するDNS要求を転送します。

ルーターでどのDNSサーバーが使用されているかを見つけることは、ルーターの設定にアクセスした場合にのみ可能です。通常、192.168.0.1を介して住宅用ルーターの場合です。

TL; DR:バージョン1-syslogを確認します。バージョン2-nslookupまたはDigを使用してパケットを送信し、パケットの送信先を確認します。より高度で技術的な答えですが、間違いなくもっと楽しく、私の意見では少し信頼性が高いです。

上記の他の回答は素晴らしいもので、99%の時間で機能します。この回答では、nslookupを使用して、いくぶん代替的な、より技術的なソリューションを提供したいと思います。別のより簡単な解決策は、/var/log/syslogをチェックすることです。

syslogメソッド

簡単な方法は、using nameserver/var/log/syslog/文字列をgrepツールで検索することです。

$ Sudo grep 'using nameserver' /var/log/syslog                                                                                                     
Aug  6 02:25:34 ******** dnsmasq[1487]: using nameserver 208.67.220.220#53

tcpdumpおよびnslookupメソッド

これはそれほど単純な方法ではありませんが、おそらくより信頼性の高い方法です。 DNSリクエストの送信先を観察すると、実際のDNSサーバーが何であるかがわかりますので、まさにそれが可能です。 tcpdumpなどのツールがあります。インターネットアダプターによって送信されたパケットを分析するために使用されます。多くの場合、このツールはペンテストで使用されます。 DNSを決定するというささやかな目的のために、2つのことを行う必要があります-同時にtcpdumpを実行し、別のツールnslookup(システムのDNSサーバーを使用してドメイン名を検索するのに実際に役立ちます)を使用します。具体的には、.domain宛先に送信されるパケットを探します。たとえば、Sudo tcpdump -c 50 -i wlan0 > tcpdump-result.txtを実行してワイヤレスアダプターから50パケットをキャプチャし、すぐに別のターミナルタブに移動してnslookup google.comを実行します。便宜上、tcpdump結果をファイルに出力しますtcpdump-result.txt

ここで、grepawkなどのツールに関する知識を少し使用して、.domainに関する必要な情報を除外します。

$ awk '/.domain/ {gsub("my-Host-name","****");print}' tcpdump-result.txt                                                                 
01:49:48.811363 IP ****.local.29258 > 192.168.0.1.domain: 11608+ PTR? 69.0.168.192.in-addr.arpa. (43)
01:49:49.095361 IP ****.local.44184 > google-public-dns.domain: 9560+ A? google.com. (28)
01:49:49.139361 IP google-public-dns.domain > ****.local.44184: 9560 1/0/0 A 216.58.217.46 (44)

ご覧のとおり、私のリクエストは192.168.0.1に送られます。これは私のホームルーターです。したがって、インターネットサービスプロバイダーが割り当てたDNSサーバーを使用していることを意味します。

さて、dnsを変更して、もう一度やり直すとどうなりますか?

$ awk '/.domain/ {gsub("my-hostname","****");print}' tcpdump-result2.txt                                                                
02:05:35.885670 IP ****.local.51056 > resolver2.opendns.com.domain: 2511+ A? google.com. (28)
02:05:36.189665 IP ****.local.5503 > 192.168.0.1.domain: 63991+ PTR? 220.220.67.208.in-addr.arpa. (45)
02:05:36.237664 IP 192.168.0.1.domain > ****.local.5503: 63991 1/0/0 PTR resolver2.opendns.com. (80)
02:05:36.241664 IP ****.local.27776 > 192.168.0.1.domain: 58334+ PTR? 69.0.168.192.in-addr.arpa. (43)

今、私のリクエストはopendnsに送られます!しかし、具体的にはどのIPですか?

ping resolver2.opendns.com

PING resolver2.opendns.com (208.67.220.220) 56(84) bytes of data.
64 bytes from resolver2.opendns.com (208.67.220.220): icmp_seq=1 ttl=57 time=59.9 ms
64 bytes from resolver2.opendns.com (208.67.220.220): icmp_seq=2 ttl=57 time=55.9 ms
^C
--- resolver2.opendns.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 55.999/57.999/59.999/2.000 ms

ご覧のとおり、208.67.220.220に移動します

2

loを除く各ネットワークデバイスのすべてのDNSを表示するには:

for i in /sys/class/net/*; do \
    awk -F/ '! /lo/ {system("nmcli dev show "$(NF)" | grep \"DNS\|DEVICE\"")}' <<< "$i"; \
done

出力例

GENERAL.DEVICE:                         eth0
IP4.DNS[1]:                             192.168.20.1    
0
A.B.

次の2つの方法があります。

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1         **<--Server**
search localdomain

または

$ Dig localhost

; <<>> Dig 9.9.5-3ubuntu0.4-Ubuntu <<>> localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47070
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;localhost.         IN  A

;; ANSWER SECTION:
localhost.      0   IN  A   127.0.0.1

;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)         **<--Server**
;; WHEN: Wed Aug 05 11:30:10 EDT 2015
;; MSG SIZE  rcvd: 54

質問は、「インターネット接続を使用してホスト名をIPに解決するときにどのDNSサーバーが使用されているかを知りたい。つまり、インターネットブラウザーを使用してwww.Amazon.comにアクセスするとき、どのDNSサーバーがそれをipに変換します。

今、答えは:

既存の接続の場合、できません。 DNSアドレス解決が行われ、接続を開く前に終了しました。

DNSクエリの解決に使用されるネームサーバーを確認するには、Dig +trace @$( grep nameserver /etc/resolv.conf| awk '{print $2}' | head -n1 ) Amazon.com

Digdnsutilsパッケージからのものです。

0
waltinator