Linuxコマンド辞典 ipコマンド(ネットワーク)

ネットワークインターフェース/ルーティング/トンネルなどを設定する「ip」コマンドの概要と使い方を記載しています。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ ip オブジェクト [コマンド]

ネットワークインターフェースの作成/削除などの操作や、IPアドレスの設定を行うことができます。また、ルーティングテーブルを追加することもできます。操作対象はオブジェクトで指定します。オブジェクトやサブコマンドは識別できる範囲で省略可能です(address→addr、aなど)

linkオブジェクトで使用するコマンド

ネットワークデバイスの設定/削除を行う。Ethernetやブリッジ、VLANなどのインターフェースを作成できる。以下のコマンドが使用できる。

コマンド説明
addインターフェース名 type タイプ指定したタイプ(bridgeやvlanなど)のインターフェース名を作成する
delete インターフェース名 オプション指定したインターフェースを削除する
set インターフェース名 オプションインターフェースにオプションを指定する。Linux NameSpace Networkなどはここで設定できる
list,show [インターフェース名]すべて、もしくは指定したインターフェースの情報を表示する

address(addr)オブジェクトで使用するコマンド

インターフェースへのアドレス設定/削除を行う。以下のコマンドが使用できる

コマンド説明
add アドレス dev インターフェース名インターフェースに指定したアドレスを設定する
delete アドレス/プレフィックス dev インターフェース名インターフェースに設定している情報から指定したアドレス/プレフィックスを削除する
list,show [インターフェース名]すべて、もしくは指定したインターフェースの設定情報を表示する
flush dev インターフェース名インターフェースに設定されている情報をすべて削除する

routeオブジェクトで使用するコマンド

ルーティングテーブルを設定/削除する。以下のコマンドが使用できる。

コマンド説明
list,showルーティングテーブルを表示する
add ターゲット via ゲートウェイ
dev インターフェース名
ターゲットへのアクセスするためにインターフェースを使ってゲートウェイを経由することを設定する
del ターゲットターゲットへのルーティングテーブルを削除する

neighbourオブジェクトで使用するコマンド

ARPテーブルを管理する。以下のコマンドが使用できる。

コマンド説明
list,showAPRテーブルを表示する
flushAPRテーブルを削除する

インターフェースを作成する

ブリッジインターフェースbr0を作成する

$ ip link add インターフェース名 type bridge

実行結果

[root@localhost ~]# ip link add br0 type bridge #ブリッジインターフェースbr0を作成します。
[root@localhost ~]# ip link show  dev br0       #作成されたことを確認する
4: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 8a:e0:08:66:c1:12 brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link delete br0          #削除する場合はdeleteを使う
[root@localhost ~]# ip link show  dev br0
Device "br0" does not exist.
[root@localhost ~]# 

ネットワークインターフェースのデータリンク層の情報を表示する

ブリッジインターフェースbr0を作成する

$ ip link show インターフェース名

実行結果

[rin@localhost ~]$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:00:1a:09 brd ff:ff:ff:ff:ff:ff
[rin@localhost ~]$ 

インターフェースにIPアドレスを設定する

$ ip addr add IPアドレス/サブネットマスク インターフェース名

実行結果

[root@localhost ~]# ip addr add 192.168.0.103/24 eth0 #インターフェースeth0に2つ目のIPアドレスを設定
[root@localhost ~]$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:1a:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.103/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::e247:274a:2f9f:f198/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[suna@localhost ~]$ 
[rin@localhost ~]$ ip link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:15:5d:00:1a:09 brd ff:ff:ff:ff:ff:ff
[rin@localhost ~]$ 

IPアドレスを表示する

$ ip addr show

実行結果

[rin@localhost ~]$ ip addr 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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:1a:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.60/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe00:1a09/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:e5:4a:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
[rin@localhost ~]$ 

インターフェースにIPエイリアスのようなラベルと付ける

$ ip addr add IPアドレス/サブネットマスク インターフェース名 label ラベル名

実行結果

[root@localhost ~]# ip addr add 192.168.0.104/24 dev eth0 label eth0:1 #eth0:1ラベルを付ける
[root@localhost ~]# ip addr show label eth0:1
    inet 192.168.0.104/24 scope global secondary eth0:1
       valid_lft forever preferred_lft forever
[root@localhost ~]# 
[root@localhost ~]# ip addr add 192.168.0.103/24 eth0 #インターフェースeth0に2つ目のIPアドレスを設定
[root@localhost ~]$ ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:1a:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.103/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::e247:274a:2f9f:f198/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[suna@localhost ~]$ 

インターフェースから特定のIPアドレスだけ削除する

$ ip addr delete IPアドレス/サブネットマスク dev インターフェース名

実行結果

[root@localhost ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:1a:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.103/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.104/24 scope global secondary eth0:1
       valid_lft forever preferred_lft forever
    inet6 fe80::e247:274a:2f9f:f198/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr delete 192.168.0.104/24 dev eth0 #eth0から192.168.0.104/24を削除する
[root@localhost ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:00:1a:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.102/24 brd 192.168.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 192.168.0.103/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::e247:274a:2f9f:f198/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

インターフェースからすべての設定情報を削除する

$ ip addr flush dev インターフェース名

特定のネットワークへアクセスするインターフェースを設定

例えば、eth0のネットワークアダプタは192.168.0.1/24、eth1のネットワークアダプタが192.168.1.1/24の2つのネットワークがあった場合、Linuxからアクセスする場合どちらのネットワークアダプタからアクセスすればよいかわからずアクセスできない場合があるので、そのようの場合は以下のコマンドでネットワークアドレスを指定することでアクセスができるようになります。

$ ip route add IPアドレス/24 dev インターフェース名
[root@localhost suna]# ip route
default via 192.168.0.1 dev eth0 proto static metric 100 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.102 metric 100 
192.168.1.0/24 dev eth0 scope link 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
[root@localhost suna]# 

ネットワークに特定のゲートウェイ(経由地)を指定してルーティングを設定する

1つネットワークアダプタが接続するネットワークに複数ゲートウェイ(経由地)がある場合、ルーティングテーブルに設定することで、特定のネットワークアクセスに関してはゲートウェイを指定してアクセスすることができます。

$ ip route add IPアドレス/サブミットマスク via IPアドレス dev インターフェース名
[root@localhost suna]# ip route add 10.100.0.0/24 via 192.168.1.243 dev eth0
[root@localhost suna]# ip route
default via 192.168.0.1 dev eth0 proto static metric 100 
10.100.0.0/24 via 192.168.1.243 dev eth0 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.102 metric 100 
192.168.1.0/24 dev eth0 scope link 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
[root@localhost suna]# 
[root@localhost suna]# ip route
default via 192.168.0.1 dev eth0 proto static metric 100 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.102 metric 100 
192.168.1.0/24 dev eth0 scope link 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
[root@localhost suna]# 

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

$ ip route add default via IPアドレス
[root@localhost ~]# ip route add default via 192.168.0.1

ARPテーブルを表示/削除する

$ ip neighbour show
[root@localhost suna]# ip neighbour show
192.168.0.29 dev eth0 lladdr d4:5d:64:54:6e:70 DELAY
192.168.0.1 dev eth0 lladdr f8:b7:97:23:6b:94 REACHABLE
[root@localhost suna]# ip neighbour flush all
[root@localhost suna]# ip neighbour show
192.168.0.29 dev eth0 lladdr d4:5d:64:54:6e:70 REACHABLE
[root@localhost suna]#