1. 概要

IPアドレスとは何ですか? インターネットプロトコル(IP)アドレスは、通信にインターネットプロトコルを使用するネットワーク内のハードウェアデバイスを識別するためのラベルです。 これらのIPアドレスは、任意のネットワーク内のデバイス間のすべての通信メッセージの不可欠な部分です。

このIPタグ付けは、ルーターと中間デバイスがメッセージを適切な宛先にルーティングするために不可欠です。 簡単に言うと、IPアドレスは、郵便局が郵便物をルーティングするために使用する内陸のPINコードに類似しています。

この記事では、LinuxマシンのプライマリIPアドレスを確認する方法を学びましょう。

2. IPアドレスの種類

まず、IPアドレスの種類について学びましょう。 2つのIPアドレスバージョン、IPv4とIPv6があります。 IPv4アドレスは、現在最も使用されているIPアドレス指定バージョンです。 その形式は、ピリオドで区切られた0から255までの一連の4つの数値です。 たとえば、10.106.146.25はIPv4アドレスです。

IPv4 IPアドレスは広く使用されていますが、今日のエンドネットワークデバイスの急増により、より多くのアドレスプールが必要になっています。

IPv6アドレスは、ビット数を増やし、アドレスに英数字を含めることで、IPv4アドレスの限られたプールを緩和しようとします。 IPv6アドレスは128ビットで構成され、16ビットの長さの16進数の8つのグループがあり、コロンで区切られています。 例として、FE80:CD00:0000:0CDE:1257:0000:211E:729CはIPv6アドレスです。

次に、2つのIPバージョンとは別に、2つの幅広いタイプのIPアドレスがあります。

  • プライベートIPアドレス(内部IP)
  • パブリックIPアドレス(外部IP)

プライベートIPアドレスは、ローカルネットワーク内のデバイスを識別するためのものです。 次の範囲のすべてのアドレスはプライベートIPアドレスです。

  • 10.0.0.0 – 10.255.255.255
  • 172.16.0.0 – 173.31.255.255
  • 192.168.0.0 – 192.168.255.255

パブリックIPアドレスは、インターネット上のデバイスを識別するためのものです。 すべての非プライベートアドレスは、パブリックアドレス範囲に属します。

一般に、 IPアドレスは、静的アドレスまたは動的アドレスのいずれかです。 静的IPアドレスは、時間の経過とともに変化しないアドレスです。 一方、動的IPアドレスは、ネットワーク内のDHCPサーバーによって割り当てられるため、時々変更されます。

3. システムはいくつのIPアドレスを持つことができますか?

ここで、Linuxシステムがどのようにネットワークに接続するかを理解しましょう。 NIC(ネットワークインターフェイスカード)と呼ばれる特別なハードウェアがあります。これは、任意のデバイスをネットワークに接続するというこの魔法を実行します。 ネットワークインターフェイスコントローラー、ネットワークアダプター、またはLANアダプターは、NICハードウェアの別名です。

システムには、ネットワーク接続用に1つ以上のNICを含めることができます。 各NICは、ネットワーク内の一意のIPアドレスで自身を識別します。 つまり、どのシステムでも1つまたは複数のIPアドレスを持つことができます(多くのNICが接続されているため)。

システムに多数のNICが関連付けられている場合でも、プライマリIPアドレスは常に1つだけになります。

4. ネットワークインターフェースの概要

まず、ネットワークインターフェイスとは何ですか? ネットワークインターフェイスは、ネットワークインターフェイスカードソフトウェア表現です。 ネットワークインターフェイスは、ネットワークハードウェア(NICカード)と通信して構成し、 IPアドレス、MACアドレス、リンクステータス、パケット転送などのハードウェアに関する情報を取得するための媒体です。 ip ユーティリティを使用して、システムのネットワークインターフェイスの詳細を確認しましょう。

$ ip address show
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:d5:cd:03 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.207.128/24 brd 192.168.207.255 scope global dynamic noprefixroute ens33
       valid_lft 1773sec preferred_lft 1773sec
    inet6 fe80::37c:eba3:2365:23b7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

ここでは、システムに2つのネットワークインターフェイスens33lo(ループバックインターフェイス)があり、それらの詳細がリストされていることがわかります。

4.1. プライマリネットワークインターフェイス

Linuxシステムでは、ネットワークへのプライマリアクティブ接続は1つだけです。 その結果、プライマリインターフェイスは1つだけ存在します。 カーネルルーティングテーブルは、プライマリインターフェイスを識別するのに役立ちます。

すでに知っているように、プライマリインターフェイスはデフォルトルートを持つインターフェイスです。これは、プライマリインターフェイスがデフォルトゲートウェイに到達できる必要があることを意味します。 つまり、カーネルルーティングテーブルのゲートウェイエントリは、システムのプライマリアクティブインターフェイスにリンクされている必要があります。

それでは、 route ユーティリティを使用して、カーネルルーティングテーブルを確認しましょう。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 ens33
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.207.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

上記のスニペットでは、 ens33 インターフェースがデフォルトゲートウェイに接続されているため、システムの主要なアクティブインターフェースであることがわかります。

5. プライマリアクティブインターフェイスのIPアドレスを確認する

続いて、プライマリアクティブインターフェイスを識別した後、最後のステップはプライマリIPアドレス(つまり、プライマリアクティブインターフェイスのIPアドレス)をチェックすることです。 プライマリIPアドレスを見つけるための多くのLinuxユーティリティがあります。

このセクションでは、3つのユーティリティすべてをチェックして、LinuxシステムのプライマリIPアドレスを見つけましょう。

