ネットワークコマンド入門 - ip/ifconfigで接続状態を確認する
この記事でできるようになること
- `ip a` / `ip link` / `ip route` で自分の接続状態を確認できる
- 「つながらない」をリンク → IP → 経路 → 到達性 → 名前解決の順に切り分けられる
- `ifconfig` などの旧コマンドを `ip` / `ss` に読み替えられる
前提知識(先に読むと理解しやすい記事)
この記事で解決できること
ipとifconfigの 使い分けと違い が分かる- 「ネットにつながらない」を どこで切れているか順に切り分け できる
- IPアドレス・リンク・経路・到達性を 確認する型 が身につく
用語の整理(この記事で使う言葉を先に定義します)
- インターフェース: ネットワークの出入口となる装置。
eth0やenp0s3のような名前が付きます。「NIC」「ネットワークアダプタ」も同じものを指します - リンク: ケーブルや無線がつながっているか、という物理レベルの状態です。「物理層」「L1」とも呼びます
- 経路(ルーティング): データをどこ宛てに送り出すかの道順です。「ルート」「経路表」「ルーティングテーブル」も同じ意味で使われます
- デフォルトゲートウェイ: 自分のネットワークの外へ出るときの出口となる機器です。多くの環境ではルータがこれにあたります
- 到達性: 相手までデータが実際に届くかどうかです。英語では reachability と書きます
- 名前解決(DNS):
example.comのような名前を IP アドレスに変換する仕組みです - iproute2 / net-tools:
ipコマンドを提供するパッケージが iproute2 です。ifconfigを提供する古いパッケージが net-tools です
結論(実務の型)
- IPアドレスを見るなら
ip a(ifconfigの後継) - 切り分けは下から上:リンク → IP → 経路 → 到達性 → 名前解決 の順
ifconfigが「command not found」でも壊れていない。ipを使えばよい
前提(対象環境)
- OS:Ubuntu / RHEL 系など一般的な Linux
iproute2(ipコマンド)は標準インストール済み- 一部コマンドは
sudoまたは管理権限が必要
ip と ifconfig は何が違うのか?
ifconfig は旧 net-tools パッケージに付属する古いコマンドです。現在は非推奨で、新しい環境には最初から入っていないことも多いコマンドです。後継が iproute2 パッケージの ip コマンドです。ip は IPアドレス・リンク・経路をすべて 1 つのコマンドで扱えます。新しい環境では ip を使ってください。
| 項目 | ifconfig(net-tools) |
ip(iproute2) |
|---|---|---|
| ステータス | 非推奨・保守停止 | 現行・推奨 |
| デフォルト導入 | 多くのモダン環境で未導入 | 標準導入 |
| 扱える範囲 | IP・リンクのみ | IP・リンク・経路・他 |
| 複数IP/サブIF | 表示が不完全 | 正確に表示 |
ifconfig が command not found になるのは故障ではありません。net-tools が入っていないだけです。sudo apt install net-tools で導入できますが、まず ip を使うのが正攻法です。
IPアドレスはどう確認するのか?
ip a で全インターフェースのIPアドレスを確認します。ip a は ip addr show の短縮形です。ifconfig に慣れているなら ifconfig 単体でも同じ情報が見られます。まずはここで自分のIPを把握してください。
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
inet 192.168.1.20/24 brd 192.168.1.255 scope global eth0
読みどころ:
eth0… インターフェース名(環境によりenp0s3等)inet 192.168.1.20/24… 割り当てられた IPv4 アドレスです。末尾の/24はサブネットの広さを表し、この場合は192.168.1.0〜192.168.1.255が同じネットワークになりますUP… OS 側でインターフェースが有効になっていますLOWER_UP… 物理的なリンクがつながっています
特定インターフェースだけ見るなら次のとおり。
$ ip addr show eth0
ifconfig での同等操作:
$ ifconfig $ ifconfig eth0
リンク状態はどう見るのか?
ip link でリンクの状態を確認します。ここで見るのはケーブル接続と、インターフェースが有効か無効かの 2 点です。IPアドレスが付いていても state DOWN なら通信できません。「つながらない」ときはまずここを見てください。
$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP ...
state UP… リンク有効。state DOWNなら無効LOWER_UPが無い … ケーブル未接続・対向機器側の問題を疑う
インターフェースを手動で有効/無効化する(要管理権限):
$ sudo ip link set eth0 up $ sudo ip link set eth0 down
ip link set ... down は自分の接続を切る操作です
リモート(SSH)接続中に、作業に使っているインターフェースを down にしないでください。その場で接続が切れます。SSH でしか入れない機器では、自分の手で復旧できなくなります。
安全なやり方
- 作業前に
ip route get <接続元のIP>を実行し、SSH が通っているインターフェースを特定する。そのインターフェースには触らない - どうしても操作が必要なら、SSH セッションから独立した復旧予約を先に入れる。ここで注意したいのは、リンクを
upに戻すだけでは復旧しない場合があることです。downにした時点でそのインターフェース経由の経路(デフォルトルート含む)が削除され、upでは自動的に戻らないためです。ネットワーク設定を再適用する形で予約してください- NetworkManager:
sudo systemd-run --on-active=60 /bin/sh -c 'nmcli networking off; nmcli networking on' - systemd-networkd:
sudo systemd-run --on-active=60 /bin/sh -c 'systemctl restart systemd-networkd' - netplan:
sudo systemd-run --on-active=60 /bin/sh -c 'netplan apply' - systemd が無い環境:
echo 'netplan apply' | at now + 1 minuteなどで代替する
- NetworkManager:
- コンソール(IPMI / クラウドのシリアルコンソール等)に入れることを先に確認する
経路(ルーティング)はどう確認するのか?
ip route でデフォルトゲートウェイと経路表を確認します。IPアドレスが正しくても、ゲートウェイが無ければ外部には出られません。「LAN 内は通るのに外部に出られない」ときの定番チェックポイントです。
$ ip route
default via 192.168.1.1 dev eth0 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
default via 192.168.1.1… デフォルトゲートウェイ。これが無い=外部に出られない- 2行目 … 同一サブネット宛は直接配送
特定宛先への経路を引くなら ip route get が便利。
$ ip route get 8.8.8.8
到達性はどう確認するのか?
ping で相手まで実際にデータが届くかを確認します。-c は送る回数の指定です。付けないと止まらずに送り続けます。ゲートウェイ → 外部IP → ドメイン名の順に試してください。この順番で試すと、どこで切れているかが分かります。
$ ping -c 4 192.168.1.1 $ ping -c 4 8.8.8.8 $ ping -c 4 example.com
切り分けの読み方:
- ゲートウェイにも届かない … リンクか経路の問題(
ip link/ip routeへ戻る) 8.8.8.8は OK だがexample.comは NG … 名前解決(DNS)の問題- すべて NG … 経路・ファイアウォール・ISP 側を疑う
ping が 100% packet loss でも、ネットワークが壊れているとは限りません。相手が ICMP(ping が使う通信の種類)を遮断しているだけのこともあります。Web サーバが相手なら curl -I https://example.com も実行してください。HTTP レベルで届いているかを併せて確認できます。
つながらない時はどう切り分けるのか?
下の層から順に潰すのが鉄則です。リンク → IP → 経路 → 到達性 → 名前解決の順に確認してください。最初に失敗した層が原因です。上の層から見ると遠回りになります。
- リンク:
ip link show→state UPか - IP:
ip a→ IPアドレスが付与されているか - 経路:
ip route→default via ...があるか - 到達性:
ping -c 4 <ゲートウェイ>→ping -c 4 8.8.8.8 - 名前解決:
ping -c 4 example.comが NG なら DNS を疑う
# 上から順に1コマンドずつ ip link show ip a ip route ping -c 4 8.8.8.8 ping -c 4 example.com
やりがちな失敗
- いきなりドメイン名で
pingして「ネットが死んだ」と誤判断(実は DNS だけ) - IPが付いているのを見て安心し、ゲートウェイ未設定を見落とす
- SSH 越しに
ip link set ... downを実行して自分の接続を切る
旧コマンドとの対応表(チートシート)
ifconfig / route / netstat に慣れている場合も、ip / ss での同等操作を覚えれば移行できます。下の表を手元に置いてください。ss は netstat の後継で、同じく iproute2 が提供します。
| やりたいこと | 旧(net-tools) | 新(iproute2) |
|---|---|---|
| IPアドレス確認 | ifconfig |
ip a |
| リンク有効化 | ifconfig eth0 up |
ip link set eth0 up |
| 経路表表示 | route -n |
ip route |
| ARP テーブル | arp -n |
ip neigh |
| 待ち受けポート | netstat -tlnp |
ss -tlnp |
# コピペ用:状態把握ワンライナー ip -br a && ip route && ss -tlnp
ip -br a(-br = brief)はインターフェースとIPを1行ずつ簡潔表示。一覧把握に最適。