Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
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秒のタイムアウトを設定します。

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』は古いツールですが対話モードが使いやすいため今でも広く使われています。

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