Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
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 TTL | TTL 値を指定します。 |
| nslookup ドメイン | ドメインの A レコード(IP アドレス)を調べます。 |
| nslookup -type=MX ドメイン | MX レコード(メールサーバー)を調べます。 |
| dig ドメイン | DNS レコードを詳細に調べます(A レコードがデフォルト)。 |
| dig ドメイン MX | MX レコードを調べます。 |
| dig ドメイン NS | NS レコード(ネームサーバー)を調べます。 |
| dig ドメイン TXT | TXT レコード(SPF・DKIM など)を調べます。 |
| dig +short ドメイン | IP アドレスだけを簡潔に出力します。 |
| dig @8.8.8.8 ドメイン | Google の DNS サーバーに問い合わせます。 |
| ss -tuln | 開いているポートとリッスン中のサービスを表示します。 |
| netstat -tuln | ss と同様にポート一覧を表示します(古い環境向け)。 |
サンプルコード
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』は古いツールですが対話モードが使いやすいため今でも広く使われています。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。