LinuxマシンのプライマリIPアドレスを検索する
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つのネットワークインターフェイスens33とlo(ループバックインターフェイス)があり、それらの詳細がリストされていることがわかります。
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アドレスのみを表示するために、フェッチされたプライマリインターフェイスの詳細に対してgrepやawkなどの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システム。