【完全ガイド】Linux ip コマンド徹底解説!基本から応用・トラブルシューティングまで網羅

最終更新日 2025年3月19日

スポンサーリンク

Linuxのipコマンドとは?基本概要を理解しよう

本セクションでは以下の内容について解説します。

  1. ipコマンドとは?ifconfigとの違い
  2. なぜipコマンドが推奨されるのか?
  3. ipコマンドでできること一覧

ipコマンドとは?ifconfigとの違い

ipコマンドは、ifconfigの後継として推奨されるネットワーク管理コマンドです。より詳細な情報を取得でき、多くの新しいネットワーク機能に対応しています。

Linuxのネットワーク設定や管理には、以前はifconfigコマンドが一般的に使用されていました。しかし、現在ではifconfigは非推奨となり、代わりに**ipコマンド**が標準的なツールとして推奨されています。

ipコマンドのメリット

  • 詳細なネットワーク情報を取得できる(インターフェースの状態、IPアドレス、ルーティングなど)
  • ifconfigでは対応できない新機能をサポート(VLAN、トンネル、ポリシールーティングなど)
  • より直感的で統一されたコマンド体系を持つ
新人エンジニア
新人エンジニア

先輩、ifconfigってもう使えないんですか?

先輩エンジニア
先輩エンジニア

いや、一部のLinuxディストリビューションではまだ使えるよ。でも、ipコマンドの方が推奨されていて、ifconfigは非推奨になっているんだ。

新人エンジニア
新人エンジニア

ipコマンドの方が何がいいんですか?

先輩エンジニア
先輩エンジニア

例えば、ifconfigではインターフェースの状態やIPアドレスの情報しか見られないけど、ipコマンドならルーティングやARPテーブルの情報も確認できるんだ。機能が豊富で拡張性が高いから、今後の運用を考えるとipコマンドを覚えておいた方がいいよ。

ipコマンドとは?

ifconfigの後継

より詳細なネットワーク情報を取得可能

新機能対応

VLAN、トンネル、ポリシールーティングをサポート

直感的な構文

統一されたコマンド体系
ipコマンドとは?
スポンサーリンク

なぜipコマンドが推奨されるのか?

ipコマンドは、最新のLinuxネットワークスタックに対応し、新機能をサポートするため推奨されています。ifconfigは非推奨となり、将来的に削除される可能性があります。

ifconfigは古いネットワーク管理コマンドであり、新しいカーネル機能に対応していません。そのため、ipコマンドが標準となりました。

主な違いは以下の通りです。

項目ifconfigipコマンド
開発状況非推奨推奨
IPアドレス管理可能可能
ルーティング管理不可可能
VLAN・トンネル対応一部対応完全対応
ネットワーク情報の取得限定的詳細な情報が取得可能
新人エンジニア
新人エンジニア

でも、ifconfigの方が簡単じゃないですか?

先輩エンジニア
先輩エンジニア

確かに短くてシンプルだけど、ipコマンドはもっと細かい設定ができるし、機能も豊富なんだ。長期的に考えたらipコマンドを使うべきだよ。

ipコマンドが推奨される理由

項目

ifconfig

ipコマンド

開発状況

非推奨

推奨

IPアドレス管理

可能

可能

ルーティング管理

不可

可能

VLAN対応

一部対応

完全対応
ipコマンドが推奨される理由
スポンサーリンク

ipコマンドでできること一覧

ipコマンドは、ネットワークインターフェースの設定、IPアドレスの管理、ルーティング、ARPテーブル管理など多くの機能を提供します。

主な機能は以下の通りです。

  • ネットワークインターフェースの確認 (ip a / ip link show)
  • IPアドレスの追加・削除 (ip addr add / ip addr del)
  • ルーティングの確認・設定 (ip r / ip route add)
  • ARPテーブルの管理 (ip n show)
  • ネットワークインターフェースの有効化・無効化 (ip link set up/down)
新人エンジニア
新人エンジニア

なるほど…ipコマンドを覚えれば、ネットワーク管理が楽になりそうですね。

先輩エンジニア
先輩エンジニア

そうだね。特にip aip rはよく使うから、まずはここから覚えてみるといいよ。

ipコマンドでできること
スポンサーリンク

Linux ipコマンドの基本的な使い方

本セクションでは以下の内容について解説します。

  1. ipコマンドの基本構文とオプション
  2. ネットワークインターフェースの確認 (ip a の使い方)
  3. ルーティングテーブルの確認 (ip r の使い方)
  4. ARPテーブルの確認 (ip n の使い方)

ipコマンドの基本構文とオプション

ipコマンドは「ip [オブジェクト] [サブコマンド] [オプション]」の形式で使用します。

構文

