【必見】IPコマンドの基本から応用した使い方まで徹底的に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年5月)

✔このような方へ向けて書かれた記事となります

「IPコマンドって何ができるのだろうか?」

「IPコマンドの書き方を教えてほしい」

「IPコマンドの実例が見たい」

✔当記事を通じてお伝えすること

  • IPコマンドとは?
  • IPコマンドの基本的な書き方
  • IPコマンドの実例

当記事では、IPコマンドの基本的な書き方だけでなく、具体的な例を用いて、丁寧に使い方を解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

IPコマンドの基本

まずはIPコマンドの基本について見ていきます。

基本をおさえてから、応用した使い方へ進みましょう。

  • IPコマンドとは?
  • IPコマンドの用途と利点
  • IPコマンドの構造
  • よく使われるオプション
  • ヘルプオプションの利用方法

IPコマンドとは?

IPコマンドは、Linuxシステムでネットワーク設定や管理をおこなうためのコマンドラインツールです。

このコマンドは、以下のようなネットワーク関連の情報を表示、設定、変更する機能を提供します。

  • IPアドレス
  • ルーティングテーブル
  • インターフェース
  • ARPテーブル

IPコマンドの用途と利点

IPコマンドの利点は、柔軟性と簡潔さといえます。

ひとつのコマンドで多くのネットワーク設定や情報表示が可能であり、他の古いネットワークコマンド(ifconfigやroute)よりも効率的に作業ができるからです。

ネットワーク管理者やシステム管理者が、ネットワーク設定をおこなう際に使用されます。

IPコマンドの構造

IPコマンドの構造はこちら。

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

  • オブジェクトには、address、link、route、neigh、maddressなどが入る
  • コマンドでは、add、delete、show、flushなどのアクションを指定
$ ip address 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
#続きます。

よく使われるオプション

IPコマンドでよく使われるオプションは以下の通りです。

  • -4 : IPv4のみを対象にする
  •  -6 : IPv6のみを対象にする
  • -s : 統計情報を表示する
  • -c : カラー表示を有効にする

ヘルプオプションの利用方法

IPコマンドのヘルプオプションは「-h」または「–help」です。

これを使用すると、利用可能なオプションやコマンドに関する情報が表示されます。

$ ip --help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
                   tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
                   netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
                   vrf | sr | nexthop }

IPアドレスのサブコマンド・オプション一覧

IPアドレスのサブ個mンなどの、オプションの一覧を作成しました。

たくさんありますので、ぜひ確認のために使ってください。

サブコマンド説明実例
ip address show全てのネットワークインターフェースのIPアドレスを表示します。ip address show
ip address show dev [インターフェース名]指定したネットワークインターフェースのIPアドレスを表示します。ip address show dev eth0
ip address add [IPアドレス] dev [インターフェース名]指定したネットワークインターフェースにIPアドレスを追加します。sudo ip address add 192.168.1.2/24 dev eth0
ip address del [IPアドレス] dev [インターフェース名]指定したネットワークインターフェースからIPアドレスを削除します。sudo ip address del 192.168.1.2/24 dev eth0
ip link set dev [インターフェース名] up指定したネットワークインターフェースを有効化します。sudo ip link set dev eth0 up
ip link set dev [インターフェース名] down指定したネットワークインターフェースを無効化します。sudo ip link set dev eth0 down
ip route showルーティングテーブルを表示します。ip route show
ip route add [ネットワークアドレス] via [ゲートウェイ]ルーティングテーブルに新しいルートを追加します。sudo ip route add 192.168.2.0/24 via 192.168.1.1
ip route del [ネットワークアドレス] via [ゲートウェイ]ルーティングテーブルからルートを削除します。sudo ip route del 192.168.2.0/24 via 192.168.1.1
ip neigh showARPテーブルを表示します。ip neigh show
ip maddress showマルチキャストアドレスを表示します。ip maddress show
ip maddress add [アドレス] dev [インターフェース名]マルチキャストアドレスを追加します。sudo ip maddress add 224.0.0.1 dev eth0
ip maddress del [アドレス] dev [インターフェース名]マルチキャストアドレスを削除します。sudo ip maddress del 224.0.0.1 dev eth0
ip link set dev [インターフェース名] mtu [数値]インターフェースのMTU(最大転送ユニット)を設定します。sudo ip link set dev eth0 mtu 1500
ip link set dev [インターフェース名] address [MACアドレス]インターフェースのMACアドレスを変更します。sudo ip link set dev eth0 address 00:11:22:33:44:55

