LinuxでIPアドレスを確認するには、ip addr show(ip a)が標準コマンドです。旧来の ifconfig は多くのディストリビューションで非推奨・未インストールになっており、代わりに iproute2 パッケージの ip コマンドを使います。この記事では、ローカルIP(プライベートIP)とグローバルIP(公開IP)それぞれの確認方法、特定インターフェースだけを絞り込む方法、コマンドが使えない場合の対処法までまとめて解説します。
Linux でIPアドレスを確認する方法一覧
目的別に使うコマンドをまとめると次のとおりです。迷ったら ip addr show を使えば間違いありません。
| コマンド | 用途 | 備考 |
|---|---|---|
ip addr show | 全インターフェースのIPアドレスを表示 | 現行Linuxの標準。ip a と省略可 |
ip -4 addr show | IPv4アドレスのみ表示 | IPv6を除外したい時 |
hostname -I | IPアドレスだけを一行で表示 | スクリプトでの取得に便利 |
nmcli device show | NetworkManager管理下の接続情報を表示 | Ubuntu Desktop等で利用可 |
ifconfig | 旧来のインターフェース確認コマンド | 非推奨。net-toolsパッケージが必要 |
curl ifconfig.me | グローバルIP(公開IP)を表示 | 外部サービスへの問い合わせが必要 |
ip コマンドでIPアドレスを確認する(推奨)
最も確実な方法は ip addr show です。ルート権限は不要で、一般ユーザーのまま実行できます。
ip addr show
出力例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 86392sec preferred_lft 86392sec
inet6 fe80::211:22ff:fe33:4455/64 scope link
valid_lft forever preferred_lft forever
inet の行がIPv4アドレス、inet6 の行がIPv6アドレスです。192.168.1.10/24 のようにCIDR形式(サブネットマスク付き)で表示されます。IPv4だけに絞りたい場合は -4 オプションを付けます。
ip -4 addr show
表示をコンパクトにしたい場合は -brief(-br)オプションが便利です。インターフェース名・状態・IPアドレスが1行にまとまります。
ip -4 -br addr show
lo UNKNOWN 127.0.0.1/8
eth0 UP 192.168.1.10/24
docker0 DOWN 172.17.0.1/16
特定のインターフェースだけ確認する
インターフェース名を指定すると、そのインターフェースの情報だけに絞り込めます。インターフェース名は環境によって eth0 / ens192 / enp0s3 のように異なるため、まず ip addr show や ip link show で名前を確認してください。
ip addr show eth0
hostname コマンドで手早く確認する
IPアドレスの値だけを素早く取得したい場合は hostname -I(大文字の I)が便利です。全インターフェースのIPアドレスがスペース区切りで一行に表示されるため、シェルスクリプトでの取得にも向いています。
hostname -I
192.168.1.10 172.17.0.1
先頭のアドレスだけを取り出したい場合は、次のように awk と組み合わせます。
hostname -I | awk '{print $1}'
小文字の hostname -i はDNSに登録されたアドレスを返す別のオプションで、環境によっては 127.0.1.1 のようなループバックに近いアドレスしか返らないことがあります。実際のIPアドレスを確認したい場合は大文字の -I を使ってください。
nmcli でNetworkManager管理下の接続を確認する
Ubuntu DesktopやFedoraなど、NetworkManagerで接続を管理しているディストリビューションでは nmcli でも確認できます。接続名やDNS、ゲートウェイなど周辺情報もまとめて表示されます。
nmcli device show eth0
IPv4アドレスの行だけに絞り込みたい場合は -t(terse)と -f でフィールドを指定します。
nmcli -t -f IP4.ADDRESS device show eth0
IP4.ADDRESS[1]:192.168.1.10/24
ifconfig コマンドでの確認(非推奨・互換用)
ifconfig はnet-toolsパッケージに含まれる旧来のコマンドで、多くのディストリビューションでは標準インストールされなくなっています。実行すると次のようなエラーになる場合があります。
$ ifconfig
bash: ifconfig: command not found
Debian/Ubuntu系ではnet-toolsをインストールすれば使えるようになりますが、新規に使い方を覚えるなら ip コマンドへの移行を推奨します。ifconfig の詳しい使い方は別記事の ifconfig で解説しています。
sudo apt install net-tools
プライベートIPとグローバルIPの違い
ここまで紹介した ip / hostname / nmcli / ifconfig は、いずれもマシンに割り当てられた「プライベートIP(ローカルIP)」を表示します。インターネット上から見えるアドレス(グローバルIP/公開IP)を確認したい場合は、外部サービスへの問い合わせが必要です。
curl ifconfig.me
同様のサービスとして curl ipinfo.io/ip や curl icanhazip.com もよく使われます。自宅・オフィスのルーターがNAT配下にある場合、Linux機で確認できるのはプライベートIPのみで、グローバルIPはルーター側(または外部サービス経由)でないと分かりません。
確認時によくあるつまずきポイント
- lo(ループバック)を誤読する:
127.0.0.1は自分自身を指すループバックアドレスで、他端末からの通信には使えません。 - 複数のIPアドレスが出てくる: Docker(
docker0)やVPN(tailscale0、tun0など)を使っていると、物理NIC以外のIPも同時に表示されます。目的の値が分からない時は、まずip route showでデフォルトルートに使われているインターフェース名を確認し、そのインターフェースのIPを見ます。 - DHCP環境ではIPが変わる: 再起動やリース更新でIPアドレスが変わることがあります。固定したい場合はDHCPサーバー側で予約するか、
nmcliやnetplanで静的IPを設定します。 - コマンドが見つからない:
ip: command not foundとなる場合はiproute2パッケージ(Debian/Ubuntu:sudo apt install iproute2)が未インストールです。最小構成のコンテナイメージなどで発生しやすい点に注意してください。
サイトやサーバーへの接続そのものがおかしい場合の切り分け手順は、サイトに繋がらない時の原因調査|IPアドレス確認とnslookup・dig活用法 もあわせて確認してください。
よくある質問(FAQ)
Q. IPv6アドレスだけを確認したいです
A. ip -6 addr show でIPv6アドレスのみに絞り込めます。IPv4と同様に -br を付ければ一行表示にできます。
Q. ディストリビューションによってコマンドは違いますか?
A. ip コマンド(iproute2)はUbuntu・Debian・CentOS/RHEL・Fedora・Arch Linuxなど主要ディストリビューションで共通して使えます。nmcli はNetworkManagerを使っている環境限定で、サーバー用途のCentOS/RHELでも標準で入っていることが多いコマンドです。
Q. スクリプトでIPアドレスだけを変数に入れるには?
A. hostname -I | awk '{print $1}' が最も簡単です。特定インターフェースに限定したい場合は ip -4 -br addr show eth0 | awk '{print $3}' | cut -d/ -f1 のように ip コマンドの出力を加工します。
関連コマンド
ip
本記事で扱ったip addr showを含む、ip コマンド全体の構文・サブコマンド一覧はこちら。ifconfig
非推奨だが互換用途で使われる旧来のインターフェース確認コマンド。arp
同一ネットワーク内の他端末のIP・MACアドレス対応表を確認するコマンド。iptables
確認したIPアドレスをもとにアクセス制御を行う際に使うコマンド。
参考
- manページ(ip): https://man7.org/linux/man-pages/man8/ip.8.html
- manページ(hostname): https://man7.org/linux/man-pages/man1/hostname.1.html

コメント