ip [オブジェクト] [サブコマンド] [オプション]

主なオブジェクト

  • addr(IPアドレスの管理)
  • link(ネットワークインターフェースの管理)
  • route(ルーティングの管理)
  • neigh(ARPテーブルの管理)
新人エンジニア
新人エンジニア

ipコマンドの基本的な書き方って、何かルールがあるんですか?

先輩エンジニア
先輩エンジニア

基本は、ipの後に管理対象(オブジェクト)を指定して、次にサブコマンドを書く形だね。例えば、ip addr showはIPアドレスを表示するコマンドだよ。

ipコマンドの基本構文

基本形式

ip [オブジェクト] [サブコマンド] [オプション]

主なオブジェクト

addr, link, route, neigh

サブコマンド例

show, add, del, set
スポンサーリンク

ネットワークインターフェースの確認 (ip a の使い方)

ip aコマンドを使うと、すべてのネットワークインターフェースのIPアドレスを確認できます。

$ ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    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 fq_codel state UP qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 3600sec preferred_lft 3600sec

または、特定のインターフェースの情報を取得する場合は以下のように指定します。

$ ip a show dev eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 3600sec preferred_lft 3600sec
新人エンジニア
新人エンジニア

ifconfigの代わりに、ネットワークの状態を確認する方法は?

先輩エンジニア
先輩エンジニア

ip aで同じ情報が見られるよ。さらに、ip link showを使えば、インターフェースの詳細な状態も確認できる。

ネットワークインターフェースの確認

基本コマンド

ip a

特定インターフェース

ip a show dev eth0

詳細情報

IPアドレス、MACアドレス、状態を表示
ネットワークインターフェースの確認
スポンサーリンク

ルーティングテーブルの確認 (ip r の使い方)

ip rコマンドを使うと、現在のルーティングテーブルを確認できます。

$ 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 metric 100

デフォルトゲートウェイを追加する場合

$ ip route add default via 192.168.1.1( デフォルトゲートウェイIPアドレス)

(出力なし)※ 設定が正常に追加された場合は何も出力されません。ip rで確認できます。
新人エンジニア
新人エンジニア

ルーティングテーブルの確認はどうすればいいですか?

先輩エンジニア
先輩エンジニア

ip rを実行すれば、現在のルート情報が見られるよ。

ルーティングテーブルの確認

基本コマンド

ip r

現在のルーティングテーブルを表示

出力例

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel
ルーティングテーブルの確認
スポンサーリンク

ARPテーブルの確認 (ip n の使い方)

ip n showを使うと、現在のARPテーブルを確認できます。

$ ip n show

192.168.1.1 dev eth0 lladdr 52:54:00:aa:bb:cc STALE
192.168.1.20 dev eth0 lladdr 52:54:00:dd:ee:ff REACHABLE

特定のエントリを削除する場合

$ ip neigh del 192.168.1.10 dev eth0

(出力なし)
新人エンジニア
新人エンジニア

ARPのキャッシュを確認したいときは?

先輩エンジニア
先輩エンジニア

ip n showを使えば、ARPテーブルの情報が確認できるよ。

ARPテーブルの確認

確認コマンド

ip n show

エントリ削除

ip neigh del [IPアドレス] dev [デバイス]

キャッシュ更新

ping実行後に再確認
ARPテーブルの確認
スポンサーリンク

Linuxのネットワーク設定:ipコマンドの応用編

本セクションでは以下の内容について解説します。

  1. IPアドレスの追加・削除 (ip addr add/del)
  2. デフォルトゲートウェイの設定 (ip route add default via)
  3. VLAN設定 (ip link add link eth0 name eth0.100 type vlan id 100)
  4. ネットワークインターフェースの有効化・無効化 (ip link set dev eth0 up/down)

IPアドレスの追加・削除 (ip addr add/del)

結論ip addr addでIPアドレスを追加し、ip addr delで削除できます。
設定は再起動でリセットされるため、恒久的に設定するには/etc/network/interfaces/etc/sysconfig/network-scripts/を編集する必要があります。

IPアドレスの追加

$ ip addr add 192.168.1.100/24 dev eth0

(出力なし)

IPアドレスの削除

$ ip addr del 192.168.1.100/24 dev eth0

(出力なし)
新人エンジニア
新人エンジニア

IPアドレスを追加したのに、再起動したら消えました!

先輩エンジニア
先輩エンジニア

ip addr addで設定したIPアドレスは、一時的なものなんだ。恒久的に設定したいなら、/etc/network/interfaces(Debian系)や/etc/sysconfig/network-scripts/(RHEL系)を編集する必要があるよ。

IPアドレスの追加・削除

追加

ip addr add 192.168.1.100/24 dev eth0

確認

