はじめに
この実験では、現代的で強力なip aコマンドを使用して、Linuxシステム上の重要なネットワークアドレス情報を特定する方法を学びます。主な目的は、システムのネットワークインターフェースを調査し、コマンドの出力からMACアドレス、IPv4アドレス、IPv6アドレスといった特定の詳細情報を抽出できるようになることです。
まず、ip aコマンドを実行して、ループバック(lo)やプライマリイーサネット(eth0)インターフェースなど、すべてのネットワークインターフェースの包括的な概要を表示します。その後、詳細な出力を解析して、MACアドレスを示すlink/ether行、IPv4アドレスを示すinet行、およびIPv6アドレスを示すinet6行を特定する方法を学び、Linuxネットワーク分析の基礎を固めます。
ip aによる全ネットワークインターフェース情報の表示
このステップでは、Linuxシステムにおけるネットワークインターフェース、IPアドレス、ルートを表示および操作するための、現代的で推奨されるツールであるipコマンドの使い方を学びます。まずは、利用可能なすべてのネットワークインターフェースに関する情報を表示する最も基本的なコマンドから始めます。
ip aコマンドはip address showの短縮形です。これは、システムのネットワーク構成の包括的な概要を提供します。
まず、ターミナルにいることを確認してください。デフォルトのパスは~/projectです。次に、ip aコマンドを実行して、すべてのネットワークインターフェースとそれに関連付けられたアドレスを一覧表示します。
ip a
すべてのネットワークインターフェースがリストされた詳細な出力が表示されます。通常、以下のようなインターフェースが表示されます。
lo: ループバックインターフェースです。システムが自分自身と通信するために使用する仮想ネットワークインターフェースで、常にIPアドレス127.0.0.1を持ちます。eth0(またはenp0s5のような名前): プライマリイーサネットインターフェースです。システムを外部ネットワークに接続します。インターフェースの別名を提供するaltnameフィールドにも注目してください。docker0: Dockerがインストールされている場合、Dockerがコンテナネットワーク用に作成した仮想ブリッジであるdocker0インターフェースが表示されることがあります。
出力は以下の例のようになります(具体的な名前やアドレスは環境によって異なります)。
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:0e:d8:3c brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159975sec preferred_lft 1892159975sec
inet6 fe80::216:3eff:fe0e:d83c/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:60:7e:6f:bc 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
少し時間を取って出力を確認してください。次のステップでは、この情報を分解して、MACアドレスやIPアドレスなどの詳細を特定していきます。
MACアドレス(link/ether)の特定
このステップでは、ip aコマンドの出力からMACアドレス(Media Access Control address)を特定する方法を学びます。MACアドレスは、ネットワークインターフェースカード(NIC)に割り当てられた一意のハードウェアレベルの識別子です。物理アドレスとも呼ばれ、12桁の16進数で表現されます。
前のステップでip aを実行し、多くの情報が表示されました。ここではMACアドレスの特定に集中しましょう。通常eth0であるプライマリネットワークインターフェースを探してください。MACアドレスはlink/etherで始まる行に記載されています。
これを簡単にするために、ip aの出力をgrepコマンドにパイプして、MACアドレスを含む行だけをフィルタリングできます。パイプ記号|は、左側のコマンドの出力を右側のコマンドの入力として使用します。
ターミナルで以下のコマンドを実行してください。
ip a | grep "link/ether"
このコマンドは、ip aの出力のうち「link/ether」という文字列を含む行のみを表示します。
出力が大幅に短縮され、MACアドレスを見つけやすくなります。コロンで区切られた12桁の16進数がMACアドレスです。
link/ether 00:16:3e:0e:d8:3c brd ff:ff:ff:ff:ff:ff
link/ether 02:42:60:7e:6f:bc brd ff:ff:ff:ff:ff:ff
ループバックインターフェースloには従来のMACアドレスがないため、このフィルタリングされた出力には表示されません。この例では、00:16:3e:0e:d8:3cがeth0インターフェースのMACアドレスです。あなたの環境のアドレスは異なりますが、形式は同じです。
IPv4アドレス(inet)の特定
このステップでは、IPv4(Internet Protocol Version 4)アドレスを特定します。物理的なMACアドレスとは異なり、IPアドレスはネットワーク上での通信のためにデバイスに割り当てられる論理アドレスです。IPv4アドレスは最も一般的な形式で、ドットで区切られた4つの数値(例: 192.168.1.10)で表されます。
ip aコマンドの出力において、IPv4アドレスはinetで始まる行にあります。MACアドレスの時と同様に、grepコマンドを使用して出力をフィルタリングできます。inet6と混同しないように、検索パターンでinetの後にスペースを含めるのが良い習慣です。
ターミナルで以下のコマンドを実行し、システムに設定されているすべてのIPv4アドレスを見つけます。
ip a | grep "inet "
このコマンドは、IPv4アドレスを含む行のみを表示するように出力をフィルタリングします。通常、ループバックインターフェース(lo)用、メインネットワークインターフェース(eth0)用、およびdocker0などの他のインターフェース用の複数のアドレスが表示されます。
inet 127.0.0.1/8 scope host lo
inet 172.16.50.202/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
この出力から、複数のIPv4アドレスを特定できます。
127.0.0.1: ループバックアドレスであり、システムが自分自身と通信するために使用します。172.16.50.202/24:eth0インターフェースのプライマリIPv4アドレスで、ネットワーク上の他のデバイスとの通信に使用されます。/24はCIDR表記であり、ネットワークのサブネットマスクを定義しています。あなたのアドレスはこれとは異なります。172.17.0.1/16:docker0ブリッジのIPv4アドレスです。
IPv6アドレス(inet6)の特定
最後のステップでは、IPv6(Internet Protocol Version 6)アドレスを特定します。IPv6はIPv4の後継であり、IPv4アドレスの枯渇に対応するために設計されました。IPv6アドレスは128ビット長で、コロンで区切られた16進数表記(例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334)で記述されます。
IPv4と同様に、ip aコマンドはIPv6情報も表示します。IPv6アドレスを含む行はinet6と明確にマークされています。最後にgrepを使用してこの情報を抽出します。
ターミナルで以下のコマンドを実行し、システム上のすべてのIPv6アドレスを見つけます。
ip a | grep "inet6"
このコマンドは、インターフェースのIPv6アドレスを含む行を表示します。
inet6 ::1/128 scope host
inet6 fe80::216:3eff:fe0e:d83c/64 scope link
この出力から、2つのIPv6アドレスを特定できます。
::1/128: IPv6ループバックアドレスの圧縮形式であり、IPv4の127.0.0.1に相当します。fe80::216:3eff:fe0e:d83c/64:eth0インターフェースのリンクローカルIPv6アドレスです。リンクローカルアドレスは、IPv6が有効なすべてのインターフェースで自動的に設定され、同じローカルネットワークセグメント内での通信のみに使用されます。あなたのアドレスはこれとは異なります。
おめでとうございます!これで、ip aコマンドを使用してLinuxシステム上のMACアドレス、IPv4アドレス、IPv6アドレスを特定する方法を習得しました。
まとめ
この実験では、Linuxでネットワークアドレスを特定するためにip aコマンドを使用する方法を学びました。ネットワーク構成のための現代的で推奨されるツールであるip aを実行し、すべてのネットワークインターフェースに関する包括的な情報を表示しました。出力には、ループバックインターフェース(lo)とプライマリイーサネットインターフェース(eth0)の両方の詳細が表示され、システムのネットワーク設定の全体像を把握できました。
ip aコマンドの出力を調べることで、特定のネットワーク識別子を見つける方法を学びました。link/etherラベルが付いた行からMACアドレスを特定し、inetラベルの横にあるシステムのIPv4アドレス、およびinet6ラベルの横にあるIPv6アドレスを特定しました。これにより、Linuxシステムで不可欠なネットワークアドレス情報を取得する基本的なスキルを習得しました。



