LinuxにおけるIPアドレス管理

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

はじめに

この実験では、Linux環境におけるIPアドレス管理の基礎スキルを習得します。まず、最新のipコマンドを使用してシステムのネットワークインターフェースを確認します。続いて、手動で静的IPアドレスを設定し、外部ネットワークとの通信を可能にするデフォルトゲートウェイを指定した後、pingユーティリティを使用して接続を確認します。

次に、静的アドレスを解放し、dhclientコマンドを使用してDHCPサーバーから新しいIPアドレスを自動的に取得する動的IP設定について学びます。最後に、arpおよびtracerouteコマンドを使用してネットワーク構成を詳細に調査・検証し、すべてのコンポーネントが正しく動作していることを確認します。

ip aによるネットワークインターフェースの確認

このステップでは、Linuxシステムのネットワークインターフェースを確認する方法を学びます。IPアドレスを設定する前に、まず設定対象となるネットワークインターフェースの名前を特定する必要があります。有線・無線を問わず、すべての接続はネットワークインターフェースを通じて管理されます。

Linuxにおいてネットワークインターフェースを表示・操作するための標準的かつ現代的なコマンドはipです。これにa(またはaddress)引数を付けて実行することで、すべてのネットワークインターフェースとそのIPアドレスを表示します。

  1. ターミナルを開きます。すでに~/projectディレクトリにいるはずです。

  2. すべてのネットワークインターフェースとその現在の設定を一覧表示するには、以下のコマンドを実行します。

    ip a
    

    以下のような出力が表示されます。インターフェース名(eth0enp0s5など)、IPアドレス、MACアドレスなどの詳細は、実験環境を起動するたびに異なります。

    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
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159972sec preferred_lft 1892159972sec
    3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
        link/ether 02:42:bb:cb:56:62 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
    

出力の理解:

  • 1: lo: これはループバックインターフェースです。システムが自分自身と通信するために使用する仮想インターフェースで、常に127.0.0.1というIPアドレスを持ちます。
  • 2: eth0: これはメインのイーサネット(有線)インターフェースです。環境によっては名前が異なったり、altname(別名)としてenp0s5などが表示されたりすることがあります。これが今回操作するインターフェースです。
  • 3: docker0: docker0のような他のインターフェースが表示されることがありますが、これはDockerコンテナエンジンが使用するものです。この実験では無視して構いません。
  • inet 172.16.50.11/24: これはインターフェースに割り当てられたIPv4アドレスです。表示されるアドレスは環境ごとに異なります。このアドレスによって、リモートの実験環境に接続できています。
  • link/ether ...: これはインターフェースのMACアドレスであり、一意のハードウェア識別子です。

メインのネットワークインターフェース(eth0)を特定できたので、次は設定方法を学びます。

セカンダリ静的IPアドレスの設定

このステップでは、ネットワークインターフェースに手動で追加の静的IPアドレスを割り当てます。静的IPは、常に同じアドレスでアクセス可能である必要があるサーバーにとって有用です。

重要な注意: リモートの実験セッションに接続しているため、既存のIPアドレスを削除したり、ネットワークインターフェースをダウンさせたりしないでください。それを行うと接続が切断されます。代わりに、インターフェースに2つ目のIPアドレスを追加します。これは一般的で安全な手法です。

  1. eth0インターフェースに、サブネットマスク/24の新しい静的IPアドレス192.168.1.10を割り当てます。インターフェース名が異なる場合は、その名前を使用してください。

    sudo ip addr add 192.168.1.10/24 dev eth0
    

    このコマンドは、既存のアドレスに影響を与えることなく新しいアドレスを追加します。成功した場合、出力は何も表示されません。

  2. 最後に、新しいIPアドレスが割り当てられたことを確認します。再度ip aコマンドを使用し、eth0インターフェースを指定します。

    ip a show eth0
    

    eth0インターフェースに対して、元の動的IPアドレスと新しい静的IPアドレスの両方が表示されるはずです。

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159595sec preferred_lft 1892159595sec
        inet 192.168.1.10/24 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever
    

    2つ目のinetフィールドに192.168.1.10/24が表示されていることがわかります。接続を維持したまま、一時的な静的IPアドレスの追加に成功しました。

デフォルトゲートウェイの設定とpingによる接続確認

このステップでは、デフォルトゲートウェイを設定し、ネットワーク接続をテストします。デフォルトゲートウェイとは、宛先が別のネットワーク(インターネットなど)にある場合に、システムがトラフィックを送信するルーターのことです。

