タイトル: hostコマンド
SEOタイトル: host コマンド完全ガイド — DNS 正引き/逆引き/MX/TXT/CNAME 確認、dig / nslookup との比較
| この記事の要点 |
|
host コマンドとは
host は BIND (Berkeley Internet Name Domain) に同梱される DNS 問い合わせクライアントです。dig と並んで Linux サーバ管理者が日常的に使うツールで、シンプルな出力が特徴です。
| パッケージ | RHEL/CentOS | Debian/Ubuntu | macOS |
|---|---|---|---|
| 同梱パッケージ | bind-utils | bind9-host / dnsutils | 標準同梱 |
| 導入コマンド | dnf install bind-utils | apt install dnsutils | — |
基本: 正引き (ドメイン → IP)
host example.com
# example.com has address 93.184.216.34
# example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
# example.com mail is handled by 0 .
# 短く出したい場合
host -s example.com # SOA 関係を抑制
逆引き (IP → ドメイン)
host 8.8.8.8
# 8.8.8.8.in-addr.arpa domain name pointer dns.google.
host 2606:2800:220:1:248:1893:25c8:1946
# domain name pointer www.example.com.
レコード種別を指定: -t オプション
# MX (メールサーバ)
host -t MX example.com
# example.com mail is handled by 10 mx1.example.com.
# example.com mail is handled by 20 mx2.example.com.
# NS (権威サーバ)
host -t NS example.com
# example.com name server a.iana-servers.net.
# example.com name server b.iana-servers.net.
# TXT (SPF / DKIM / DMARC / 認証用)
host -t TXT example.com
# example.com descriptive text "v=spf1 -all"
# SOA
host -t SOA example.com
# CNAME
host -t CNAME www.example.com
# www.example.com is an alias for example.com.
# SRV (XMPP / SIP / LDAP の検出など)
host -t SRV _ldap._tcp.example.com
すべての情報を表示: -a オプション
-a は -v -t ANY 相当。CNAME 連鎖、TTL、サーバ情報がまとめて見えます。
host -a www.example.com
# Trying "www.example.com"
# ;; ANSWER SECTION:
# www.example.com. 3600 IN A 93.184.216.34
# www.example.com. 3600 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
#
# Received 87 bytes from 192.0.2.53#53 in 5 ms
問い合わせ先 DNS サーバを指定
第 2 引数で参照する DNS サーバを上書きできます。社内 DNS と公開 DNS で結果が違うときの切り分けに便利です。
# Google Public DNS で確認
host example.com 8.8.8.8
# Cloudflare で確認
host example.com 1.1.1.1
# 社内 DNS で確認
host intranet.corp.local 192.168.1.53
# 権威サーバに直接尋ねる
host -t MX example.com a.iana-servers.net
CNAME 連鎖の追跡
多段 CNAME の場合、host は最終的な A レコードまで自動で辿ります。
host www.github.com
# www.github.com is an alias for github.com.
# github.com has address 140.82.121.4
host -a www.github.com
# CNAME 連鎖と最終 A の TTL が全部見える
dig / nslookup との比較
| 観点 | host | dig | nslookup |
|---|---|---|---|
| 出力 | 人間に優しい短い文 | RFC 1035 風の詳細 | 古典的フォーマット |
| 用途 | サクッと確認 | 運用・トラブルシュート本命 | 初心者・対話型 |
| パッケージ | bind-utils / dnsutils | bind-utils / dnsutils | bind-utils / dnsutils |
| 権威サーバ直接 | 引数で IP 指定 | @ プレフィクス | server サブコマンド |
| スクリプト適性 | ★★★ (短い) | ★★★★★ (+short 等が便利) | ★ (整形が手間) |
# 同じ問い合わせを 3 つのコマンドで
host -t MX example.com
dig +short MX example.com
nslookup -type=MX example.com
# スクリプトで A レコードだけ抜き出す例
host example.com | awk '/has address/ {print $NF}'
dig +short example.com
TTL を表示する
素の host は TTL を出しませんが、-v や -a を付けると見えます。
host -v example.com
# Trying "example.com"
# ;; ANSWER SECTION:
# example.com. 86400 IN A 93.184.216.34
# ↑ TTL (秒)
逆引き (PTR) の詳細
逆引きゾーンは in-addr.arpa (IPv4) / ip6.arpa (IPv6) に登録されます。クラウドの IP は逆引きが提供事業者の名前になっていることが多いです。
# 通常の逆引き
host 142.250.196.110
# 110.196.250.142.in-addr.arpa domain name pointer kix07s12-in-f14.1e100.net.
# クラウドの例
host 13.230.10.20
# 20.10.230.13.in-addr.arpa domain name pointer ec2-13-230-10-20.ap-northeast-1.compute.amazonaws.com.
# 逆引きが未設定だと
host 192.0.2.99
# Host 99.2.0.192.in-addr.arpa not found: 3(NXDOMAIN)
よく使うトラブルシュートパターン
| 症状 | 確認コマンド | 判断 |
|---|---|---|
| サイトが繋がらない | host サイト名 | 結果が NXDOMAIN → DNS の問題、IP が返る → 経路 / FW の問題 |
| メールが届かない | host -t MX 受信側ドメイン | MX が無い / SPF (TXT) ミス |
| 社内 / 社外で結果が違う | host A 8.8.8.8 と host A 社内DNS | キャッシュ古い or split-horizon |
| SSL 証明書のドメインずれ | host -a www で CNAME 連鎖を確認 | CDN や別 CNAME に飛んでいないか |
| 逆引きが想定と違う | host IP | クラウドの自動 PTR、メール送信時 SPF/PTR 一致要件 (RFC 5321) |
スクリプトでの利用例
# IP リストを逆引き
for ip in 8.8.8.8 1.1.1.1 9.9.9.9; do
echo -n "$ip => "
host "$ip" | awk '{print $NF}'
done
# 8.8.8.8 => dns.google.
# 1.1.1.1 => one.one.one.one.
# 9.9.9.9 => dns.quad9.net.
# 自社ドメインの A レコードを連続監視
while sleep 60; do
date +%T
host example.com | grep "has address"
done
FAQ
Q: host: command not found と言われる
A: 最小構成の Linux では bind-utils / dnsutils 未導入のことがあります。dnf install bind-utils または apt install dnsutils を入れてください。コンテナ内で必要なら、デバッグ用の busybox nslookup や getent hosts も代用できます。
Q: host と ping で結果の IP が違う
A: ping は /etc/nsswitch.conf に従い /etc/hosts も見ます。host は基本的に DNS のみ。getent hosts example.com で「OS としてどう解決するか」を確認できます。
Q: dig と host、どちらを覚えれば良い?
A: 詳細トラブルシュートには dig、サクッと結果が欲しいときは host。本気で運用に関わるなら dig を覚えるのが最終的に得です。