UbuntuにおけるIPアドレスの調べ方:ifconfigとipコマンドの詳細解説
はじめに
コンピュータネットワークにおいて、IPアドレスは情報の送受信を行う上で不可欠な識別子です。インターネット上のWebサイトにアクセスしたり、同一ネットワーク内の別のコンピュータと通信したりする場合、宛先のIPアドレスを知っている必要があります。同時に、自分のコンピュータのIPアドレスを知ることも、ネットワークの状態を把握し、問題を解決する上で非常に重要です。
特に、LinuxディストリビューションであるUbuntuでは、コマンドラインからネットワークインターフェースの状態を確認し、IPアドレスを調べるための強力なツールが提供されています。その中でも代表的なものが、古くから使われているifconfigコマンドと、より新しく多機能なipコマンドです。
この記事では、Ubuntu環境において、これらifconfigとipコマンドを使ってIPアドレスやその他のネットワーク関連情報を調べる方法について、歴史的な背景から詳細な使い方、出力の読み方、そして両コマンドの違いと使い分けに至るまで、約5000語にわたり徹底的に解説します。ネットワークの基礎知識から応用的な使い方、トラブルシューティングのヒントまで網羅することで、読者がUbuntuのネットワーク環境をより深く理解し、自在に操作できるようになることを目指します。
セクション1:IPアドレスとネットワークインターフェースの基礎
IPアドレスやネットワークインターフェースの確認コマンドについて理解を深める前に、まずはその対象となる要素について基本的な知識を整理しておきましょう。
IPアドレスとは
IPアドレス(Internet Protocol Address)は、ネットワークに接続された各デバイスに割り当てられる識別番号です。郵便における住所のようなもので、データパケットを正しい宛先に届けるために使用されます。IPアドレスには主に二つのバージョンがあります。
- IPv4 (Internet Protocol version 4): 現在主流となっているバージョンで、32ビットの数値によって表されます。「192.168.1.100」のように、8ビットずつをドットで区切った4つのオクテット形式(例:xxx.xxx.xxx.xxx)で表記されるのが一般的です。約43億個のアドレスを生成できますが、インターネットの普及によりアドレス枯渇問題が生じています。
- IPv6 (Internet Protocol version 6): IPv4の後継となるバージョンで、128ビットの数値によって表されます。「2001:0db8:85a3:0000:0000:8a2e:0370:7334」のように、16ビットずつをコロンで区切った8つのブロック形式で表記されます。非常に膨大な数のアドレスを生成でき、アドレス枯渇問題を解消するとともに、様々な機能拡張が行われています。
プライベートIPアドレスとグローバルIPアドレス
IPアドレスは、その利用範囲によってプライベートIPアドレスとグローバルIPアドレスに分けられます。
- グローバルIPアドレス: インターネット上で一意に識別されるアドレスです。世界中に一つとして同じグローバルIPアドレスは存在しません。インターネット上のサーバーや、直接インターネットに接続されるデバイスに割り当てられます。
- プライベートIPアドレス: 組織内や家庭内などのローカルネットワーク内で自由に利用できるアドレスです。インターネット上では一意ではありません。ルーターの内側にあるPCやスマートフォンなどに割り当てられます。プライベートIPアドレスは、特定の範囲のアドレスが予約されています(例: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)。
ローカルネットワーク内のデバイスがインターネットと通信する際には、NAT(Network Address Translation)と呼ばれる技術によって、プライベートIPアドレスがルーターのグローバルIPアドレスに変換されます。
サブネットマスク、デフォルトゲートウェイ、DNSサーバー
IPアドレスとともに、ネットワーク通信に必要な基本的な設定情報として、以下のものがあります。
- サブネットマスク (Subnet Mask): IPアドレスのどの部分がネットワークアドレスで、どの部分がホストアドレスであるかを区別するための数値です。これにより、一つの大きなネットワークを複数の小さなネットワーク(サブネット)に分割したり、逆に複数のサブネットを統合したりすることが可能になります。例えば、IPv4では「255.255.255.0」のような形式で表現され、IPアドレスとサブネットマスクを論理積演算することでネットワークアドレスが得られます。CIDR(Classless Inter-Domain Routing)表記では、IPアドレスの末尾に「/」とネットワークアドレスのビット長を付けて表現します(例: 192.168.1.100/24)。
- デフォルトゲートウェイ (Default Gateway): 異なるネットワークと通信する際に経由する機器(主にルーター)のIPアドレスです。自分自身の所属するネットワーク外のアドレス宛ての通信は、まずデフォルトゲートウェイに送られます。
- DNSサーバー (Domain Name System Server): 「www.google.com」のような人間が理解しやすいドメイン名を、コンピュータが理解できるIPアドレスに変換(名前解決)してくれるサーバーです。インターネットを利用する上で非常に重要です。
ネットワークインターフェース(NIC)
ネットワークインターフェース(Network Interface)は、コンピュータがネットワークに接続するための物理的または仮想的な装置やその機能のことです。一般的には、LANカード(NIC: Network Interface Card)や無線LANアダプターなどのハードウェアを指しますが、ソフトウェア的に実現される仮想的なインターフェースも多数存在します。
UbuntuのようなLinuxシステムでは、それぞれのネットワークインターフェースに名前が付けられています。この名前を使って、特定のインターフェースの状態を確認したり、設定を変更したりします。インターフェース名の例としては、以下のようなものがあります。
eth0,eth1, …: 伝統的な有線LANインターフェース名。wlan0,wlan1, …: 伝統的な無線LANインターフェース名。lo: ループバックインターフェース。自分自身(ローカルホスト)を表す仮想的なインターフェースで、IPアドレスは通常127.0.0.1 (IPv4) または ::1 (IPv6) です。これはネットワーク設定やアプリケーションのテストに使用されます。br0,virbr0, …: ブリッジインターフェース。複数のインターフェースをまとめて一つの論理インターフェースとして扱います。仮想化環境などでよく使われます。vethXXX,dockerXXX, …: 仮想イーサネットペアやDockerなどのコンテナに関連する仮想インターフェース。ensXXX,enpXXX,wlsXXX, …: 近年のシステムで採用されている、BIOSやハードウェアの情報を基にした予測可能なインターフェース名(Predictable Network Interface Names)。従来のethX/wlanXよりもハードウェアに固定された名前になりやすく、再起動しても名前が変わる可能性が低くなります。
これらのインターフェース名は、IPアドレスなどのネットワーク設定と関連付けられており、コマンドを使って情報を参照する際に指定することがよくあります。
セクション2:ifconfigコマンドの詳細
ifconfig(interface configurator)コマンドは、古くからUNIX系OSで使われているネットワークインターフェースの設定および表示ツールです。かつてはネットワーク設定のデファクトスタンダードでしたが、後述するipコマンドにその座を譲りつつあります。しかし、未だ多くのシステムで利用可能であり、その手軽さから現在でも頻繁に使用されています。
ifconfigコマンドのインストール
多くのUbuntuシステムにはデフォルトでifconfigコマンドが含まれています。しかし、Minimalインストールなどで含まれていない場合は、net-toolsパッケージをインストールする必要があります。
bash
sudo apt update
sudo apt install net-tools
ifconfigコマンドの基本的な使い方
引数を付けずにifconfigコマンドを実行すると、システム上のアクティブな(upになっている)すべてのネットワークインターフェースに関する情報が表示されます。
bash
ifconfig
実行例:
“`
eth0: flags=4163
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe12:3456 prefixlen 64 scopeid 0x20
ether 08:00:27:12:34:56 txqueuelen 1000 (Ethernet)
RX packets 1234 bytes 123456 (120.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 987 bytes 98765 (96.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 567 bytes 56789 (55.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 567 bytes 56789 (55.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
“`
上記の例では、eth0とloという二つのインターフェースの情報が表示されています。それぞれのインターフェースごとに、以下のような情報が含まれています。
- インターフェース名: (
eth0,lo) – ネットワークインターフェースの名前です。 - flags: (
4163<UP,BROADCAST,RUNNING,MULTICAST>) – インターフェースの状態を示すフラグ。主なフラグの意味は以下の通りです。UP: インターフェースが有効になっています。BROADCAST: ブロードキャスト通信が可能です。RUNNING: 物理層がリンクアップしています。LOOPBACK: ループバックインターフェースです。MULTICAST: マルチキャスト通信が可能です。
- mtu: (
1500,65536) – Maximum Transmission Unit(最大転送単位)。一度に送信できるデータパケットの最大サイズ(バイト)です。 - inet: (
192.168.1.100,127.0.0.1) – IPv4アドレスです。 - netmask: (
255.255.255.0,255.0.0.0) – IPv4のサブネットマスクです。 - broadcast: (
192.168.1.255) – IPv4のブロードキャストアドレスです。 - inet6: (
fe80::a00:27ff:fe12:3456,::1) – IPv6アドレスです。 - prefixlen: (
64,128) – IPv6アドレスのネットワーク部分のビット長(プレフィックス長)です。IPv4のサブネットマスクに相当します。 - scopeid: (
0x20<link>,0x10<host>) – IPv6アドレスのスコープ(有効範囲)を示すIDです。<link>はリンクローカルスコープ(同一ネットワークセグメント内)、<host>はホストローカルスコープ(自分自身のみ)を示します。 - ether: (
08:00:27:12:34:56) – インターフェースのMACアドレス(ハードウェアアドレス)です。IPv6アドレスの生成などに使用されることもあります。 - txqueuelen: (
1000) – 送信キューの長さです。 - (Ethernet), (Local Loopback) – インターフェースのタイプ。
- RX packets/bytes: 受信したパケット数とバイト数。
- RX errors/dropped/overruns/frame: 受信時のエラー、破棄、オーバーラン、フレーム関連の統計情報。
- TX packets/bytes: 送信したパケット数とバイト数。
- TX errors/dropped/overruns/carrier/collisions: 送信時のエラー、破棄、オーバーラン、キャリア、衝突関連の統計情報。
この出力から、各インターフェースに割り当てられているIPアドレス(IPv4とIPv6)、サブネットマスク、MACアドレス、そして送受信データの統計情報などを一目で確認できます。
特定のインターフェースの情報を表示
特定のインターフェースの情報のみを表示したい場合は、コマンドの引数にインターフェース名を指定します。
bash
ifconfig eth0
または無線LANインターフェースなら
bash
ifconfig wlan0
アクティブでないインターフェースを含むすべての情報を表示
デフォルトでは、ifconfigはUPになっているインターフェースのみを表示します。DOWNになっているインターフェースの情報も含めてすべてのインターフェースを表示するには、-aオプションを使用します。
bash
ifconfig -a
これにより、例えばケーブルが抜けていたり、システム設定で無効化されていたりするインターフェースの情報も確認できます。
ifconfigコマンドによる設定例(参考)
ifconfigはIPアドレスの確認だけでなく、簡単な設定にも使用できます。ただし、現代のUbuntuではネットワーク設定は通常netplanなどのツールで行うため、コマンドラインでの設定は一時的な変更やトラブルシューティング目的で行うことが多いです。
- IPアドレスとネットマスクの設定:
bash
sudo ifconfig eth0 192.168.1.200 netmask 255.255.255.0
(※この設定は一時的なもので、再起動すると失われます) - ブロードキャストアドレスの設定:
bash
sudo ifconfig eth0 broadcast 192.168.1.255 -
インターフェースの有効化(UP)/無効化(DOWN):
bash
sudo ifconfig eth0 up
sudo ifconfig eth0 down
インターフェースをDOWNにすると、そのインターフェースを通じた通信はできなくなります。 -
エイリアスインターフェース(一つの物理インターフェースに複数のIPアドレスを設定):
bash
sudo ifconfig eth0:0 192.168.1.201 netmask 255.255.255.0
(※この機能はipコマンドでは別の方法で行います) -
MTUの設定:
bash
sudo ifconfig eth0 mtu 9000
ifconfigコマンドの制約と非推奨化
ifconfigコマンドは直感的で使いやすい反面、いくつかの制約があります。
- IPv6への対応の限界: IPv6の設定や詳細な情報を扱う機能が限定的です。
- スクリプトでの扱いにくさ: 出力形式が一貫していない部分があり、シェルスクリプトなどで情報をパースして利用するのに向いていません。
- 機能の分散: ルーティングテーブルの操作は
route、ARPキャッシュの操作はarp、統計情報の表示はnetstatなど、関連する機能が別のコマンドに分散しています。
これらの理由から、ifconfigを含むnet-toolsパッケージは、現代のLinuxシステムにおいて非推奨とされています。代わりに、後述するiproute2スイートに含まれるipコマンドが推奨されています。しかし、前述のように依然として広く使われており、古いシステムや特定の環境では必須となる場合もあります。
セクション3:ipコマンドの詳細
ipコマンドは、iproute2スイートに含まれるネットワーク管理ツールです。ifconfigを含むnet-toolsに取って代わるものとして開発され、現代のLinuxディストリビューションで推奨されています。ifconfigよりも多機能で、IPv6への対応も強化されており、一貫性のあるコマンド体系を持っています。
ipコマンドのインストール
ipコマンドは、多くのUbuntuシステムにデフォルトで含まれているiproute2パッケージの一部です。通常、追加のインストールは必要ありません。
“`bash
iproute2パッケージがインストールされているか確認
dpkg -s iproute2
“`
もしインストールされていない場合は、以下のコマンドでインストールできます。
bash
sudo apt update
sudo apt install iproute2
ipコマンドの基本的な使い方
ipコマンドは、以下のような構造を持っています。
bash
ip [オプション] オブジェクト コマンド [引数]
- オブジェクト: 操作対象となるネットワーク要素を指定します。主なオブジェクトには以下のものがあります。
address(またはaddr,a): IPアドレスやインターフェースに関連する情報。link(またはl): ネットワークインターフェース(リンクレイヤー)の状態や設定。route(またはr): ルーティングテーブル。neighbor(またはn): ARPキャッシュやネイバーキャッシュ。rule: ポリシーベースルーティングのルール。maddress: マルチキャストアドレス。mroute: マルチキャストルーティングテーブル。- …他にも多くのオブジェクトがあります。
- コマンド: 指定したオブジェクトに対して行う操作を指定します。よく使うコマンドには以下のものがあります。
show(またはlist): 情報の表示。add: オブジェクトの追加(例: IPアドレスの追加)。del: オブジェクトの削除(例: IPアドレスの削除)。set: オブジェクトの設定変更(例: インターフェースの状態変更)。- …コマンドはオブジェクトによって異なります。
オブジェクトやコマンドは省略できる場合があります。例えば、ip address showはip addr showやip a showと短縮でき、さらにshowコマンドは多くの場合デフォルトのため省略してip addressやip addr、ip aとすることも可能です。
IPアドレス情報の表示 (ip address show)
ifconfigの基本的な機能であるIPアドレスやインターフェース情報の表示は、ip address showコマンドで行います。
“`bash
ip address show
または短縮形
ip addr show
ip a 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 85900sec preferred_lft 85900sec
inet6 fe80::a00:27ff:fe12:3456/64 scope link
valid_lft forever preferred_lft forever
ip address showの出力もifconfigと同様に各インターフェースの情報を含んでいますが、形式や情報量が異なります。
- インターフェース番号: (
1:,2:) – システム内部で使用されるインターフェースのインデックス番号。 - インターフェース名: (
lo:,eth0:) – ネットワークインターフェースの名前。 - フラグ: (
<LOOPBACK,UP,LOWER_UP>,<BROADCAST,MULTICAST,UP,LOWER_UP>) – インターフェースの状態を示すフラグ。LOWER_UPは物理的なリンクが確立されていることを示します。 - mtu: (
65536,1500) – Maximum Transmission Unit(最大転送単位)。 - qdisc: (
noqueue,pfifo_fast) – Queueing discipline(キューイング規律)。パケットの送信順序などを制御する仕組み。 - state: (
UNKNOWN,UP) – インターフェースの現在の状態。UNKNOWNはループバックなど、物理的なリンク状態を持たないインターフェースで表示されることがあります。UPはインターフェースが有効で物理的なリンクが確立されています。DOWNは無効、LOWERDOWNは物理リンクがダウン、DORMANTは有効だが使用されていない状態などがあります。 - group: (
default) – インターフェースが属するグループ。 - qlen: (
1000) – 送信キューの長さ。 - link/loopback, link/ether: – リンク層の情報。
loopbackはループバックインターフェース、etherはイーサネットインターフェース。 - MACアドレス: (
00:00:00:00:00:00,08:00:27:12:34:56) – ハードウェアアドレス。 - brd: (
00:00:00:00:00:00,ff:ff:ff:ff:ff:ff) – ブロードキャストMACアドレス。 - inet: (
127.0.0.1/8,192.168.1.100/24) – IPv4アドレスとプレフィックス長(サブネットマスクに相当)。/8はネットマスク255.0.0.0、/24はネットマスク255.255.255.0を意味します。 - scope: (
host,global,link) – IPアドレスのスコープ。host: 自分自身のみで有効。link: 同一ネットワークセグメント内でのみ有効(リンクローカルアドレス)。global: インターネット全体で有効(グローバルユニキャストアドレス)。
- brd: (
192.168.1.255) – IPv4のブロードキャストアドレス。これはinet行に含まれて表示されることがあります。 - dynamic: (
eth0の行にある) – アドレスがDHCPによって動的に取得されたものであることを示します。 - valid_lft, preferred_lft: – IPアドレスの有効期限と推奨期限。DHCPで取得したアドレスなどで表示されます。
foreverは静的に設定されたアドレスなど、期限がない場合です。 - inet6: (
::1/128,fe80::a00:27ff:fe12:3456/64) – IPv6アドレスとプレフィックス長。 - scope: (
host,link) – IPv6アドレスのスコープ。
ip address showの出力は、ifconfigよりも構造化されており、特にIPv6に関する情報が詳細に表示されます。また、アドレスの有効期限やスコープなども明示されます。
特定のインターフェースの情報を表示
特定のインターフェースの情報のみを表示するには、コマンドの末尾にdev [インターフェース名]を指定します。
“`bash
ip address show dev eth0
または短縮形
ip a show dev eth0
“`
インターフェースの状態表示 (ip link show)
ip link showコマンドは、主にネットワークインターフェースのリンク層に関する情報を表示します。IPアドレスそのものは表示されませんが、インターフェースの状態(UP/DOWN)、MACアドレス、MTU、統計情報などを確認できます。
“`bash
ip link show
または短縮形
ip l show
“`
実行例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 08:00:27:12:34:56 brd ff:ff:ff:ff:ff:ff
altname enp0s3 # 予測可能なインターフェース名が表示されることもあります
ip link showの出力はip address showのインターフェースごとの最初のブロックと似ていますが、アドレス情報は含まれません。
- mode: (
DEFAULT) – インターフェースのモード。DEFAULT以外にDORMANTやCPEなどがあります。 - altname: (
enp0s3) – そのインターフェースの代替名(予測可能なインターフェース名など)が表示されることがあります。
特定のインターフェースの状態を表示するには、dev [インターフェース名]を指定します。
“`bash
ip link show dev eth0
または短縮形
ip l show dev eth0
“`
ipコマンドによる設定例(参考)
ipコマンドは、ifconfigよりも強力で柔軟なネットワーク設定機能を提供します。
-
IPアドレスの追加/削除: インターフェースをDOWNにしなくてもアドレスの追加や削除が可能です。
“`bash
# IPv4アドレスの追加
sudo ip address add 192.168.1.200/24 dev eth0
# IPv4アドレスの削除
sudo ip address del 192.168.1.100/24 dev eth0IPv6アドレスの追加
sudo ip address add 2001:db8::1/64 dev eth0
IPv6アドレスの削除
sudo ip address del fe80::a00:27ff:fe12:3456/64 dev eth0
(※これらの設定は一時的なもので、再起動すると失われます。永続化にはnetplanなどの設定ファイルが必要です。)bash
* **インターフェースの有効化(UP)/無効化(DOWN):**
sudo ip link set dev eth0 up
sudo ip link set dev eth0 down
* **MTUの設定:**bash
sudo ip link set dev eth0 mtu 9000
* **MACアドレスの変更:**bash
sudo ip link set dev eth0 address 00:11:22:33:44:55
* **インターフェース名の変更:**bash
sudo ip link set dev eth0 name lan0
“`
(※インターフェース使用中に名前を変更すると問題が発生することがあります。通常はシステム起動時の設定で行います。)
ipコマンドのその他のオブジェクト
ipコマンドの機能はIPアドレスやインターフェースの表示・設定にとどまりません。いくつかの重要なオブジェクトを紹介します。
ip route show: ルーティングテーブルを表示します。どこにパケットを送るか(デフォルトゲートウェイなど)の情報が含まれます。
bash
ip route show
# 実行例
# default via 192.168.1.1 dev eth0 proto dhcp metric 100
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
これは、デフォルトの通信は192.168.1.1経由でeth0インターフェースから行われ、192.168.1.0/24ネットワークへの通信はeth0インターフェースに直接送信されることを示しています。ip neighbor show: ARPキャッシュ(IPv4)やネイバーキャッシュ(IPv6)を表示します。IPアドレスとMACアドレスの対応関係が記録されています。
bash
ip neighbor show
# 実行例
# 192.168.1.1 dev eth0 lladdr 00:50:56:c0:00:08 STALE
これは、IPアドレス192.168.1.1を持つデバイスのMACアドレスが00:50:56:c0:00:08であることを示しています。
セクション4:ifconfigとipの比較
ifconfigとipはどちらもネットワークインターフェースやIPアドレス情報を表示・設定するために使われますが、その成り立ち、機能、推奨度には違いがあります。
歴史的背景:net-toolsからiproute2へ
ifconfigは、BSD由来のnet-toolsパッケージに含まれるコマンドの一つです。net-toolsは、IPv4が主流だった時代のシンプルなネットワーク環境に合わせて設計されました。しかし、インターネットの普及、IPv6の登場、複雑なネットワーク構成(VLAN, VRF, ポリシーベースルーティングなど)の増加に伴い、net-toolsの設計では対応が難しくなってきました。
これに対し、iproute2はLinuxカーネルのネットワーク機能の進化に合わせて、より柔軟かつ強力なツールとして開発されました。ipコマンドはその中心となるコマンドで、IPアドレス、リンク、ルーティング、ネイバー、ポリシールールなど、ネットワークに関連する様々な要素を一元的に管理できます。
機能の比較
| 機能項目 | ifconfig |
ip |
|---|---|---|
| IPアドレス表示 | ifconfig |
ip addr show |
| インターフェース状態表示 | ifconfig |
ip link show |
| 特定のインターフェース表示 | ifconfig [IF名] |
ip addr show dev [IF名], ip link show dev [IF名] |
| IPアドレス設定 | ifconfig [IF名] [IP] netmask [MASK] |
ip addr add [IP]/[PREFIX] dev [IF名] |
| インターフェース有効/無効 | ifconfig [IF名] up/down |
ip link set dev [IF名] up/down |
| MTU設定 | ifconfig [IF名] mtu [値] |
ip link set dev [IF名] mtu [値] |
| MACアドレス表示 | ifconfigのetherまたはHWaddr |
ip link showのlink/ether |
| MACアドレス設定 | ifconfig [IF名] hw ether [MAC] |
ip link set dev [IF名] address [MAC] |
| ルーティングテーブル表示 | route -n(別のコマンド) |
ip route show |
| ARP/ネイバーキャッシュ | arp -n(別のコマンド) |
ip neighbor show |
| IPv6対応 | 限定的 | 強力、完全にサポート |
| 出力形式 | インターフェースごとにブロック化、固定形式 | オブジェクトごとに構造化、より詳細な情報(スコープ、期限など) |
| 機能の統合性 | 機能が分散 (route, arp, netstat) |
多くの機能をipコマンドに統合 |
| スクリプトとの連携 | パースしにくい | ip -s -jなどのオプションでJSON出力可能など、容易 |
| エイリアスIF | 対応 (eth0:0など) |
代替手段(複数のアドレスを直接インターフェースに追加) |
出力形式の比較
ifconfigの出力はインターフェースごとにまとまっており、一目でIPアドレスやサブネットマスクを確認しやすいという側面があります。特にIPv4の情報だけを見たい場合には簡潔です。
一方、ip address showの出力は、IPv4とIPv6のアドレスが並んで表示され、アドレスのスコープや有効期限といった詳細情報が含まれています。ip link showはリンク層の情報に特化しており、インターフェースの状態やMACアドレスなどを確認するのに便利です。ipコマンドの出力は、情報をプログラムで処理しやすいように設計されています。
現在のUbuntuでの推奨
現代のUbuntuを含む多くのLinuxディストリビューションでは、ipコマンドの使用が公式に推奨されています。これは、ipコマンドがifconfigよりも多機能で、IPv6や高度なネットワーク設定に柔軟に対応できるためです。また、iproute2スイート全体でネットワーク関連の機能が統合されている点もメリットです。
では、なぜifconfigはまだ広く使われているのでしょうか?主な理由は以下の通りです。
- 互換性: 長年使われてきたコマンドであり、多くの既存のスクリプトやドキュメントで
ifconfigが使用されています。 - 慣れ: 多くのシステム管理者が
ifconfigの利用に慣れており、手軽さを感じています。 - Availability:
net-toolsがデフォルトでインストールされているシステムもまだ存在します。
しかし、新しいネットワーク環境を構築したり、高度な設定を行ったり、将来にわたってメンテナンスしやすいスクリプトを作成したりする場合は、積極的にipコマンドを使用することが強く推奨されます。基本的なIPアドレス確認の目的であれば、どちらのコマンドを使っても大きな問題はありませんが、徐々にipコマンドに慣れていくことが望ましいでしょう。
セクション5:その他のIPアドレス関連情報の調べ方
IPアドレスそのものだけでなく、ネットワークの状態を把握するためには、関連する情報も確認することが重要です。
ホスト名の確認
コンピュータ自身の名前(ホスト名)を確認するには、hostnameコマンドを使用します。
bash
hostname
ルーティングテーブルの確認
パケットがどのように送信されるかを決定するルーティングテーブルは、ネットワーク接続の問題を診断する上で非常に重要です。
ipコマンド (推奨):
bash
ip route show
# または ip r shownet-toolsコマンド:
bash
route -n
-nオプションは、ホスト名やネットワーク名への逆引きを行わず、IPアドレスやネットワークアドレスを数値のまま表示するため、高速で結果が見やすいです。
DNSサーバーの確認
ドメイン名からIPアドレスへの名前解決に使われるDNSサーバーは、/etc/resolv.confファイルに記述されています。このファイルの内容を表示することで、設定されているDNSサーバーのIPアドレスを確認できます。
bash
cat /etc/resolv.conf
実行例:
“`
Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
“`
nameserverの後に記述されているIPアドレスが、システムが名前解決に使用するDNSサーバーです。通常、上から順番に試行されます。
外部からのIPアドレス確認
自分のコンピュータがインターネット上でどのように見えているか、つまりグローバルIPアドレスを確認したい場合は、外部のWebサービスを利用するのが一般的です。例えば、以下のようなコマンドを使って、特定のWebサイトにアクセスして結果を取得する方法があります。
bash
curl ifconfig.me
または
bash
wget -qO- ifconfig.me
ifconfig.meは、アクセス元のグローバルIPアドレスをテキスト形式で返すサービスです。他にも多くの類似サービスがあります。
ネットワーク接続状況の確認
現在開いているネットワーク接続(ポートの状態、通信相手など)を確認するには、netstatコマンド(net-tools)やssコマンド(iproute2)を使用します。
netstatコマンド:
bash
netstat -tulnp-t: TCP接続を表示-u: UDP接続を表示-l: 待機中のソケット(Listenポート)のみ表示-n: ホスト名やサービス名への変換を行わず、ポート番号やIPアドレスを数値で表示-p: その接続を開いているプロセス名とPIDを表示(要root権限)
ssコマンド (推奨):netstatよりも高速で多機能な代替コマンドです。
bash
ss -tulnp
オプションの意味はnetstatとほぼ同じです。
これらのコマンドは、特定のポートが待ち受け状態になっているか、外部との接続が確立されているかなどを確認する際に役立ちます。
セクション6:実践的なシナリオとトラブルシューティング
IPアドレスの調べ方は、日常的なネットワーク管理やトラブルシューティングにおいて非常に役立ちます。いくつかの典型的なシナリオを見てみましょう。
シナリオ1:インターネットに接続できない
インターネットに接続できない場合、まず自分のコンピュータが正しくIPアドレスを取得できているかを確認します。
-
IPアドレスの確認:
bash
ip a show eth0 # 有線の場合
ip a show wlan0 # 無線の場合
または
bash
ifconfig eth0
ifconfig wlan0
IPアドレス(inetまたはinet6の行)が表示されているか確認します。表示されていない、あるいは意図しないアドレス(例: 169.254.x.x のAPIIPAアドレス)が表示されている場合、DHCPサーバーからアドレスを取得できていない可能性があります。ケーブルの接続、Wi-Fiへの接続、ルーターのDHCP設定などを確認してください。静的IPアドレスを設定している場合は、設定値が正しいか確認してください。 -
デフォルトゲートウェイの確認:
bash
ip route show
# または route -n
default via [デフォルトゲートウェイのIPアドレス]の行が表示されているか確認します。表示されていない場合や、誤ったアドレスが表示されている場合は、ルーターの設定が正しく取得できていないか、静的設定が誤っている可能性があります。 -
デフォルトゲートウェイへの疎通確認:
デフォルトゲートウェイのIPアドレスがわかったら、そこにpingを実行して通信が可能か確認します。
bash
ping [デフォルトゲートウェイのIPアドレス]
Pingが成功しない場合、自分のコンピュータとルーターの間で物理的な問題(ケーブル断線、Wi-Fi信号弱いなど)やネットワーク設定(サブネットマスクの不一致など)の問題がある可能性が高いです。 -
DNSサーバーの確認と疎通確認:
WebサイトにアクセスできないがIPアドレスへのPingは成功する場合、DNS名前解決に問題がある可能性があります。
bash
cat /etc/resolv.conf
でDNSサーバーのIPアドレスを確認し、そのDNSサーバーにPingまたはnslookupやdigコマンドで名前解決ができるか確認します。
bash
ping [DNSサーバーのIPアドレス]
nslookup google.com [DNSサーバーのIPアドレス]
これらのステップで、IPアドレス取得、デフォルトゲートウェイ、DNSのどこに問題があるかを切り分けることができます。
シナリオ2:同一ネットワーク内の別のコンピュータに接続できない
同一ネットワーク内の別のコンピュータ(例: サーバーや別のPC)にIPアドレスでアクセスできない場合、以下の点を確認します。
- 自分のIPアドレスとサブネットマスクの確認:
ip a showまたはifconfigで、自分のIPアドレスとサブネットマスク(またはプレフィックス長)を確認します。 - 相手のIPアドレスとサブネットマスクの確認: 相手のコンピュータでも同様にIPアドレスとサブネットマスクを確認します。
- サブネットの確認: 自分と相手のIPアドレスが、同じサブネットに属しているか確認します。IPアドレスとサブネットマスク(またはプレフィックス長)からネットワークアドレスを計算し、一致するか確認します。一致しない場合、両者が異なるネットワークに接続されていることになります(ルーター経由の通信が必要です)。
- 同一サブネット内の相手への疎通確認: 同じサブネットにいるはずなのに通信できない場合、
ping [相手のIPアドレス]を実行します。Pingが失敗する場合、物理的な接続問題、相手側のファイアウォール、相手側のIPアドレス設定ミスなどが考えられます。 - ARPキャッシュの確認:
ip neighbor showまたはarp -nコマンドで、相手のIPアドレスに対応するMACアドレスが正しくキャッシュされているか確認します。ARPエントリーがない、あるいは誤ったエントリーが表示されている場合、ARPの問題が発生している可能性があります(ただしこれは比較的稀です)。
シナリオ3:複数のネットワークインターフェースがあるシステム
サーバーや仮想マシンなど、複数のネットワークインターフェースを持つシステムでは、どのインターフェースにどのIPアドレスが割り当てられているかを確認することが重要です。
ip a show または ifconfig を実行すると、システム上のすべてのインターフェース(eth0, eth1, ensXXX, br0など)とそのIPアドレスが表示されます。各インターフェースが意図したネットワークに接続され、正しいIPアドレスが付与されているか確認します。
特に、ブリッジインターフェース(例: br0)や仮想インターフェース(例: Dockerのdocker0、Libvirtのvirbr0など)がある場合、これらのインターフェースにもIPアドレスが割り当てられていることがあります。これらはホスト内の仮想ネットワークやコンテナとの通信に使用されるため、そのIPアドレス範囲やルーティング(ip route showで確認)を理解しておくことが重要です。
シナリオ4:仮想環境(VMやコンテナ)でのIPアドレス確認
VirtualBoxやVMwareなどの仮想マシン、あるいはDockerコンテナ内で作業している場合、その仮想環境自体のIPアドレスを確認する必要があります。
- 仮想マシン: 仮想マシン内で直接、ゲストOSのターミナルを開き、
ip a showまたはifconfigコマンドを実行します。表示されるIPアドレスは、ホストOSからどのようにネットワーク設定されているか(NAT, ブリッジ, ホストオンリーなど)によって異なります。NATの場合はホストOSのIPアドレスとは異なるプライベートIPアドレスが割り当てられます。ブリッジの場合はホストOSと同じネットワークセグメントのIPアドレスが割り当てられることが多いです。 - Dockerコンテナ: ホストOSから実行中のコンテナのIPアドレスを確認するには、
docker inspectコマンドを使用します。
bash
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [コンテナ名またはID]
または、コンテナ内に入ってからip a showなどを実行することも可能です。
bash
docker exec -it [コンテナ名またはID] ip a show
仮想環境のネットワーク設定を理解することは、ホストとゲスト間、あるいはコンテナ間の通信問題を解決する上で不可欠です。
まとめ
この記事では、Ubuntu環境においてIPアドレスをはじめとするネットワークインターフェース情報を確認するための主要なコマンド、ifconfigとipについて、詳細に解説しました。
ifconfigは歴史があり、多くのユーザーに親しまれているコマンドですが、機能面やIPv6への対応において限界があります。一方、ipコマンドは現代のネットワーク環境に合わせて設計された強力で柔軟なツールであり、今日のLinuxシステムではこちらを使用することが推奨されています。
どちらのコマンドも、引数なしで実行するとシステム上のアクティブなネットワークインターフェースの情報を一覧表示し、インターフェース名を指定することで特定のインターフェースの詳細を確認できます。出力形式は異なりますが、IPアドレス、サブネットマスク、MACアドレス、インターフェースの状態(UP/DOWN)といった重要な情報が含まれています。
IPアドレスの確認は、ネットワークの疎通確認、設定の検証、そしてさまざまなネットワーク関連の問題をトラブルシューティングする際の第一歩です。ifconfigとipコマンドを使いこなすことは、Ubuntuシステムにおけるネットワーク管理の基礎と言えます。
可能であれば、今後はipコマンドを積極的に使用していくことをお勧めします。その多機能性と一貫性のある体系は、より複雑なネットワーク構成にも対応でき、将来的な学習コストを抑えることにも繋がります。しかし、既存のシステムや慣れの関係でifconfigを使用することも否定されるものではありません。両方のコマンドに慣れておくことが、状況に応じた柔軟な対応を可能にするでしょう。
ネットワークはコンピュータシステムの根幹をなす要素の一つです。今回ご紹介したコマンドを使いこなし、ご自身のUbuntu環境のネットワーク状態を正確に把握できるようになることが、安定したシステム運用への第一歩となります。
用語集 (Glossary)
- IPアドレス (IP Address): ネットワーク上のデバイスを識別する番号。
- IPv4: 32ビットのIPアドレス。
- IPv6: 128ビットのIPアドレス。
- サブネットマスク (Subnet Mask): IPアドレスのネットワーク部とホスト部を区別するための数値。
- プレフィックス長 (Prefix Length): サブネットマスクをビット数で表現したもの(例: /24)。
- デフォルトゲートウェイ (Default Gateway): 他のネットワークへの通信で最初に経由する機器のIPアドレス(通常はルーター)。
- DNS (Domain Name System): ドメイン名とIPアドレスを相互に変換するシステム。
- ネットワークインターフェース (Network Interface): コンピュータがネットワークに接続するための装置または機能。
- NIC (Network Interface Card): ネットワークインターフェースのハードウェア。
- MACアドレス (Media Access Control Address): ネットワークアダプターごとに固有に割り当てられたハードウェアアドレス。
- ループバックインターフェース (Loopback Interface): 自分自身を表す仮想インターフェース(lo)。
- MTU (Maximum Transmission Unit): 一度で転送できるパケットの最大サイズ。
- DHCP (Dynamic Host Configuration Protocol): ネットワーク設定(IPアドレスなど)を自動的に割り当てるプロトコル。
- net-tools:
ifconfig,route,netstatなどの古いネットワークコマンドを含むパッケージ。 - iproute2:
ip,ss,tcなどの新しいネットワークコマンドを含むパッケージ。現代のLinuxで推奨される。 - ARP (Address Resolution Protocol): IPv4アドレスをMACアドレスに変換するプロトコル。
- ネイバーキャッシュ (Neighbor Cache): IPv6アドレスをMACアドレスに変換する情報。