ip a で設定を確認

削除

ip addr del 192.168.1.100/24 dev eth0

永続化

設定ファイルに記述が必要
IPアドレスの追加・削除
スポンサーリンク

デフォルトゲートウェイの設定 (ip route add default via)

ip route add default viaを使うことで、デフォルトゲートウェイを設定できます。これも再起動後には消えるため、永続化するにはネットワーク設定ファイルを編集する必要があります。

デフォルトゲートウェイの追加

$ ip route add default via 192.168.1.1

(出力なし)※ 設定が正常に追加された場合は何も出力されません。

デフォルトゲートウェイの削除

$ ip route del default via 192.168.1.1

(出力なし)※ 設定が正常に追加された場合は何も出力されません。
新人エンジニア
新人エンジニア

ネットワークがつながらないんですが、どうすればいいですか?

先輩エンジニア
先輩エンジニア

まずはデフォルトゲートウェイが正しく設定されているか確認しよう。ip routeを実行して、デフォルトルートがあるかチェックしてみて。

デフォルトゲートウェイの設定

設定確認

ip r で確認

追加方法

ip route add default via 192.168.1.1

削除方法

ip route del default via 192.168.1.1
デフォルトゲートウェイの設定
スポンサーリンク

VLAN設定 (ip link add link eth0 name eth0.100 type vlan id 100)

ip link addを使用することで、仮想LAN(VLAN)を設定できます。
これにより、1つの物理インターフェース上で複数の論理ネットワークを作成できます。

VLANインターフェースの作成

$ ip link add link eth0 name eth0.100 type vlan id 100

(出力なし)

VLANインターフェースの削除

$ ip link del eth0.100

(出力なし)
新人エンジニア
新人エンジニア

VLANを設定したいのですが、どうすればいいですか?

先輩エンジニア
先輩エンジニア

ip link addコマンドを使えば、VLANインターフェースを作れるよ。ただし、スイッチ側の設定もVLAN IDに合わせて設定されているか確認しよう。

VLAN設定

VLANインターフェース作成

ip link add link eth0 name eth0.100 type vlan id 100

インターフェース有効化

ip link set dev eth0.100 up

IPアドレス設定

ip addr add 192.168.100.1/24 dev eth0.100

VLAN削除

ip link del eth0.100
VLAN設定
スポンサーリンク

ネットワークインターフェースの有効化・無効化 (ip link set dev eth0 up/down)

ip link set dev eth0 up/downを使うことで、ネットワークインターフェースを有効または無効にできます。インターフェースの動作確認やトラブルシューティング時に便利です。

インターフェースを有効化する

$ ip link set dev eth0 up

(出力なし)

インターフェースを無効化する

$ ip link set dev eth0 down

(出力なし)
新人エンジニア
新人エンジニア

NICが動いていないみたいなんですが、確認方法はありますか?

先輩エンジニア
先輩エンジニア

まず、ip link showでインターフェースの状態を確認してみよう。もしDOWNになっていたら、ip link set eth0 upで有効化できるよ。

インターフェースの有効化・無効化

有効化

ip link set dev eth0 up

無効化

ip link set dev eth0 down

状態確認

ip link show
インターフェースの有効化・無効化
スポンサーリンク

ipコマンドをより便利に使う小技・便利なTIPS

本セクションでは以下の内容について解説します。

  1. エイリアスを設定する
  2. スクリプトでネットワーク設定を自動化する方法

エイリアスを設定する

エイリアスを設定することで、ipコマンドをより簡単に使えるようになります。

エイリアスの例(~/.bashrc または ~/.zshrc に追加)

alias ipa='ip a'
alias ipr='ip r'
alias ipn='ip n'

設定を反映させるには、以下のコマンドを実行します。

source ~/.bashrc
新人エンジニア
新人エンジニア

ipコマンドって長くて面倒じゃないですか?

先輩エンジニア
先輩エンジニア

エイリアスを設定すれば、短縮して使えるよ。例えばipaip aを実行できるようにできる。

エイリアス設定

設定方法

~/.bashrcに追加

便利なエイリアス例

alias ipa='ip a'

alias ipr='ip r'

alias ipn='ip n'

反映方法

source ~/.bashrc
エイリアス設定
スポンサーリンク

スクリプトでネットワーク設定を自動化する方法

ipコマンドをシェルスクリプトに組み込むことで、ネットワーク設定を自動化できます。

例えば、特定のIPアドレスを設定し、デフォルトゲートウェイを追加するスクリプト:

#!/bin/bash
ip addr add 192.168.1.100/24 dev eth0
ip route add default via 192.168.1.1
echo "ネットワーク設定が完了しました。"

このスクリプトを実行可能にする

