はじめに
この実験では、モダンで強力な 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 コマンドの出力から Media Access Control (MAC) アドレスを特定する方法を学びます。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)を見つける
このステップでは、Internet Protocol Version 4 (IPv4) アドレスを特定します。物理的な MAC アドレスとは異なり、IP アドレスはネットワーク上での通信のためにデバイスに割り当てられる論理アドレスです。IPv4 アドレスは最も一般的な形式で、ドットで区切られた 4 つの数字で表されます(例:192.168.1.10)。
ip a コマンドの出力内で、IPv4 アドレスは inet で始まる行に見つかります。MAC アドレスの場合と同様に、grep コマンドを使用して出力をフィルタリングできます。inet6 との誤マッチを防ぐために、検索パターンに inet の後にスペースを含めるのが良い習慣です。
ターミナルで、システムに設定されているすべての IPv4 アドレスを見つけるために、次のコマンドを実行します。
ip a | grep "inet "
このコマンドは、IPv4 アドレスを含む行のみを表示するように出力をフィルタリングします。通常、いくつか表示されます。ループバックインターフェイス (lo) 用に 1 つ、メインネットワークインターフェイス (eth0) 用に 1 つ、そしておそらく 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)を見つける
この最後のステップでは、Internet Protocol Version 6 (IPv6) アドレスを特定します。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 対応インターフェイスに自動的に設定され、同じローカルネットワークセグメント上でのみ通信に使用されます。あなたのアドレスは異なるでしょう。
おめでとうございます!これで、Linux システムで ip a コマンドを使用して MAC アドレス、IPv4 アドレス、および IPv6 アドレスを特定する方法を学びました。
まとめ
この実験では、Linux でネットワークアドレスを特定するために ip a コマンドを使用する方法を学びました。ネットワーク設定のための現代的で推奨されるツールである ip a を実行し、すべてのネットワークインターフェイスに関する包括的な情報を表示しました。出力により、ループバックインターフェイス (lo) とプライマリイーサネットインターフェイス (eth0) の両方の詳細が明らかになり、システムのネットワーク設定の完全な概要が提供されました。
ip a コマンドの出力を調べることで、特定のネットワーク識別子を見つける方法を学びました。link/ether というラベルが付いた行にある MAC アドレスを特定することに成功しました。さらに、inet ラベルの隣にあるシステムの IPv4 アドレスと、inet6 ラベルの隣にある IPv6 アドレスを見つけ、Linux システムで必須のネットワークアドレス情報を取得するという基本的なスキルを習得しました。



