タイトル: ip IPアドレスの確認
SEOタイトル: Linux で IP アドレスを確認するコマンド完全ガイド(ip / ifconfig / hostname)
この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。
<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;background:#fffbea;border:1px solid #f4c430;margin:1em 0;width:100%"><tr><td style="background:#f4c430;color:#000;font-weight:bold;padding:8px">この記事の要点</td></tr><tr><td style="padding:10px"><ul><li><strong>現代の標準</strong>: <code>ip addr show</code>(または短縮形 <code>ip a</code>)</li><li><strong>旧来のコマンド</strong>: <code>ifconfig</code>(<code>net-tools</code> パッケージ、最近の distro では非インストール)</li><li><strong>素早く IPv4 だけ</strong>: <code>hostname -I</code></li><li><strong>インターフェース指定</strong>: <code>ip addr show eth0</code> / <code>ip -4 a</code>(IPv4 のみ)</li><li><strong>経路 / デフォルトゲートウェイ</strong>: <code>ip route</code> / <code>ip route show default</code></li><li><strong>Windows</strong>: <code>ipconfig</code> / PowerShell <code>Get-NetIPAddress</code></li></ul></td></tr></table>
<h2>ip コマンド(最新標準)</h2>
<p><strong><code>ip</code></strong> は <code>iproute2</code> パッケージのコマンドで、ネットワーク設定の<strong>現代の標準</strong>です。RHEL 7+ / Ubuntu 16.04+ では既定インストール。</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># 全インターフェース表示
ip addr show
ip address show
ip a # 短縮形
# 出力例
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
# inet 127.0.0.1/8 scope host lo
# inet6 ::1/128 scope host
# 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
# 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
# inet6 fe80::211:22ff:fe33:4455/64 scope link
# IPv4 のみ
ip -4 addr show
ip -4 a
# IPv6 のみ
ip -6 addr show
# 簡潔な 1 行表示
ip -br addr show
# 出力例:
# lo UNKNOWN 127.0.0.1/8 ::1/128
# eth0 UP 192.168.1.10/24 fe80::.../64</code></pre>
<h2>インターフェース指定</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># 特定インターフェースだけ
ip addr show eth0
ip a show eth0
ip a eth0 # show 省略可
# 名前で grep
ip addr show | grep -E '^[0-9]+:|inet '
# インターフェース一覧だけ
ip link show
ip -br link show
ls /sys/class/net/</code></pre>
<h2>ifconfig(旧来のコマンド)</h2>
<p><code>ifconfig</code> は <code>net-tools</code> パッケージに含まれる旧コマンド。<strong>RHEL 8+ / Ubuntu 18.04+ では既定では入っていません</strong>が、まだ多くのドキュメントで使われています。</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># インストール(必要なら)
sudo apt install net-tools # Ubuntu/Debian
sudo dnf install net-tools # RHEL/CentOS
# 全インターフェース
ifconfig
ifconfig -a # ダウン中の IF も表示
# 特定インターフェース
ifconfig eth0
# 出力例
# eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
# inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
# inet6 fe80::211:22ff:fe33:4455 prefixlen 64 scopeid 0x20<link>
# ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet)</code></pre>
<h2>素早く IP だけ取り出す</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># IPv4 だけ複数行で
hostname -I # 192.168.1.10 10.0.0.5
# 1 つ目だけ取り出し
hostname -I | awk '{print $1}'
# eth0 の IPv4 を変数に
IP=$(ip -4 -br addr show eth0 | awk '{print $3}' | cut -d/ -f1)
echo $IP
# 別解
ip -4 -o addr show eth0 | awk '{print $4}' | cut -d/ -f1</code></pre>
<h2>外部から見た IP(グローバル IP)</h2>
<p>NAT 配下のサーバーで「インターネットから見た自分の IP」を知りたい場合:</p>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># 公開サービスを使う
curl ifconfig.me
curl ifconfig.io
curl icanhazip.com
curl ipinfo.io/ip
curl -s https://api.ipify.org
# DNS 経由(高速)
dig +short myip.opendns.com @resolver1.opendns.com
nslookup myip.opendns.com resolver1.opendns.com</code></pre>
<h2>経路 / デフォルトゲートウェイ</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># ルーティングテーブル
ip route show
ip route
ip r # 短縮
# 出力例
# 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.10
# デフォルトゲートウェイだけ
ip route show default
ip route | awk '/default/ {print $3}'
# 特定の宛先がどの経路を使うか
ip route get 8.8.8.8
# → 8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10
# 旧コマンドでは
route -n
netstat -rn</code></pre>
<h2>DNS / ネットワーク全体確認</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># DNS サーバー
cat /etc/resolv.conf
resolvectl status # systemd-resolved
# hostname
hostname
hostname -f # FQDN
hostname -I # IP
# 全部入り(最近の RHEL/Ubuntu)
nmcli # NetworkManager
nmcli device show
# 詳細情報
ss -tlnp # LISTEN 中のソケット(netstat -tlnp の代替)
ss -tunp # 全ソケット</code></pre>
<h2>Windows での同等コマンド</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-powershell"># cmd.exe
ipconfig # 全情報
ipconfig /all # 詳細(DNS / DHCP も)
# PowerShell
Get-NetIPAddress
Get-NetIPAddress -AddressFamily IPv4
Get-NetIPConfiguration # 包括的に
# 特定アダプタ
Get-NetIPAddress -InterfaceAlias "イーサネット"
# 経路
Get-NetRoute -DestinationPrefix "0.0.0.0/0"
route print # 旧</code></pre>
<h2>macOS での同等</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># macOS は ifconfig がまだ標準
ifconfig
ifconfig en0 # Wi-Fi
ifconfig en1 # 有線(モデルによる)
# 簡潔
ipconfig getifaddr en0 # IPv4 だけ
networksetup -getinfo Wi-Fi
# ip コマンドは未搭載(brew install iproute2mac で代替可)</code></pre>
<h2>典型的なトラブル切り分け</h2>
<ol>
<li><code>ip a</code> で IP が割り当たっているか確認</li>
<li><code>ip route</code> でデフォルトゲートウェイがあるか</li>
<li><code>ping -c 3 デフォルトGW</code> で L2 疎通確認</li>
<li><code>ping -c 3 8.8.8.8</code> で L3 (外向き) 疎通</li>
<li><code>nslookup google.com</code> で DNS 解決</li>
<li><code>curl -v https://google.com</code> で HTTPS / 証明書確認</li>
</ol>
<h2>FAQ</h2>
<p><strong>Q: <code>ifconfig: command not found</code></strong><br />
A: 最近のディストリでは <code>net-tools</code> パッケージが既定で入りません。<code>sudo apt install net-tools</code>(Ubuntu)/ <code>sudo dnf install net-tools</code>(RHEL)でインストール、または <code>ip</code> コマンドに移行を推奨します。</p>
<p><strong>Q: IP が DHCP で取得できているか確認したい</strong><br />
A: <code>ip a</code> の出力で <code>dynamic</code> という単語が IPv4 行に付いていれば DHCP 取得です。<code>journalctl -u NetworkManager</code> や <code>/var/log/syslog</code> で取得ログも確認可能。</p>
<p><strong>Q: 一時的に IP を変更したい</strong><br />
A: <code>sudo ip addr add 192.168.1.20/24 dev eth0</code>。再起動で消えます。永続化は <code>/etc/netplan</code>(Ubuntu)/ <code>nmcli</code>(RHEL)で。</p>