Linux における IP アドレスの種類と到達可能性の探索

CompTIABeginner
オンラインで実践に進む

はじめに

この実験では、Linux 環境における IP アドレス指定とネットワーク到達可能性の基本的な概念を探求します。pingip a のような一般的なコマンドラインユーティリティを使用して、不可欠なネットワーク診断を実行します。演習では、ループバックアドレスを使用したローカル TCP/IP スタックのテスト、マシンのプライベート IP アドレスの特定、パブリックインターネット接続の検証をガイドします。

さらに、ローカルネットワーク内の到達可能性をテストし、マルチキャスト通信を探索することで特殊用途アドレスの理解を深めます。これらのステップを完了することで、ネットワーク構成のトラブルシューティングや Linux システム上のさまざまなレイヤーの IP 到達可能性の検証に関する実践的なスキルを習得できます。

ping 127.0.0.1 でローカル TCP/IP スタックをテストする

このステップでは、ループバックアドレスを使用してシステムのネットワーク構成自体をテストする方法を学びます。これは、物理的なネットワーク接続を確認する前に、TCP/IP ソフトウェアスタックが正しくインストールされ、機能していることを確認するための基本的な診断ステップです。

ループバックアドレスは、ほとんどの場合 127.0.0.1 であり、コンピュータが自分自身を参照するために使用する特別な IP アドレスです。127.0.0.1 にネットワークトラフィックを送信すると、それは Wi-Fi やイーサネットカードのようなネットワークハードウェアには送信されません。代わりに、トラフィックはオペレーティングシステム内で内部的に「ループバック」します。これはテストに非常に役立ちます。

ここでは、IP ネットワーク上のホストの到達可能性をテストするために使用される一般的なネットワークユーティリティである ping コマンドを使用します。

それでは、ループバックアドレスを ping してみましょう。現在 ~/project ディレクトリにあるターミナルで、次のコマンドを入力して Enter キーを押してください。

ping 127.0.0.1

127.0.0.1 からの応答が継続的に表示されます。これは、システムの TCP/IP スタックが期待どおりに機能していることを示しています。各行は、ローカルマシンから受信した成功した「エコー応答」を表します。

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.050 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.052 ms
...

ping コマンドは、停止するまで実行され続けます。コマンドを停止するには、**Ctrl+C** を押してください。停止すると、ping の統計情報の概要が表示されます。

この成功したテストは、仮想マシン上のネットワーキングソフトウェアが動作していることを確認します。

ip a でプライベート IP アドレスを特定する

このステップでは、仮想マシンのプライベート IP アドレスを特定します。ループバックアドレスで内部 TCP/IP スタックが機能することを確認した後、次に論理的なステップとして、システムが同じローカルネットワーク上の他のデバイスと通信するために使用するアドレスを見つけます。

ほとんどのローカルネットワーク(この仮想マシンが接続されているネットワークや、自宅/オフィスのネットワークなど)では、プライベート IP アドレスが使用されます。これらは、パブリックインターネットから到達できない特別な IP アドレスの範囲です。内部使用のために予約されています。このシステムは、IPv4 アドレスの枯渇を防ぎ、セキュリティの層を追加します。

最新の Linux システムで IP アドレスを見つけるには、ip a コマンド(iproute2 スイートの一部であり、古い ifconfig コマンドに取って代わるものです)を使用できます。

ターミナルで、次のコマンドを実行します。

ip a

出力には、システム上のすべてのネットワークインターフェイスが一覧表示されます。プライマリネットワークインターフェイスを探します。これは通常 eth0 または ens... という名前です。IP アドレスは inet で始まる行に表示されます。

出力がどのようになるかの例を次に示します。IP アドレスとインターフェイス名は異なる場合があります。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:16:3e:0a:71:39 brd ff:ff:ff:ff:ff:ff
    inet 172.16.50.171/24 brd 172.16.50.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe0a:7139/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:ae:2a:df:b8 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

上記の例では、プライベート IP アドレスは 172.16.50.171 です。次に、システムの inet アドレスを特定し、それが標準的なプライベート IP アドレス範囲のいずれかに該当するかどうかを確認します。

  • クラス A: 10.0.0.0 から 10.255.255.255
  • クラス B: 172.16.0.0 から 172.31.255.255
  • クラス C: 192.168.0.0 から 192.168.255.255

例の IP アドレス 172.16.50.171 は、クラス B のプライベート範囲内にあります。LabEx VM もこれらの範囲のいずれかからの IP を持つことになります。

ping 8.8.8.8 でパブリックインターネット到達性をテストする

このステップでは、仮想マシンがパブリックインターネットと通信できることを確認します。ローカル TCP/IP スタックが機能することを確認し、プライベート IP アドレスを見つけました。次に、ローカルネットワーク外のサーバーに到達できるかどうかを確認しましょう。

パブリック IP アドレスは、インターネット上でルーティング可能な、グローバルに一意なアドレスです。プライベート IP を持つ VM は、そのアドレスをインターネット上で直接使用することはできません。代わりに、ネットワーク上のルーターまたはゲートウェイがネットワークアドレス変換 (NAT) を実行します。これは、インターネットへのトラフィック送信時に VM のプライベート IP アドレスをパブリック IP アドレスに変換し、戻りのトラフィックではその逆を行います。

これをテストするために、広く知られているパブリック IP アドレスである 8.8.8.8 を ping します。これは Google のパブリック DNS サーバーの 1 つのアドレスであり、非常に可用性が高く、インターネット接続のテストに標準的に使用されます。

