最終更新日 2025年3月5日

本記事の要点
hostコマンドの基本構文
host [オプション] 検索対象のホスト名(IPアドレス)
hostでよく使用するオプション
オプション | 説明 |
---|---|
host ドメイン名 | 指定したドメイン名のIPアドレスを取得 |
host IPアドレス | 指定したIPアドレスのホスト名を取得(逆引き) |
host -t A ドメイン名 | Aレコード(IPv4アドレス)を取得 |
host -t AAAA ドメイン名 | AAAAレコード(IPv6アドレス)を取得 |
host -t MX ドメイン名 | MXレコード(メールサーバー)を取得 |
host -t NS ドメイン名 | NSレコード(ネームサーバー)を取得 |
host -t TXT ドメイン名 | TXTレコードを取得 |
host -a ドメイン名 | すべてのDNSレコードを取得(同じ効果: host -t ANY) |
host ドメイン名 DNSサーバー | 指定したDNSサーバーで名前解決 |
host -v ドメイン名 | 詳細情報(デバッグ情報)を表示 |
host -4 ドメイン名 | IPv4のみを使用 |
host -6 ドメイン名 | IPv6のみを使用 |
hostの出力結果の意味
実行コマンド
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 10 mail.example.com.
出力結果の各項目の意味
項目 | 意味 |
---|---|
has address | ドメインのIPv4アドレス |
has IPv6 address | ドメインのIPv6アドレス |
mail is handled by | メールサーバー(MXレコード)情報 |
10 mail.example.com. | 優先度10のメールサーバー |
Linuxのhostコマンドとは?
hostコマンドは、LinuxでDNS(ドメインネームシステム)の情報を簡単に取得できるコマンドです。
ホスト名からIPアドレスを調べたり、逆にIPアドレスからホスト名を特定したりする際に使用されます。DNSの動作確認やネットワークトラブルシューティングに役立ちます。

hostコマンドって何に使うんですか?

DNSの名前解決を確認するためのコマンドだよ。例えば、あるホストのIPアドレスを調べたいときや、逆にIPアドレスからホスト名を特定したいときに使う。

似たようなコマンドにdig
やnslookup
がありますが、違いは?

hostコマンドはシンプルで使いやすいのが特徴だね。詳細なDNS情報を取得するならdig
、対話的にDNSを調査したいならnslookup
が向いている。

hostコマンドの基本的な使い方
本セクションでは以下の内容について解説します。
ホスト名からIPアドレスを調べる
特定のホストのIPアドレスを取得するには、host [ホスト名]
の形式で実行します。
コマンド例
host example.com
出力結果
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

このコマンドは何をしているんですか?

DNSサーバーに問い合わせて、example.com
のIPv4とIPv6のアドレスを取得しているんだよ。

IPアドレスが複数表示されるのはなぜですか?

