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秒のタイムアウトを設定します。
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』は古いツールですが対話モードが使いやすいため今でも広く使われています。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。