ターミナルで、次のコマンドを入力して Enter キーを押します。

ping 8.8.8.8

一連の成功した応答が表示されるはずです。time= の値は、ループバックアドレスを ping したときよりも通常高くなります。これは、データパケットがインターネットを経由して Google のサーバーに到達し、戻ってくるためです。

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=2.34 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=2.30 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=2.35 ms
...

これらの応答は、VM がパブリックインターネットに正常に接続していることを確認します。ping コマンドを停止するには、**Ctrl+C** を押してください。

未割り当て IP への ping でローカルネットワーク到達性をテストする

このステップでは、ローカルネットワーク上のどのデバイスにも割り当てられていない IP アドレスとの通信を試みます。これにより、通信を成功させるためには、宛先 IP が正しいネットワーク上にあるだけでなく、応答できるホストによって積極的に使用されている必要があることがわかります。

すでに自身のプライベート IP アドレスを見つけました。次に、同じサブネット内で、ほぼ確実に未使用の別の IP アドレスを選択します。サブネットとは、IP ネットワークの論理的な下位区分です。たとえば、IP アドレスが 172.16.50.171 でマスクが /24 の場合、サブネットには 172.16.50.1 から 172.16.50.254 までのすべての IP アドレスが含まれます。

使用されていない可能性が高い IP アドレスを選択しましょう。この環境で一般的な IP アドレス 172.16.50.171 に基づいて、172.16.50.250 を ping してみます。

ターミナルで、次のコマンドを入力して Enter キーを押します。

ping 172.16.50.250

今回は、応答は表示されません。コマンドはハングし、応答なしでパケットを送信し続けるように見えます。これは、その IP アドレスに ping 要求に応答するデバイスが存在しないためです。数秒後、**Ctrl+C** を押してコマンドを停止します。パケットロスが 100% であることを示すサマリーが表示されます。このタイムアウトは、ホストがネットワーク上で到達可能でないことを判断するための一般的な方法です。

PING 172.16.50.250 (172.16.50.250) 56(84) bytes of data.
^C
--- 172.16.50.250 ping statistics ---
23 packets transmitted, 0 received, 100% packet loss, time 22510ms

この出力は、IP アドレスが到達可能であるためにはネットワーク上でアクティブである必要があることを確認します。コマンドを停止するには、**Ctrl+C** を押してください。

ping 224.0.0.1 でマルチキャストアドレスを探索する

この最後のステップでは、IP アドレスの異なるカテゴリであるマルチキャストを探索します。これまでは、ユニキャストアドレス(1 対 1 の通信:自分のマシンからループバックへ、自分のマシンからパブリックサーバーへなど)を扱ってきました。

マルチキャストは、1 対多の通信方法です。1 つのパケットが 1 つのソースから特別なマルチキャストアドレスに送信され、ネットワークインフラストラクチャがそのアドレスに「購読」しているすべてのデバイスに配信します。これは、個々の宛先に個別のパケットを送信するよりもはるかに効率的です。

224.0.0.0 から 239.255.255.255 までの IP アドレス範囲はマルチキャスト(クラス D)用に予約されています。ここでは、特別でよく知られたマルチキャストアドレス 224.0.0.1 を使用します。これは「all-hosts」グループアドレスです。ローカルネットワークセグメント上のマルチキャスト対応ホストは、このアドレスに送信されたトラフィックに応答するはずです。

ping した場合に何が起こるか見てみましょう。ターミナルで以下を実行します。

ping 224.0.0.1

理論的には、ローカルネットワーク上のマルチキャスト対応ホストは「all-hosts」グループへの ping に応答するはずです。自分のマシンからの応答が表示されるかもしれません。しかし、多くの最新の Linux 環境では、セキュリティまたはネットワークパフォーマンス上の理由から、デフォルトでマルチキャストアドレスへの ICMP エコー要求は無視されます。

出力を観察してください。応答は表示されない可能性が高いです。数秒後、**Ctrl+C** を押してコマンドを停止します。サマリーには 100% のパケットロスが表示されます。

PING 224.0.0.1 (224.0.0.1) 56(84) bytes of data.
^C
--- 224.0.0.1 ping statistics ---
14 packets transmitted, 0 received, 100% packet loss, time 13312ms

この結果は、重要な実際のネットワークの原則を示しています。理論的な標準(all-hosts マルチキャストへの応答など)が、実際には常に実装または有効になっているわけではありません。システム構成、ファイアウォール、またはカーネル設定によって、期待される動作が変更される可能性があります。ping を停止するには Ctrl+C を押してください。

まとめ

この実験では、一般的なコマンドラインユーティリティを使用して、Linux 環境における基本的な IP アドレッシングとネットワーク到達可能性の概念を探求しました。ループバックアドレス (127.0.0.1) を ping してローカル TCP/IP スタックの整合性を確認する方法、および ip a コマンドを使用してローカルネットワーク通信のためのシステムのプライベート IP アドレスを特定する方法を学びました。

さらに、ping 8.8.8.8 でパブリックインターネットへの到達可能性をテストし、割り当てられていないローカル IP アドレスを ping した際の応答を観察することで、ネットワーク接続の診断を実践しました。実験は、特別なアドレスタイプのエクスプロレーションで締めくくられ、特に ping 224.0.0.1 を使用して、ネットワーク上での 1 対多通信のためのマルチキャストアドレスの機能を理解しました。