IPコマンドを理解するのに必要な用語3選

IP・ネットワーク用語として覚えておくべきものを厳選しました。

今後も出てくるので必ず理解しておきましょう。

  • サブネットマスク
  • プレフィックス
  • ネットワークインターフェース
  • ルーティングテーブル
  • IPネイバー(ARP)テーブル
  • IPマルチキャスト

サブネットマスク

サブネットマスクは、IPアドレスの「ネットワーク部分」を識別するために使用されます。

例えば、以下のケースで考えましょう。

  • IPアドレス:192.168.1.1
  • サブネットマスクが255.255.255.0

ネットワークアドレスは192.168.1.0、ホスト部分は0.0.0.1~0.0.0.254となることを意味しています。

これは、ネットワーク部分が24ビット、ホスト部分が8ビットであることを示しています。

サブネットマスクで255となっている部分がネットワーク部分です。(3箇所×8ビットで24ビット)

プレフィックス

プレフィックス(またはプレフィックス長)は、サブネットマスクのビット数表記で、CIDR(Classless Inter-Domain Routing)形式で表現されます。

サブネットマスク255.255.255.0は、プレフィックス長で /24 と表現されます。

これは、最初の24ビットがネットワークを識別し、残りの8ビットがホストを識別することを意味します。

以下に、いくつかのサブネットマスクと対応するプレフィックスの例を示します。

サブネットマスクプレフィックス
255.0.0.0/8
255.255.0.0/16
255.255.255.0/24
255.255.255.128/25
255.255.255.192/26

例えば、IPアドレスが192.168.1.1/24の場合、プレフィックスが/24なので、最初の24ビット(つまり、192.168.1)がネットワーク部分を表し、最後の8ビット(つまり、1.1~1.254)がホスト部分を表します。

これは、ネットワークアドレスが192.168.1.0で、ホストアドレスが0.1~0.254という意味です。

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

ネットワークインターフェースとは、コンピュータがネットワークに接続するための端点のこと。

物理的なハードウェアデバイス(例えば、イーサネットカードやWi-Fiアダプター)またはソフトウェアによる抽象化(例えば、仮想ネットワークインターフェースやループバックインターフェース)のいずれかであることが多いです。

以下に、いくつかの一般的なネットワークインターフェースのタイプを示します:

  • イーサネットインターフェース:物理的なネットワークケーブル(通常はイーサネットケーブル)を介してデータを送受信(eth0、eth1など)
  • Wi-Fi(無線)インターフェース:無線信号を介してデータを送受信(wlan0、wlan1など)
  • ループバックインターフェース:コンピュータ自体へのネットワーク接続を提供(デバッグやネットワークサービスのローカルテストに使用され、通常「lo」)
  • 仮想ネットワークインターフェース:仮想マシンやコンテナにより、ホストマシンと通信するために使用される

ネットワークインターフェースは、IPコマンドを使用して管理できます。

システム上のすべてのネットワークインターフェースとその状態を表示するコマンドはこちら。

$ ip link 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: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
    link/ether ec:b1:d7:5e:c0:87 brd ff:ff:ff:ff:ff:ff
    altname enp0s25

ルーティングテーブル

ルーティングテーブルは、ネットワークパケットが目的地に到達するための「道案内」のようなもの。

コンピュータやルーターがネットワーク上でパケットをどこに送信すべきかを決定するために使用されます。

ルーティングテーブルには次の情報が含まれます。

  • 目的地ネットワーク:このエントリが適用されるIPアドレスの範囲(目的地のIPアドレスか目的地のサブネットを指す)
  • ネクストホップ:パケットが送信される次のルーターやデバイスのIPアドレス
  • 出力インターフェース:パケットが送信されるネットワークインターフェース
  • メトリック:同じ目的地への複数のルートがある場合、どのルートを選ぶべきかを決定するための数値(メトリックが小さいほど、そのルートは優先度が高くなる)

ルーティングテーブルは、静的に(手動で設定)または動的に(ルーティングプロトコルを使用して自動的に更新)構成できます。

IPネイバー(ARP)テーブル

IPネイバー(ARP)テーブルは、ネットワーク内のデバイスのIPアドレスとそれに対応するMACアドレスのマッピングを保持しています。

別名は、ARP(Address Resolution Protocol)キャッシュです。

ネットワーク上で通信するときには、以下の情報が不可欠。

  • IPアドレス:ネットワーク上のデバイスが他のデバイスと通信するとき
  • MACアドレス(物理アドレス):パケットを適切なデバイスに送信するとき