Webサイトによっては複数のサーバーを持っているから、ロードバランシングなどの理由で複数のIPが割り当てられていることがある。
![ホスト名からIPアドレスを調べる
基本的な使い方
特定のホストのIPアドレスを取得するには、「host [ホスト名]」の形式で実行します。例えば「host example.com」と入力すると、そのドメインに関連付けられたIPv4とIPv6アドレスが表示されます。
複数のIPアドレスが表示される理由
Webサイトによっては複数のサーバーを持っているため、ロードバランシングなどの理由で複数の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」のように表示されます。](https://www.goritarou.com/wp-content/uploads/2025/02/image-350-1024x469.png)
IPアドレスからホスト名を逆引きする
IPアドレスからホスト名を取得するには、host [IPアドレス]
の形式で実行します。
コマンド
host 93.184.216.34
出力例
34.216.184.93.in-addr.arpa domain name pointer example.com.

この出力のin-addr.arpa
って何ですか?

これは逆引きDNS(PTRレコード)の仕組みで、IPアドレスからホスト名を特定するときに使われる特殊なドメイン名だよ。

逆引きできないIPアドレスもありますか?

あるよ。特にプライベートIPアドレスや、逆引き設定がされていないIPアドレスはホスト名が取得できない。
![IPアドレスからホスト名を逆引きする
逆引きの基本
IPアドレスからホスト名を取得するには、「host [IPアドレス]」の形式で実行します。例えば「host 93.184.216.34」と入力すると、そのIPアドレスに関連付けられたホスト名が表示されます。
in-addr.arpaとは
出力に表示される「in-addr.arpa」は逆引きDNS(PTRレコード)の仕組みで、IPアドレスからホスト名を特定するときに使われる特殊なドメイン名です。
逆引きできないケース
特にプライベートIPアドレスや、逆引き設定がされていないIPアドレスはホスト名が取得できません。](https://www.goritarou.com/wp-content/uploads/2025/02/image-351-1024x469.png)
特定のDNSサーバーを指定して問い合わせる
デフォルトでは、hostコマンドはシステムで設定されているDNSサーバーを使いますが、特定のDNSサーバーに直接問い合わせることもできます。
コマンド
host example.com 8.8.8.8
出力例
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
example.com has address 93.184.216.34

8.8.8.8
って何ですか?

これはGoogle Public DNSだよ。デフォルトのDNSが信頼できないときや、レスポンスを比較したいときに使う。

DNSサーバーを変えると、取得できる情報が変わることもありますか?

うん、DNSサーバーによってキャッシュの保持期間や設定が違うから、異なる結果が出ることもある。

hostコマンドの主なオプション一覧
hostコマンドには、さまざまなオプションがあり、DNSの詳細な情報を取得できます。
特定のレコードを指定したり、デバッグ情報を表示したりすることが可能です。ここでは、よく使うオプションを紹介します。
-t オプション:特定のDNSレコードを指定
-t
オプションを使うと、AレコードやMXレコードなど、特定のDNSレコードを取得できます。
デフォルトではAレコード(IPv4アドレス)が表示されますが、ほかのレコードを調べることも可能です。
コマンド例(MXレコードを取得)
host -t MX example.com
出力例
example.com mail is handled by 10 mail.example.com.

MXレコードって何ですか?

メールサーバーの情報を示しているんだ。例えば、mail.example.com
がexample.com
のメールを受け取るサーバーになる。

ほかにはどんなレコードを調べられますか?

NS(ネームサーバー)、TXT(テキストデータ)、CNAME(別名)**などがある。例えば、TXTレコードを取得するにはこうする。

TXTレコードを取得する場合
host -t TXT example.com
-a オプション:すべてのレコードを取得
-a
オプションを使うと、対象のドメインのすべてのDNSレコードを一括で取得できます。
コマンド例
host -a 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 10 mail.example.com.
example.com has TXT "v=spf1 include:_spf.example.com ~all"

-a
オプションを使えば、いろんなレコードが一度に取れるんですね。

そうだね。ただし、DNSサーバーによっては制限があるから、すべての情報が出ないこともある。

制限される理由は?

プライバシーやセキュリティ対策のために、すべての情報を公開しないDNSサーバーがあるんだ。

-v オプション:詳細なデバッグ情報を表示
-v
オプションを使うと、DNSクエリの詳細なデバッグ情報が表示されます。
DNSの動作を詳しく知りたいときや、トラブルシューティングに便利です。
コマンド例
host -v example.com
出力例(一部)
Trying "example.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

この出力、ちょっと難しいですね……。

主にDNSのリクエストとレスポンスの詳細を表示している。例えば、status: NOERROR
はDNSの問い合わせが正常に完了したことを示している。

エラーのときはどうなりますか?

例えば、ドメインが存在しない場合はNXDOMAIN
(No Such Domain)というエラーが出るよ。

-4 / -6 オプション:IPv4 / IPv6 を指定
-4
オプションを使うとIPv4アドレスのみ、-6
オプションを使うとIPv6アドレスのみを取得できます。
IPv4アドレスのみを取得
host -4 example.com
IPv6アドレスのみを取得
host -6 example.com

IPv4とIPv6、両方取得したいときは?

デフォルトのhost
コマンドなら、両方の情報を自動的に取得する。ただし、特定のプロトコルだけを使いたいなら-4
や-6
を指定するといい。

IPv6が取得できないことがあるのはなぜ?

ドメインによってはIPv6アドレスが設定されていないことがあるんだ。IPv4しかないサイトもまだ多いからね。
これで、hostコマンドの主要オプションの使い方を理解できたはずです。次は、DNSの実践的な調査テクニックを解説していきます。
hostコマンドの実践テクニック
hostコマンドを使えば、DNSの基本情報だけでなく、特定のメールサーバーやネームサーバーの情報も取得できます。
ここでは、実務で役立つDNS調査のテクニックを紹介します。
特定のメールサーバーを調査する(MXレコード)
MX(Mail Exchanger)レコードは、特定のドメインが使用しているメールサーバーを示します。
メールの送信先がどのサーバーかを確認する際に使われます。
コマンド例(MXレコードを取得)
host -t MX example.com
出力例
example.com mail is handled by 10 mail.example.com.

この10
って何ですか?

これは優先度を表している。小さい数値のサーバーが優先的に使われる。

じゃあ、複数のMXレコードがある場合は?

数値が小さい順にメールが送られる。メインのメールサーバーがダウンしたら、バックアップのサーバーに送信される仕組みになっている。

ドメインのネームサーバーを確認する(NSレコード)
NS(Name Server)レコードは、ドメインのDNS情報を管理しているネームサーバーを示します。
DNSの設定変更やレコードの管理を確認するときに役立ちます。
コマンド例(NSレコードを取得)
host -t NS example.com
出力例
example.com name server ns1.example.com.
example.com name server ns2.example.com.

NSレコードって何のためにあるんですか?

ドメインのDNS情報を管理しているサーバーを指定するものだよ。例えば、ドメインのIPアドレスをどこに問い合わせるかを決めている。

複数のネームサーバーがあるのはなぜ?

冗長性の確保のため。片方のDNSサーバーがダウンしても、もう一方が対応できるようにするためだね。

特定のドメインのTXTレコードを取得する
TXTレコードは、ドメインに関連するテキスト情報を格納するレコードです。
SPF(メールの送信元認証)やDKIM(メールの暗号化認証)など、メールのセキュリティ設定を確認する際によく使われます。
コマンド例(TXTレコードを取得)
host -t TXT example.com
出力例
example.com has TXT "v=spf1 include:_spf.example.com ~all"
example.com has TXT "google-site-verification=abcd1234"

TXTレコードって何に使われるんですか?

メールの送信元認証(SPF)、ドメイン所有権の確認、Google Search Consoleの認証など、さまざまな用途で使われる。

SPFの設定って何ですか?

SPF(Sender Policy Framework)は、どのサーバーがそのドメインからメールを送信できるかを定義するレコードだよ。不正なメールの送信を防ぐために使われる。

複数のDNSサーバーを切り替えて問い合わせる
hostコマンドでは、デフォルトのDNSサーバーではなく、任意のDNSサーバーを指定して問い合わせることができます。
異なるDNSサーバーを使って調査することで、レコードの更新状況や、キャッシュの影響を確認するのに役立ちます。
コマンド例(Google Public DNSを使用)
host example.com 8.8.8.8
出力例
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
example.com has address 93.184.216.34

DNSサーバーを変えると、結果が違うこともありますか?

あるよ。特にレコードの更新タイミングやキャッシュの保持時間が異なると、問い合わせるDNSサーバーによって異なる結果が返ってくることがある。

どのDNSサーバーを使うべきですか?

Google Public DNS(8.8.8.8)やCloudflare DNS(1.1.1.1)、OpenDNS(208.67.222.222)などがよく使われる。環境や目的に応じて使い分けるといい。

hostコマンドを使う際の注意点とトラブルシューティング
本セクションでは以下の内容について解説します。
DNSサーバーが応答しない場合
DNSサーバーが応答しない場合は、使用しているDNSサーバーを確認し、別のサーバーを指定して試すことが重要です。
対処法
host example.com 8.8.8.8

DNSサーバーが応答しないときはどうすればいいですか?

まず、他のDNSサーバー(Google Public DNSなど)を指定して試す。それでもダメなら、ネットワーク設定を確認する。

DNSサーバーの変更はどうすればいいんですか?

/etc/resolv.conf
を編集するか、systemd-resolved
を設定すれば変更できる。

ホスト名が解決できない場合
ホスト名が解決できない場合は、ドメインの有効性やDNSの設定を確認する必要があります。
対処法
host -t NS example.com

ホスト名が解決できないってどういうことですか?

ドメインが存在しないか、DNSの設定に問題がある場合だね。

どこを確認すればいいですか?

ネームサーバー(NSレコード)の設定が正しいかを確認するといい。
IPv6対応のドメインを正しく取得するには
IPv6対応のドメインを調査する場合は、-6
オプションを指定する必要があります。
対処法
host -6 example.com

IPv6のアドレスが取得できないことがあるのはなぜですか?

そのドメインがIPv6未対応の可能性がある。また、クライアントのDNS設定がIPv6をサポートしているかも確認しよう。

hostコマンドを使ったトラブルシューティング事例
ある日、特定の地域のユーザーだけがWebサイトにアクセスできないという問題が発生しました。ネットワークには異常がなく、他の地域からは正常に接続できている状態です。原因はDNSの設定ミスでしたが、hostコマンドを使って問題の特定と解決を行いました。
トラブル発生:特定の地域からサーバーにアクセスできない
ある企業のWebアプリが、関東地域のユーザーのみアクセスできないという報告がありました。サーバー自体は稼働しており、関西や九州など他の地域では正常に利用できています。社内ネットワークや回線の問題も確認しましたが、特に異常は見当たりませんでした。

全国のユーザーが使っているのに、一部の地域だけアクセスできないなんて不思議ですね。

まずはDNSが正しく機能しているかを確認しましょう。hostコマンドを使って、問題のある地域と正常な地域で結果を比較すると、原因が特定できるかもしれません。

調査開始:DNSレコードの確認
関東のユーザーが問題のあるドメインに対して名前解決できているかを確認するため、hostコマンドを実行しました。
問題が発生している関東のユーザーの結果
host example.com
example.com has address 192.168.100.50
正常にアクセスできる関西のユーザーの結果
host example.com
example.com has address 203.0.113.10

IPアドレスが違いますね。関東のユーザーだけ192.168.100.50
になっています。

そうですね。192.168.100.50
はローカルネットワークのアドレスなので、インターネット上のサーバーには接続できません。
原因特定:DNSサーバーの地域ごとの設定ミス
この結果から、DNSサーバーが関東のユーザーに対して誤ったIPアドレスを返している可能性が高いと判断しました。
より詳細に調べるため、異なるDNSサーバーを指定してhostコマンドを実行し、結果を比較しました。
Google Public DNS(8.8.8.8)で確認
host example.com 8.8.8.8
example.com has address 203.0.113.10
ISPのDNSサーバー(関東地域)で確認
host example.com 202.233.233.233
example.com has address 192.168.100.50

GoogleのDNSでは正しいIPアドレスが返っていますね。

関東のISPのDNSサーバーに問題がありそうです。DNSの設定が間違っていて、誤ったローカルIPアドレスが登録されている可能性があります。

対応策:DNSレコードの修正とキャッシュのクリア
原因が判明したため、DNS管理ツールにログインし、該当の設定を確認しました。すると、関東エリアのDNSサーバーにのみ、誤ったAレコード(192.168.100.50)が設定されていることがわかりました。
すぐにDNSの設定を修正し、キャッシュの影響を考慮してTTL(Time To Live)を短縮しました。
また、ISPのDNSキャッシュが更新されるまでの対策として、一時的にGoogle Public DNS(8.8.8.8)をユーザーに案内しました。

DNSのキャッシュが更新されるまで、どのくらいかかるのでしょうか?

通常は数時間から24時間程度ですが、TTLの値によって変わります。今回はTTLを短縮したので、比較的早く反映されるはずです。
解決後の確認
修正後、hostコマンドを再実行し、正しいIPアドレスが返ってくることを確認しました。
host example.com 202.233.233.233
example.com has address 203.0.113.10

ついに正しいIPアドレスになりました!

これで関東のユーザーも正常にアクセスできるようになったはずです。ISP側のキャッシュ更新が完了すれば、完全に解決ですね。
まとめ
今回のトラブルのポイントは以下の通りです。
- 特定の地域のユーザーだけがアクセスできない場合、DNSの設定を疑う
- hostコマンドで異なる地域やDNSサーバーの結果を比較し、原因を特定する
- 誤ったDNSレコードの修正後、TTLを短縮して迅速に反映させる
- 一時的な回避策として、Google Public DNSなどの代替DNSを案内する
hostコマンドは、シンプルな使い方でもDNSの問題を特定する強力なツールです。今回のようなDNSの地域ごとの設定ミスは珍しいケースですが、hostコマンドを活用することでスムーズに原因を突き止めることができました。


ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。