(最終更新月:2023年5月)
✔このような方へ向けて書かれた記事となります
「IPコマンドって何ができるのだろうか?」
「IPコマンドの書き方を教えてほしい」
「IPコマンドの実例が見たい」
✔当記事を通じてお伝えすること
- IPコマンドとは?
- IPコマンドの基本的な書き方
- IPコマンドの実例
当記事では、IPコマンドの基本的な書き方だけでなく、具体的な例を用いて、丁寧に使い方を解説しています。
ぜひ最後までご覧ください。
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 show | ARPテーブルを表示します。 | 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コマンドについてはこちら。
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コマンドを習得することで、効率的なネットワーク管理が可能になります。
さらなるスキルアップのために、他のネットワークコマンドやツールを学習し、実践的なネットワーク管理を目指しましょう。