ARPは、各デバイスのMACアドレスを保持しており、通信をスムーズにおこなう手助けをします。

既存の表はキャッシュに保存され、新たなものをキャッシュに書き込んでいくのです。

IPマルチキャスト

IPマルチキャストは、ひとつの送信元から多数の受信者へデータを効率的に送信するための通信技術です。

この仕組みを用いると、同じデータを複数の受信者に対して一度に送信することが可能となります。

IPマルチキャストは、特定のマルチキャストアドレスを目的地とするパケットを、そのアドレスに参加しているすべてのホストに送信する機能です。

マルチキャストアドレスは、特定の範囲のIPアドレスが予約されており、これを使用することでマルチキャスト通信が可能となります。

IPアドレスの表示と設定

IPアドレスを表示・設定する方法です。

基本的な使い方なので、サブコマンド、オプションごと覚えてしまいましょう。

  • IPアドレスの表示
  • IPアドレスの設定
  • IPアドレスの削除
  • サブネットマスクとプレフィックスの理解

IPアドレスの表示

IPアドレスを表示するには、こちらの2とおりがあります。

ip address show
ip a

これにより、すべてのインターフェースのIPアドレス情報が表示されます。

IPアドレスの設定

IPアドレスを設定するには、「ip address add」コマンドを使用します。

以下は、インターフェース「eth0」にIPアドレス「192.168.1.10」を設定する例です。

sudo ip address add 192.168.1.10/24 dev eth0

IPアドレスの削除

IPアドレスを削除するには、「ip address delete」コマンドを使用します。

以下の例では、インターフェース「eth0」のIPアドレス「192.168.1.10」を削除しています。

sudo ip address delete 192.168.1.10/24 dev eth0

サブネットマスクとプレフィックスの理解

サブネットマスクは、IPアドレスのネットワーク部とホスト部を区別するために使用されます。

プレフィックスは、サブネットマスクのビット数で表現され、IPアドレスの後にスラッシュ(/)とともに記述されるもの。

例えば、「192.168.1.10/24」では、プレフィックス「24」がサブネットマスク「255.255.255.0」に対応しています。

ネットワークインターフェースの管理

ネットワークインターフェースの管理方法をお伝えします。

IPコマンドの役割のひとつとして頭に入れておきましょう。

  • インターフェースの一覧表示
  • インターフェースの有効化・無効化
  • MTUやMACアドレスの設定変更

インターフェースの一覧表示

インターフェースの一覧を表示するには、こちら。

ip link show
ip l

これにより、すべてのインターフェースの状態や設定が表示されます。

$ ip route show
default via 192.168.11.1 dev wlx0013eff42ef4 proto dhcp metric 600 
169.254.0.0/16 dev wlx0013eff42ef4 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.11.0/24 dev wlx0013eff42ef4 proto kernel scope link src 192.168.11.23 metric 600 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 

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

インターフェースを有効化するには、「ip link set」コマンドに「up」オプションを指定します。

逆に、無効化するには「down」オプションを指定しましょう。

以下は、インターフェース「eth0」を有効化する例です。

sudo ip link set eth0 up

MTUやMACアドレスの設定変更

インターフェースのMTU(最大転送ユニット)を変更するには、「ip link set」コマンドに「mtu」オプションを指定します。

MACアドレスを変更したい場合は、「address」オプションを使いましょう。

以下は、インターフェース「eth0」のMTUを「1500」に設定し、MACアドレスを「00:11:22:33:44:55」に変更する例です。

sudo ip link set eth0 mtu 1500 address 00:11:22:33:44:55

ルーティングテーブルの操作

ルーティングテーブルを操作する方法をご紹介します。

IPコマンドでルーティングテーブルを操作できるのです。

  • ルーティングテーブルの表示
  • ルーティングテーブルへの追加・削除
  • デフォルトゲートウェイの設定・変更

ルーティングテーブルの表示

ルーティングテーブルを表示するには、以下のとおり。

ip route show
ip r

これにより、現在のルーティング設定が表示されます。

$ ip route show
default via 192.168.11.1 dev wlx0013eff42ef4 proto dhcp metric 600 
169.254.0.0/16 dev wlx0013eff42ef4 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.11.0/24 dev wlx0013eff42ef4 proto kernel scope link src 192.168.11.23 metric 600 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 

ルーティングテーブルへの追加・削除

ルーティングテーブルにエントリを追加するコマンドはこちら。