システムにはすでに実験環境から提供されたデフォルトゲートウェイが存在します。これを変更または削除すると接続が切断されます。このコマンドを安全に練習するため、より高いメトリック(metric)を持つ2つ目のデフォルトルートを追加します。メトリックが高いということは優先度が低いことを意味するため、システムは実際のトラフィックにこれを使用せず、接続を安全に保つことができます。

  1. 192.168.1.0/24ネットワーク用のデフォルトゲートウェイを追加します。ゲートウェイのIPを192.168.1.1とし、metric200に設定します。

    sudo ip route add default via 192.168.1.1 dev eth0 metric 200
    
    • default: デフォルトルートであることを指定します。
    • via 192.168.1.1: ゲートウェイルーターのIPアドレスです。
    • dev eth0: eth0インターフェース経由でルートにアクセスします。
    • metric 200: 既存のプライマリルート(メトリックが低い)よりも優先度を下げます。
  2. ルーティングテーブルを表示して、ルートが追加されたことを確認します。

    ip route
    

    出力は複雑で環境により異なりますが、defaultで始まる行が2つ含まれているはずです。元のゲートウェイはメトリックが低く(例: 100)、新しく追加した方はメトリックが200になります。

    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    default via 192.168.1.1 dev eth0 metric 200
    172.16.50.0/24 dev eth0 proto kernel scope link src 172.16.50.11 metric 100
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10
    ... (他のルートが表示される場合があります)
    
  3. 次に、pingで接続をテストします。これはICMP「エコー要求」をホストに送信し、到達可能かを確認するものです。先ほど設定した架空のネットワークのゲートウェイにpingを送信してみましょう。

    ping -c 3 192.168.1.1
    

    予想される結果: このコマンドは失敗するはずですeth0192.168.1.10/24を追加したため、システムは192.168.1.1が同じローカルネットワーク上にあると判断します。直接到達しようとしますが、そのアドレスを持つデバイスは存在しないため、「Destination Host Unreachable(宛先ホストに到達できません)」と表示されます。

    PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
    From 192.168.1.10 icmp_seq=1 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=2 Destination Host Unreachable
    From 192.168.1.10 icmp_seq=3 Destination Host Unreachable
    
    --- 192.168.1.1 ping statistics ---
    3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2039ms
    

    これが正しく予想通りの結果です。デフォルトルートの追加方法と、テストのためのpingの使用方法を学びました。

dhclientを使用した動的IPアドレスへの復帰

このステップでは、作成した静的設定を削除し、dhclientを使用してDHCPサーバーから動的IPリースを更新します。

まず、isc-dhcp-clientパッケージの一部であるdhclientツールがインストールされていない可能性があるため、利用可能であることを確認します。

  1. システムのパッケージリストを更新し、DHCPクライアントをインストールします。

    sudo apt-get update
    sudo apt-get install -y isc-dhcp-client
    

    次に、接続を中断することなく、前のステップで追加した静的IPとルートを安全に削除します。

  2. eth0から静的IPアドレスを削除します。

    sudo ip addr del 192.168.1.10/24 dev eth0
    
  3. 追加した静的デフォルトルートを削除します。

    sudo ip route del default via 192.168.1.1 dev eth0
    

    これでネットワーク設定が元の状態に戻りました。dhclientの動作を確認するため、DHCPサーバーからIPアドレスの更新を要求します。

  4. まず、現在のDHCPリースを解放します。

    sudo dhclient -r eth0
    
  5. 次に、DHCPサーバーから新しいリースを要求します。

    sudo dhclient eth0
    

    RTNETLINK answers: File existsというメッセージが表示されることがありますが、これは正常です。これはdhclientがすでに存在するルートを追加しようとしていることを意味しており、変更の必要がないためです。接続は安定したまま維持されます。

  6. eth0インターフェースを再度表示して、設定を確認します。

    ip a show eth0
    

    出力には、実験環境から割り当てられた元の動的IPアドレス(10.x.x.x172.16.x.xなどのプライベートアドレス)のみが表示されるはずです。静的IP 192.168.1.10は消えているはずです。

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 00:16:3e:0f:23:a5 brd ff:ff:ff:ff:ff:ff
        altname enp0s5
        inet 172.16.50.11/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
           valid_lft 1892159460sec preferred_lft 1892159460sec
        inet6 fe80::216:3eff:fe0f:23a5/64 scope link
           valid_lft forever preferred_lft forever
    

    静的設定のクリーンアップと、動的IPリースの更新に成功しました。

