Linuxで使用しているDNSサーバーを確認するにはどうすればよいですか?ネットワークマネージャーと大学のLANへの有線接続を使用しています。 (ドメインが解決されない理由を見つけようとしています)
あなたはいくつかの合理的な情報を次の場所で得ることができるはずです:
$ cat /etc/resolv.conf
ここに私がそれをする方法があります:
( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
これは 以前に機能した を上記の方法で実行します。
nm-tool | grep DNS
Debianでは、network-managerパッケージをインストールする必要があります。
DNSを照会することもでき、どのサーバーが結果を返したかが表示されます。これを試して:
Dig yourserver.somedomain.xyz
そして、レスポンスはどのサーバーが結果を返したかを教えてくれるはずです。関心のある出力は次のようになります。
;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE rcvd: 207
Dig
にDig @server_ip
を使用して特定のDNSサーバーをクエリするように指示することもできます
Systemdを実行しているシステムでは、以下を使用します。
systemd-resolve --status
nslookup
を実行するだけです。結果の一部には、使用しているサーバーが含まれます。
以下の例では、使用されているDNSサーバーが8.8.8.8であることを示しています。
$ nslookup google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 172.217.22.174
新しいnetwork-manager
コマンドnmcli
、これを行います:
nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>
ネットワークマネージャーの新しいバージョン(Ubuntu 16.04など)では、フィールド名が少し異なります。
nmcli --fields ip4.dns,ip6.dns con show <connection_name>
接続名がわからない場合は、次を使用します。
nmcli -t --fields NAME con show --active
例えば:
$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]: 172.21.0.13
IP4.DNS[2]: 172.21.0.4
最初のDNSサーバーを取得するには(IPのみ):
cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
cat
はDNS構成を出力しますgrep
はネームサーバーのみをフィルタリングしますhead
は最初の行/インスタンスのみを保持しますcut
行のIP部分を取ります(区切り文字として ''を使用した2番目の列)DNS IPを環境変数に入れるには、次のように使用できます。
export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)
ネットワークマネージャーを使用している場合は、おそらく大学のDHCPサーバーからすべてのネットワークパラメーターを取得します。
シェルを使用してDNS設定を確認したくない場合は(ヘッセとAlexiosで説明されているように)、パネルの[ネットワーク情報]から確認できます。
このパネルにアクセスするには、ネットワークマネージャーアイコンを右クリックして、メニューから[接続情報]を選択します。
resolvectl
を使用する$ resolvectl status | grep -1 'DNS Server'
DNSSEC supported: no
Current DNS Server: 1.1.1.1
DNS Servers: 1.1.1.1
1.0.0.1
互換性のために、systemd-resolve
は、Ubuntu 18.10のように、多くのディストリビューションのresolvectl
へのシンボリックリンクです。
$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve
$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 nov. 15 21:42 /usr/bin/systemd-resolve -> resolvectl
$ type -a resolvectl
resolvectl is /usr/bin/resolvectl
$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped
コマンド
nmcli dev list iface <interfacename> | grep IP4
「interfacename」を自分のものに置き換えます。
例
nmcli dev list iface eth0 | grep IP4
これにより、すべてのDNSサーバーが一覧表示されます(複数を使用する場合)。
私はFedora 25を使用しており、コマンドラインでSudoコマンドと同様の遅い応答がありました。
nmcli dev show | grep DNS
私の3つのアダプター(2つがアクティブ)のうちの1つだけがDNSエントリーを持っていることを示しました。エントリがなかった1つのアクティブカードにDNSエントリを追加する-presto!すべてが良好で、応答時間は即時です。
CentOSでは、以下を使用できます。
/usr/sbin/named -v
DNSを見つけたら、Digで直接クエリできます:Dig @<dns ip> <Host to lookup>
。機能する場合、SERVER
の後にステータスNOERROR
が表示されます。
私のコマンド:
( \nmcli dev list || \nmcli dev show ) 2>/dev/null | grep DNS || egrep -v '^(#|$)' /etc/resolv.conf