ip route add [IPアドレス]

逆に、エントリを削除するには以下のとおりです。

ip route delete [IPアドレス]

以下の例では、ネットワーク「192.168.2.0/24」へのルートをゲートウェイ「192.168.1.1」を経由して追加しています。

sudo ip route add 192.168.2.0/24 via 192.168.1.1

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

デフォルトゲートウェイを設定するには、「ip route add」コマンドに「default」オプションを指定します。

デフォルトゲートウェイを変更する場合は、まず既存のエントリを削除してから新しいエントリを追加しましょう。

以下の例では、デフォルトゲートウェイを「192.168.1.1」に設定しています。

sudo ip route add default via 192.168.1.1

IPネイバー(ARP)テーブルの管理

ネイバー(ARP)テーブルの管理方法も見ていきましょう。

覚えることでできることの幅が広がります

  • ネイバー(ARP)テーブルの表示
  • ネイバー(ARP)テーブルへの追加・削除
  • ARPキャッシュのクリア

ネイバー(ARP)テーブルの表示

ネイバー(ARP)テーブルを表示するのは以下のコマンドです。

ip neigh show
ip n

これにより、ARPテーブルが表示されます。

$ ip neigh show
192.168.11.5 dev wlx0013eff42ef4 lladdr 2c:9e:fc:13:12:f4 STALE
192.168.11.2 dev wlx0013eff42ef4 lladdr f0:f0:a4:b7:db:3e STALE
192.168.11.1 dev wlx0013eff42ef4 lladdr 18:ec:e7:1e:f9:e8 REACHABLE
fe80::1aec:e7ff:fe1e:f9e8 dev wlx0013eff42ef4 lladdr 18:ec:e7:1e:f9:e8 router REACHABLE
fe80::5675:d0ff:fef2:c7c2 dev wlx0013eff42ef4 lladdr 18:ec:e7:1e:f9:e8 router STALE

ネイバー(ARP)テーブルへの追加・削除

ネイバー(ARP)テーブルにエントリを追加する方法は、「ip neigh add」コマンドです。

逆に、エントリを削除するには「ip neigh delete」コマンドを使用します。

以下の例では、IPアドレス「192.168.1.10」とMACアドレス「00:11:22:33:44:55」のエントリを追加しています。

sudo ip neigh add 192.168.1.10 lladdr 00:11:22:33:44:55 dev eth0

ARPキャッシュのクリア

ARPキャッシュをクリアするには、こちらのコマンドを使用します。

ip neigh flush

これにより、ARPキャッシュがクリアされます。

sudo ip neigh flush all

以下のような場面でキャッシュをクリアすることがあります。

  • ネットワークトラブルシューティング:特定のデバイスとの通信がうまくいかない場合
  • ネットワーク設定の変更:デバイスのIPアドレスやMACアドレスが変更された場合
  • セキュリティ対策:不正なエントリがキャッシュに含まれていると疑われる場合
  • パフォーマンス向上:特にメモリが限られているデバイスで、リソースを解放したい場合

IPマルチキャストの管理

IPマルチキャストについても見ていきましょう。

  • マルチキャストアドレスの表示
  • マルチキャストアドレスの追加・削除

マルチキャストアドレスの表示

マルチキャストアドレスを表示するコマンドはこちら。

ip maddress show
ip m

これにより、インターフェースごとのマルチキャストアドレスが表示されます。

$ ip maddress show
1:	lo
	inet  224.0.0.251
	inet  224.0.0.1
	inet6 ff02::fb
	inet6 ff02::1
	inet6 ff01::1

マルチキャストアドレスの追加・削除

マルチキャストアドレスを追加するものはこちらです。

ip maddress add

逆に、マルチキャストアドレスを削除するには以下のとおり。

ip maddress delete

以下の例では、インターフェース「eth0」にマルチキャストアドレス「224.0.0.1」を追加しています。

sudo ip maddress add 224.0.0.1 dev eth0

ネットワークトラブルシューティング

ネットワークのトラブルシューティングについてご覧ください。

トラブルがおこる前に見ておくことで、回避できるものもあるでしょう。

  • ネットワークの状態確認方法
  • パケットキャプチャと解析
  • よくあるトラブルシューティングの事例

ネットワークの状態確認方法

ネットワークの状態を確認するには、IPコマンドを使用してインターフェースの状態やアドレス、ルーティングテーブルなどを調べます。

また、pingやtracerouteコマンドを使ってネットワークの接続性を確認することもできます。