chmod +x setup_network.sh
新人エンジニア
新人エンジニア

サーバーをセットアップするたびにipコマンドを手入力するのが面倒です。

先輩エンジニア
先輩エンジニア

スクリプトを作成すれば、一度のコマンド実行で設定を適用できるよ。

ネットワーク設定の自動化

シェルスクリプトでipコマンドを組み合わせ、ネットワーク設定を自動化できます
ネットワーク設定の自動化
スポンサーリンク

Linux ip コマンドの利用事例と失敗談

ip コマンドはLinuxのネットワーク管理において非常に強力なツールですが、適切に運用しなければネットワークの大規模な障害を引き起こす可能性があります。特に、仮想ネットワーク環境やポリシールーティング、リモート環境での設定変更時には慎重な取り扱いが求められます。

本記事では、実際の現場でのip コマンドの利用事例失敗談を紹介し、より安全かつ効果的に利用するためのポイントを解説します。

  1. DDoS攻撃を受けたサーバーの復旧
  2. VRRPを使用したフェイルオーバー時にIPアドレス競合が発生
  3. ポリシールーティングを設定ミスし、パケットが消失
  4. リモート環境でNICを誤って無効化し、SSH接続が切断

利用事例❶DDoS攻撃を受けたサーバーの復旧

あるLinuxサーバーがDDoS攻撃を受け、ISP側でトラフィックが制限されてしまい、ネットワークが完全に遮断されました。このような場合、通常はISPの対応を待つしかありませんが、幸い新しいIPアドレスがすぐに提供されたため、ip コマンドを利用して迅速に対応できました。

ip addr add 203.0.113.200/24 dev eth0
ip route change default via 203.0.113.1

この設定により、新しいIPアドレスを即座に割り当て、サーバーを復旧させることができました。その後、古いIPアドレスを削除することでDDoS攻撃を回避し、サービスの継続が可能となりました。

ip addr del 192.168.1.10/24 dev eth0

失敗談❶VRRPを使用したフェイルオーバー時にIPアドレス競合が発生

VRRP(Virtual Router Redundancy Protocol)を使用した冗長構成のネットワークで、手動でip コマンドを使って仮想IPを追加したことで、ネットワーク全体が不安定になったことがありました。

VRRPでは、仮想IPはマスターとスレーブの切り替えによって自動的に管理されますが、管理者が誤って以下のコマンドを手動実行しました。

ip addr add 192.168.1.1/24 dev eth0

この結果、VRRPのアルゴリズムが混乱し、ネットワーク全体でIPアドレスの衝突が発生しました。ARPテーブル上に同じIPの異なるMACアドレスが登録され、パケットロスが急増しました。原因を特定するためにip n show でARPテーブルを確認したところ、同じIPが複数の異なるデバイスで使用されていることが判明しました。

VRRP環境では手動で仮想IPを追加せず、専用の管理ツールや適切な設定ファイルを利用するべきでした。

スポンサーリンク

失敗談❷ポリシールーティングを設定ミスし、パケットが消失

Linuxのポリシールーティングを使い、特定のトラフィックをVPN経由にルーティングしようとした際、適切なデフォルトゲートウェイを設定しなかったことで、パケットが消失する事態が発生しました。

設定ミスの内容は以下の通りです。

ip rule add from 192.168.1.100 table 100

このコマンドにより、特定のIPアドレスのパケットがルーティングテーブル100を使うようになりましたが、このテーブルにはデフォルトゲートウェイが設定されていませんでした。

ip route show table 100

結果として、このIPアドレスからのパケットがルーティングされず、通信が完全に途絶えました。解決策として、適切なデフォルトゲートウェイを設定することで復旧できました。

ip route add default via 10.0.0.1 table 100

ポリシールーティングを利用する場合は、ルートテーブルを適切に設定することが大事です。

失敗談❸リモート環境でNICを誤って無効化し、SSH接続が切断

SSHでリモート接続しているサーバー上で誤ってNICを無効化してしまい、管理者がアクセス不能になる事態が発生しました。

ip link set dev eth0 down

このコマンドを実行した瞬間、SSH接続が切断され、管理者はサーバーに再度ログインできなくなりました。結果として、データセンターの管理者に依頼し、物理コンソールから復旧作業を行う必要が生じました。

このような事態を防ぐため、リモート作業時には、事前に管理用の別ネットワーク(IPMI、iLOなど)を用意するか、at コマンドや nohup を使って一定時間後にインターフェースを復旧するスクリプトを仕込んでおくと安全です。

ゴリタンが愛用しているLinuxの教科書たち
https://amzn.to/4hBQa2y
https://a.r10.to/hkpc1F

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。

あなたにオススメの広告
スポンサーリンク
Linux教科書