5.1. ipユーティリティ

システム内のすべてのネットワークインターフェイスの詳細を確認するためのipユーティリティについてはすでに学習しました。 一方、同じユーティリティを使用してシステムのプライマリIPアドレスを取得する方法を見てみましょう。

プライマリIPアドレスを取得するには、プライマリアクティブインターフェイスの詳細が必要です。 ipユーティリティにパラメーターとしてインターフェース名を指定することにより、特定のインターフェースの詳細を取得できます。 私たちのシステムでは、ens33がプライマリアクティブインターフェイスであることがすでにわかりました。 それでは、プライマリアクティブインターフェイスのすべての詳細を取得しましょう。

$ ip address show dev ens33 
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:d5:cd:03 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.207.128/24 brd 192.168.207.255 scope global dynamic noprefixroute ens33
       valid_lft 1086sec preferred_lft 1086sec
    inet6 fe80::37c:eba3:2365:23b7/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

上記のコードスニペットでは、 ip ユーティリティを使用して、プライマリアクティブインターフェイス ens33 に関するIPアドレス、MACアドレス、トラフィックの詳細などのすべての詳細を取得しました。

続いて、プライマリIPアドレスのみを表示するために、フェッチされたプライマリインターフェイスの詳細に対してgrepawkなどのSnippingToolを使用します。

$ ip address show dev ens33 | grep -w inet | awk '{print $2}'
192.168.207.128/24

ここで、 ip ユーティリティは、IPアドレスとともにネットマスクを表示します。

上記の方法に加えて、ipユーティリティを使用してプライマリIPアドレスを見つけることができます。 ipユーティリティは、任意の宛先へのルートを見つけることができます。 デフォルトルートを使用するインターフェイスであるため、この機能を使用してプライマリIPアドレスを見つけることができます。

ip ユーティリティを使用して、任意のランダムIPアドレス(1.1.1.1)に到達するためのルートを見つけましょう。

$ ip route get 1.1.1.1
1.1.1.1 via 192.168.207.2 dev ens33 src 192.168.207.128 uid 1000 
    cache 

ここで、上記のスニペットは、IPアドレスが 192.168.207.128 —プライマリIPアドレスであるインターフェイス ens33、を介してシステムが1.1.1.1に到達できることを示しています。

5.2. ifconfigユーティリティ

ifconfig ユーティリティは、広く使用されているもう1つのネットワーク構成ツールです。 このレガシーユーティリティは廃止され、ipユーティリティが採用されましたが、多くのLinuxディストリビューションはまだこのユーティリティをサポートしています。 ip ユーティリティと同様に、ユーザーはプライマリアクティブインターフェイス名を引数として渡す必要があります。

$ ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.207.128  netmask 255.255.255.0  broadcast 192.168.207.255
        inet6 fe80::37c:eba3:2365:23b7  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d5:cd:03  txqueuelen 1000  (Ethernet)
        RX packets 11265  bytes 11392205 (11.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2591  bytes 397297 (397.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

続いて、プライマリIPアドレスのみを表示するために、フェッチされたプライマリインターフェイスの詳細に対してSnippingToolを使用します。

$ ifconfig ens33 | grep -w inet | awk '{print $2}'
192.168.207.128

5.3. nmcliユーティリティ

nmcli ユーティリティは、network-managerがインストールされているシステムでネットワーク設定を構成および表示するためのものです。 これは通常、現代のすべてのLinuxディストリビューションに存在します。 このユーティリティは、システムに存在するすべてのインターフェイスに関する詳細を取得するため、ユーザーはプライマリアクティブネットワークインターフェイスのプライマリIPアドレスを熟読して見つける必要があります。

$ nmcli 
ens33: connected to Wired connection 1
        "Intel 82545EM"
        ethernet (e1000), 00:0C:29:D5:CD:03, hw, mtu 1500
        ip4 default
        inet4 192.168.207.128/24
        route4 0.0.0.0/0
        route4 192.168.207.0/24
        route4 169.254.0.0/16
        inet6 fe80::37c:eba3:2365:23b7/64
        route6 fe80::/64

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 192.168.207.2
        domains: localdomain
        interface: ens33

Use "nmcli device show" to get complete information about known devices and
"nmcli connection show" to get an overview of active connection profiles.

Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.

最後に、nmcliユーティリティの出力のens33セクション(プライマリアクティブインターフェイス)を調べて、プライマリIPv4アドレス( 192.168.207.128 / 24 )を見つけましょう。

6. 外部IPアドレス

外部IPアドレスとローカルIPアドレスは、システムに一意のIDを提供するという同じ目的を果たします。 それらの唯一の違いはスコープです。 ローカルIPアドレスは、ローカルネットワーク内のシステムのIDです。 それどころか、外部IPアドレスは、インターネット全体にわたるシステムのIDです。 したがって、インターネットに接続されているすべてのシステムには、ローカルIPアドレス(ローカルID用)と外部IPアドレス(グローバルID用)があります。

この記事のこれまでのところ、システムのローカルIPアドレスを確認する多くの方法について説明してきました。 システムの外部IPアドレスを確認するには:

$ curl ifconfig.me
220.158.158.132

または、ipchicken.comなどのWebサイトサービスを使用して外部IPアドレスを確認することもできます。

7. 結論

要約すると、IPアドレスとは何か、およびIPアドレスのさまざまなバージョンとタイプについて学習しました。 また、プライマリアクティブインターフェイスを見つける方法と、 ifconfig ip 、およびnmcliユーティリティを使用してLinuxシステム。