PINGコマンドについてはこちら。

【徹底解説】PINGコマンドやその役割、使い方を実例付きで紹介
PINGコマンドについて、詳しく知りたいですか?当記事では、ネットワーク診断に欠かせないPINGについて、その基本概念から役割、使い方までを網羅し、皆さんが効果的に活用できるよう説明します。日常的なネットワーク問題の解決や業務でのトラブルシューティングが容易になります。初心者の方は必見です。

tracerouteコマンドについてはこちら。

tracerouteコマンド入門|書き方や実例、注意点を丁寧に解説
(最終更新月:2023年5月) ✔このような方へ向けて書かれた記事となります 「tracerouteコマンドって何ができるのだろうか?」 「tracerouteコマンドの使い方を知りたい」 「tracerouteコマンドについて、その実例が...

パケットキャプチャと解析

ネットワークトラブルシューティングにおいて、パケットキャプチャと解析は重要な手法です。

tcpdumpやWiresharkといったツールを使用して、ネットワーク上のパケットをキャプチャし、通信内容やパターンを調べることで問題の原因を特定できます。

よくあるトラブルシューティングの事例

何かが起こる前にトラブルシューティングの事例を見ておきましょう。

トラブルシューティングの事例原因対処法
IPアドレスの重複同一ネットワーク内に同じIPアドレスを持つデバイスが2つ以上存在する。IPアドレスを確認し、重複している場合は、いずれかのデバイスのIPアドレスを変更する。
デフォルトゲートウェイの誤設定デフォルトゲートウェイとして設定されているIPアドレスが存在しない、またはネットワークに接続できない場合。デフォルトゲートウェイの設定を確認し、必要であれば適切なIPアドレスに変更する。
ルーティングテーブルの不適切なエントリルーティングテーブルに誤ったエントリが存在し、パケットが適切なルートで転送されない。ルーティングテーブルを確認し、不適切なエントリがあれば修正または削除する。
MTUサイズの不適切な設定送信するパケットのサイズ(MTU)が大きすぎて、ネットワーク経由で送信できない。または、小さすぎて効率が悪い。MTUサイズの設定を確認し、必要であれば適切な値に調整する。

IPコマンドと他のネットワークコマンドとの比較

ほかのコマンドとの比較をおこないました。

違いを理解して、適切に使い分けましょう。

  • ifconfigとの違い
  • routeとの違い
  • netstatとの違い

ifconfigとの違い

ifconfigは古いネットワークコマンドで、主にインターフェースの設定と表示を行います。

IPコマンドは、ifconfigの機能に加え、ルーティングテーブルやARPテーブルの操作も可能であり、より柔軟で統合的なツールです。

routeとの違い

routeは、ルーティングテーブルの操作を行う古いコマンドです。

IPコマンドは、routeの機能に加え、インターフェースやARPテーブルの操作も可能であり、より統合的なツールです。

netstatとの違い

netstatは、ネットワーク接続やルーティングテーブル、インターフェース統計などを表示するコマンドです。

IPコマンドは、これらの情報を表示するだけでなく、設定の変更や操作も可能です。

IPコマンドを活用した実践的なネットワーク管理の例

具体的な実践例をご覧ください。

どのように使うべきかのイメージがわきやすくなります。

  • ネットワークの監視と分析
  • ネットワークのセキュリティ向上
  • ネットワークの最適化

ネットワークの監視と分析

IPコマンドを使用して、インターフェースの状態やアドレス、ルーティングテーブル、ARPテーブルなどを定期的に確認し、ネットワークの異常や問題を検出できます。

ネットワークのセキュリティ向上

IPコマンドを活用して、不正なIPアドレスやMACアドレスを検出し、ネットワークアクセスを制御できます。また、ARPスプーフィングなどの攻撃を防ぐためにARPテーブルの管理も行えます。

ネットワークの最適化

IPコマンドを使用して、ルーティングテーブルの最適化やインターフェース設定の調整を行い、ネットワークのパフォーマンスを向上させることができます。

まとめ

IPコマンドは、ネットワーク管理において非常に重要なツールです。

インターフェース、ルーティングテーブル、ARPテーブルなどの操作が可能であり、ネットワークの監視や分析、最適化に役立つでしょう。

IPコマンドを習得することで、効率的なネットワーク管理が可能になります。

さらなるスキルアップのために、他のネットワークコマンドやツールを学習し、実践的なネットワーク管理を目指しましょう。

タイトルとURLをコピーしました