背景
Wlan0デバイスでインターネットに接続するときに、使用されているDNSサーバーを見つけようとしています。 Kubuntu 15.04を実行しています。
私は周りを検索し、いくつかの解決策を試しましたが、どれも私にとってはうまくいきません。ここに私が試したものがあります:
1. nmcliコマンドを使用する
nmcli dev list | grep DNS
同様の質問に対する答えとして here。
これはOPの答えとしてマークされましたが、私にとっては次の出力が得られます:
エラー: 'dev'コマンド 'list'は無効です。
2. resolv.confの読み取り:
cat /etc/resolv.conf
これは、接続のDNS情報を提供しません。
nm-toolがシステムにインストールされていないようです。だからそれは私にとって正しい答えではありません。
Dnsmasqの使用に関するいくつかの答えがあります。しかし、すべての場合において、私はそれを使用するのに十分な答えを理解しておらず、dnsmasqが何であるかを知りません。
質問
コマンドラインまたはGUIを介して、Kubuntu 15.04で接続が使用しているDNSを確認するにはどうすればよいですか?
多くの人々が答えを提供してくれたので、この質問を明確に表現することは難しかったようです。明確化の試みは次のとおりです。
私のルーターはインターネット接続を提供する責任があるため、これまでに提供された回答は、単にルーターのアドレスを教えてくれます。しかし、私が本当に念頭に置いていた質問は、インターネットブラウザに「www.google.com」などと入力すると、どのinternetDNSサーバーが使用されますか?
主にどのインターネットDNSサーバーを自分で使用するかを簡単に決定できるため、これを見つけるのは比較的簡単だと思いました。たとえば、接続設定を表示して、DNSに8.8.8.8を使用するように指示できます。DNSは、GoogleのパブリックDNSサーバーです。私の質問は次のとおりです。特定のDNSサーバーを指定せず、割り当てられたものを使用するようにルーターを離れる場合、どのDNSサーバーが使用されているかをどのようにして確認できますか?
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
更新:質問の下のコメントで明らかになったように、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
ここで、grep
やawk
などのツールに関する知識を少し使用して、.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
に移動します
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
次の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
Dig
はdnsutils
パッケージからのものです。