言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. Bash辞典
  3. ping / nslookup / dig

ping / nslookup / dig

『ping』・『nslookup』・『dig』はネットワーク診断や名前解決を行うコマンドです。疎通確認・DNS の調査・ネットワーク障害のトラブルシューティングに使います。

構文

疎通確認をします(Ctrl+C で停止)。

ping ホスト名またはIPアドレス

指定回数だけ ping を送ります。

ping -c 回数 ホスト名

ドメインの IP アドレスを調べます(nslookup)。

nslookup ドメイン名

DNS レコードを詳しく調べます(dig)。

dig ドメイン名

レコードタイプを指定して調べます。

dig ドメイン名 レコードタイプ

特定の DNS サーバーに問い合わせます。

dig @DNSサーバー ドメイン名

コマンド・オプション一覧

コマンド / オプション概要
ping ホストICMP パケットを送って疎通を確認します。
ping -c 回数送信するパケット数を指定します。
ping -i 秒送信間隔を秒単位で指定します。
ping -t TTLTTL 値を指定します。
nslookup ドメインドメインの A レコード(IP アドレス)を調べます。
nslookup -type=MX ドメインMX レコード(メールサーバー)を調べます。
dig ドメインDNS レコードを詳細に調べます(A レコードがデフォルト)。
dig ドメイン MXMX レコードを調べます。
dig ドメイン NSNS レコード(ネームサーバー)を調べます。
dig ドメイン TXTTXT レコード(SPF・DKIM など)を調べます。
dig +short ドメインIP アドレスだけを簡潔に出力します。
dig @8.8.8.8 ドメインGoogle の DNS サーバーに問い合わせます。
ss -tuln開いているポートとリッスン中のサービスを表示します。
netstat -tulnss と同様にポート一覧を表示します(古い環境向け)。

サンプルコード

5回だけ『ping』を送って応答時間を確認します。

ping -c 5 google.com
PING google.com (142.250.196.46): 56 data bytes
64 bytes from 142.250.196.46: icmp_seq=0 ttl=118 time=5.123 ms
64 bytes from 142.250.196.46: icmp_seq=1 ttl=118 time=4.987 ms
64 bytes from 142.250.196.46: icmp_seq=2 ttl=118 time=5.234 ms
64 bytes from 142.250.196.46: icmp_seq=3 ttl=118 time=5.001 ms
64 bytes from 142.250.196.46: icmp_seq=4 ttl=118 time=4.876 ms

--- google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.876/5.044/5.234/0.122 ms

スクリプトでサーバーの死活監視に使います。『-c 1』で1回だけ送信し、『-W 2』で2秒のタイムアウトを設定します。

health_check.sh
if ping -c 1 -W 2 192.168.1.1 > /dev/null 2>&1; then
    echo "サーバーは稼働中"
else
    echo "サーバーが応答しません"
fi
bash health_check.sh
サーバーは稼働中

なお、if 文はターミナルでも直接入力できます。『then』の後で Enter を押すと『> 』マークが表示され、これは「まだ入力が続く」というサインで、『fi』を入力すると実行されます。

if ping -c 1 -W 2 192.168.1.1 > /dev/null 2>&1; then
    echo "サーバーは稼働中"
else
    echo "サーバーが応答しません"
fi
サーバーは稼働中

ドメインの A レコード(IP アドレス)だけをシンプルに取得します。

dig +short example.com
93.184.216.34

MX レコードを確認します(メールサーバー設定の確認)。

dig example.com MX +short
10 mail.example.com.
20 mail2.example.com.

TXT レコードを確認します(SPF 設定の確認)。

dig example.com TXT +short
"v=spf1 include:_spf.google.com ~all"

Google DNS(8.8.8.8)を使って名前解決します。ISP の DNS をバイパスしたいときに便利です。

dig @8.8.8.8 example.com +short
93.184.216.34

逆引きで IP アドレスからドメイン名を調べます。

dig -x 93.184.216.34 +short
example.com.

『nslookup』で MX レコードを確認します。

nslookup -type=MX gmail.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
gmail.com	mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com	mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.

開いているポートを確認します。

ss -tuln
Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port
tcp    LISTEN  0       128      0.0.0.0:22            0.0.0.0:*
tcp    LISTEN  0       128      0.0.0.0:80            0.0.0.0:*
tcp    LISTEN  0       128      0.0.0.0:443           0.0.0.0:*

概要

スクリプトでサーバーの死活監視に『$ ping』を使う場合は、『-c 1』(1回だけ送信)と『-W 2』(2秒でタイムアウト)を組み合わせてレスポンスを素早く判定するのが定番です。

DNS の調査には『$ dig +short ドメイン』でシンプルに IP を確認し、詳細は『$ dig』(オプションなし)で確認します。『nslookup』は古いツールですが対話モードが使いやすいため今でも広く使われています。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。