Linux 講座 / IPアドレス・DNS・ポートの関係と接続過程を理解する
IP(Internet Protocol)アドレスはネットワークで通信相手の住所を示し、DNS(Domain Name System)はドメイン名に対応する住所などの情報を探し、ポートは同じ機器内で通信するサービスを区別します。ウェブサイトに接続するには、名前の確認、目的地までの経路、該当ポートで応答するサービスがすべて一致する必要があります。
住所・名前・ポートを区別したら、ネットワーク接続問題の診断で階層ごとの失敗を別々に確認できます。
システム設定実習の基準は Ubuntu 26.04 LTS と Rocky Linux 9 系の一般インストール VM です。コンテナ・WSL・別のリリースでは、サービスやパッケージの構成が異なる場合があります。仮想マシン実習環境の作成で、コンソールの復旧とバージョン確認を最初に準備してください。
住所・名前・ポートをウェブ接続一回で区別する
https://example.com/を入力したと仮定してみましょう。OSとブラウザはキャッシュ・設定に従って名前の住所情報を取得し、その住所にパケットを送る経路を選択した後、サーバーと通信します。HTTPSは基本的に443番ポートを使用し、実際のウェブ通信にはTCPやTLS、またはQUICなどの転送・セキュリティ層が関与します。DNS応答を受け取ったという事実だけでウェブ接続の成功が保証されるわけではありません。
| 項目 | 役割 | 例 |
|---|---|---|
| IPアドレス | パケットを送る住所 | 192.0.2.10 または 2001:db8::10 |
| DNS | 名前に関連付けられたレコードの照会 | A・AAAA・MX などのレコード |
| ポートとプロトコル | ホスト内の通信エンドポイントの区別 | TCP 443 と UDP 443 は互いに区別されます |
表の 192.0.2.0/24 と 2001:db8::/32 は説明用のアドレス範囲です。実際の接続実習のサーバーアドレスとして使用しないでください。ポート番号が同じでも TCP と UDP は別々の通信方式なので、ファイアウォールのルールもプロトコルを区別する必要があります。
IPv4・IPv6 およびプライベートアドレスの意味
IPv4は32ビットのアドレスをドットで区切った十進数で、IPv6は128ビットのアドレスをコロンで区切った16進数で主に表します。1つのインターフェースに複数のアドレスが付くことがあり、IPv4とIPv6が一緒に使われることもあります。127.0.0.1と::1は自分の機器に戻るループバックアドレスです。このアドレスだけに待機するサービスには他のコンピュータは直接接続できません。
IPv4の10.0.0.0/8、172.16.0.0/12、192.168.0.0/16はプライベートアドレス範囲です。家庭や会社内部で繰り返し使うことはできますが、インターネット全体では一意の公開アドレスとしてルーティングされません。外部接続にはNATなど別の構成が使われることがあります。IPv6を単に「NATのないIPv4」と理解したり、IPv4のファイアウォール規則がIPv6にも自動で適用されると仮定しないでください。
サブネットとデフォルトルートの解釈
192.168.10.20/24の/24は、アドレスの最初の24ビットをネットワークプレフィックスとして使用するCIDR表記です。デバイスはルーティングテーブルから目的地に合った経路を探し、一般的により具体的なプレフィックスが優先されます。default via ...は、他により具体的な経路がない場合に使用する次のホップを示します。ゲートウェイアドレスとDNSサーバーアドレスは同じ場合もありますが、役割は異なります。
ip -brief address
ip route
ip -6 route
getent ahosts example.com
ipはiproute2プロジェクトのツールですが、配布パッケージ名は異なります。Ubuntu 26.04ではiproute2、Rocky Linux 9ではiprouteです。上記のコマンドは、インターフェースアドレスと経路、システムネームサービス設定を通じた名前解決を表示します。getentはDNS以外に/etc/hostsなどの設定済みソースも使用し、アドレスとインターフェース名は機器ごとに異なります。
Ubuntuではdpkg-query -W iproute2、Rockyではrpm -q iprouteとしてインストールされたパッケージとバージョンを確認します。RPM名はRocky Linux 9公式BaseOSリポジトリでも確認できます。
DNSの照会とサービス接続を別々に確認する
DNSのAレコードはIPv4アドレスを、AAAAレコードはIPv6アドレスを表します。同じ名前で複数のアドレスが返されることがあり、キャッシュや有効期間のために照会時点ごとに結果が異なる場合があります。システムがsystemd-resolvedを使用している場合は、下記の最初のコマンドでインターフェースごとのDNS設定を確認できます。コマンドがない場合は、該当システムのNetworkManagerやresolver設定を確認してください。
resolvectl status
ss -lnt
curl -I --connect-timeout 5 --max-time 15 https://example.com/
ss -lntは、このコンピューターで待機中のTCPソケットを表示するので、リモートWebサーバーのポート一覧ではありません。curlは、リモートのHTTPS応答ヘッダーを要求します。curlがなければ、Ubuntuではsudo apt install curl、Rocky Linuxではsudo dnf install curlでインストールできます。プロキシ、証明書、ネットワークポリシーにより失敗原因が異なります。
結果を見て次に確認する対象を決める
- アドレスがない場合は、インターフェースや仮想マシンのネットワーク接続から確認します。
- アドレスはあるが宛先経路がない場合は、ルーティングやゲートウェイを確認します。
- 名前の検索だけが失敗する場合は、DNS設定とシステムの名前サービス設定を確認します。
- 名前解決と経路が正常でも接続に失敗する場合は、ポートの待機状態、ファイアウォール、TLS・アプリケーションのエラーを区別します。
上記のネットワーク確認コマンドはネットワーク設定を変更しません。ただし、説明中のパッケージインストールコマンドはシステムを変更します。名前の検索失敗を解決しようとして無条件にDNSファイルを上書きしたり、接続失敗を解決しようとしてファイアウォールを切らないでください。観察した結果が指す層から絞り込むと、次の診断で不要な変更を減らすことができます。




