ipコマンドの基本的な使い方
[History] [Last Modified] (2014/11/03 18:02:10)
ここは
趣味のプログラミングを楽しむための情報共有サービス。記事の一部は有料設定にして公開できます。 詳しくはこちらをクリック📝
Recent posts
Popular pages

概要

ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。

基本形 ("man ip" より抜粋)

$ ip OBJECT COMMAND
  • OBJECT: link, neigh, addr, route (等)
  • COMMAND: show, add, delete (等)

データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用)

MACアドレス ("08:00:27:1a:eb:d9", "08:00:27:85:8b:86") 等の調査ができます。

$ /sbin/ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:1a:eb:d9 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:85:8b:86 brd ff:ff:ff:ff:ff:ff

同様の機能を有するコマンドとして有名なものは /sbin/ifconfig ですが "man ifconfig" によると "ip link" の使用が推奨されています。

ifconfig: This program is obsolete! For replacement check ip addr and ip link.

ARPテーブルの内容を表示 (arpコマンドの代用)

IPアドレスとMACアドレスの対応関係の情報が格納されたARPテーブルの内容を表示できます。

$ /sbin/ip neigh show  ← neigh: neighborの略
192.168.56.1 dev eth1 lladdr 08:00:27:00:4c:4f REACHABLE

↑192.168.56.1 というIPアドレスのホストと通信するためには
08:00:27:00:4c:4f というMACアドレスを有するデバイスと通信ができる eth1 (dev:デバイス) を利用すればよいという情報

同様の機能を有するコマンドとして有名なものは /sbin/arp ですが "man arp" によると "ip neigh" の使用が推奨されています。

arp: This program is obsolete. For replacement check ip neighbor.

ネットワーク層のIPアドレス情報を表示 (ifconfigコマンドの代用)

インタフェース毎に割り当てられたIPアドレスの調査などができます。

$ /sbin/ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:1a:eb:d9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
    inet6 fe80::a00:27ff:fe1a:ebd9/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:85:8b:86 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.10/24 brd 192.168.56.255 scope global eth1
    inet6 fe80::a00:27ff:fe85:8b86/64 scope link
       valid_lft forever preferred_lft forever

同様の機能を有するコマンドとして有名なものは /sbin/ifconfig ですが "man ifconfig" によると "ip addr" の使用が推奨されています。

ifconfig: This program is obsolete! For replacement check ip addr and ip link.

ルーティングテーブルを表示 (routeおよびnetstatコマンドの代用)

$ /sbin/ip route show
10.0.2.0/24                   dev eth0  proto kernel  scope link  src 10.0.2.15
192.168.56.0/24               dev eth1  proto kernel  scope link  src 192.168.56.10
169.254.0.0/16                dev eth0                scope link  metric 1002
169.254.0.0/16                dev eth1                scope link  metric 1003
default         via 10.0.2.2  dev eth0

用語

  • proto kernel: "the route was installed by the kernel during autoconfiguration." (man ip より。カーネルによって自動設定されたルーティング)
  • scope link: "direct unicast and broadcast routes" (man ip より。直接的なユニキャストまたはブロードキャストで使用されるルーティング)
  • 169.254.0.0/16: リンクローカルアドレス。LANよりも更に狭くリンク内でのみ有効。ルータによって転送されず 1:1 通信などで使用される

読み取れること

  • IPパケットの送信元アドレスが "10.0.2.15" で宛先アドレスが "10.0.2.0/24" の範囲のものは eth0 デバイス(dev)を経由して送り出せばよい
  • IPパケットの送信元アドレスが "192.168.56.10" で宛先アドレスが "192.168.56.0/24" の範囲のものは eth1 デバイス(dev)を経由して送り出せばよい
  • IPパケットの送信元アドレスは問わず、宛先アドレスが "169.254.0.0/16" の範囲のものは eth0 または eth1 デバイス(dev)を経由して送り出せばよい
  • 上記ルーティングで対応できないものは eth0 デバイス(dev) を経由して "10.0.2.2" に転送を依頼すればよい

同様の機能を有するコマンドとして有名なものは /sbin/route および /bin/netstat -rn ですが "man route" および "man netstat" によると "ip route" の使用が推奨されています。

route: This program is obsolete. For replacement check ip route.

netstat: This program is obsolete. Replacement for netstat -r is ip route.

Related pages
    概要 「何とかstat」というコマンドがたくさんあります。よく使うものの基本的な使用方法をまとめます。 iostat (I/Oデバイスの統計情報) システムが認識する各デバイスのI/Oの使用状況を調査するコマンドです。補足情報としてCPUの使用状況「%user, %system, %iowait, %idle」も合わせて出力されます。それらの意味については
    概要 /etc/sysconfig/static-routes ファイルを編集することによって静的ルートを設定できます。例をいくつか示します。 設定例 初期状態ではそもそもファイルが存在しないため作成します。 sudo touch /etc/sysconfig/static-routes 現在のルーティングテーブルを表示してみます。
    概要 VyOS は Debian GNU/Linux をもとにしたオープンソースの OS です。かつて無償提供されていた Vyatta Core から fork して開発されています。ルーティングソフトウェア Quagga やこちらのページに記載した OpenVPN を利用した、ソフトウェアルータとしての機能を有しています。AWS EC2 の AMI も Marketplace で提供されており
    概要 こちらで公開されている stone という小型のツールを用いると、飛び石としてパケット転送を行う中継サーバを用意することができます。実際には多機能なツールですがここでは最も簡単な使用例を紹介します。 ビルド手順 ダウンロード 公式サイトから最新のもの stone version 2.3e をダウンロードします。
    概要 電子工作や製品のプロトタイピング (例『地球規模で遠隔操作できるブルドーザー』) で利用される Raspberry Pi 3 について、こちらのページで構築した環境で Android Things アプリケーションを開発できます。 本ページでは、簡単な例として LED を点灯させるアプリケーションを扱います。より実用的なアプリケーションを開発する際には