arpとtracerouteによるネットワーク構成の検証

この最後のステップでは、arptracerouteを使用してネットワーク構成を調査する方法を学びます。

まず、必要なツールがインストールされていることを確認します。arpnet-toolsに含まれており、tracerouteは個別のパッケージです。

  1. net-toolstracerouteをインストールします。

    sudo apt-get update
    sudo apt-get install -y net-tools traceroute
    

arpを使用したARPキャッシュの表示

Address Resolution Protocol (ARP) は、ローカルネットワーク上でIPアドレスを物理的なMACアドレスにマッピングします。結果はARPキャッシュに保存されます。

  1. ARPキャッシュを生成するために、まずルーティングテーブルからデフォルトゲートウェイのIPを見つけます。

    ip route | grep default
    

    出力からゲートウェイのIPを確認します。IPアドレスは環境によって異なります。

    default via 172.16.50.253 dev eth0
    default via 172.16.50.253 dev eth0 proto dhcp src 172.16.50.11 metric 100
    
  2. 次に、そのゲートウェイIP(上記の例では172.16.50.253)にpingを送信してトラフィックを発生させます。

    ping -c 1 <your-gateway-ip>
    
  3. arp -aを使用してARPキャッシュを表示します。

    arp -a
    

    ゲートウェイのIPとMACアドレスが表示されます。先ほどpingを試みた192.168.1.1アドレスに対して<incomplete>と表示されることがありますが、これは正常です。

    ? (192.168.1.1) at <incomplete> on eth0
    _gateway (172.16.50.253) at ee:ff:ff:ff:ff:ff [ether] on eth0
    

    これにより、システムがゲートウェイのIPをMACアドレスに解決できたことが確認できます。

tracerouteを使用したネットワークパスの追跡

tracerouteコマンドは、パケットが宛先に到達するまでに経由するルーター(ホップ)のシーケンスを表示します。

  1. google.comのようなパブリックドメインへのルートを追跡してみましょう。

    traceroute google.com
    

    コマンドがパスを表示します。注意: 多くのクラウド環境では、tracerouteで表示される最初のホップは内部IPアドレスであり、ルーティングテーブルのデフォルトゲートウェイとは異なる場合があります。これは正常な動作です。

    traceroute to google.com (142.250.189.174), 30 hops max, 60 byte packets
     1  10.220.9.2 (10.220.9.2)  0.345 ms  ...
     2  11.73.5.1 (11.73.5.1)  1.978 ms ...
     3  ...
     8  sfo03s24-in-f14.1e100.net (142.250.189.174)  3.001 ms ...
    
    • 最初のホップは、ラボプロバイダーのネットワーク内のルーターです。
    • それ以降のホップは、インターネットを経由して最終的な宛先までのパスを示します。
    • パス上のルーターがtracerouteのプローブに応答しない場合、アスタリスク(* * *)が表示されることがあります。これはファイアウォールやネットワークポリシーによるものです。

おめでとうございます!これで、LinuxシステムにおけるIPアドレスの確認、静的設定、動的設定の方法を学び、pingarptracerouteといった重要なツールを使用してネットワークを検証・トラブルシューティングする方法を習得しました。

まとめ

この実験では、Linux環境におけるIPアドレス管理の基礎スキルを学びました。まず、ip aコマンドを使用してネットワークインターフェースとその現在の設定を確認し、eth0などのターゲットインターフェースを特定しました。次に、ip addr addを使用して静的IPアドレスとサブネットマスクを手動で割り当てる練習を行い、ip route addを使用してデフォルトゲートウェイを設定し、外部ネットワークとの通信を可能にしました。手動設定との対比として、dhclientコマンドを使用してDHCPサーバーからIPアドレス、サブネットマスク、ゲートウェイを自動的に取得する方法も学びました。

さらに、不可欠なネットワーク検証およびトラブルシューティングツールについても調査しました。pingコマンドを使用して、デフォルトゲートウェイおよび外部ホストへの基本的なネットワーク接続を確認しました。ネットワーク層をより深く理解するために、arpコマンドを使用してARPキャッシュを調べ、IPアドレスとMACアドレスのマッピングを確認しました。最後に、tracerouteを使用して宛先までのネットワークパスをホップごとに追跡し、ルーティング構成を検証しました。