ipコマンドはネットワークのルーティング、デバイス、インターフェース等に関しての表示や操作を行うことができるコマンドになります。操作を行う場合は管理者権限が必要になります。
net-toolsパッケージが非推奨になり、iproute2パッケージに移行したためこのコマンドがよく利用されるようになりました。多くのオブジェクトを持つため、かなり絞って紹介します。
また、このコマンドでの設定は再起動によって設定が戻ったり、NetworkManager、systemd-networkdによって自動的に設定が戻る場合もあることを考慮する必要があります。
目次
ipコマンドの形式
ipコマンドの形式
1 2 3 4 5 |
ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | tcp_metrics | token | macsec | vrf | mptcp | ioam } |
ipコマンドのサブコマンドの指定方法に関して
ipコマンドのオブジェクトを指定する場合はオブジェクトが特定できるレベルまでトークンを省略できます。例えば、
1 |
ip address show |
は
1 |
ip addr show |
や、さらには
1 |
ip a s |
まで省略して指定できます。
また、オブジェクトの後のコマンドが省略された場合はいくつかのオブジェクトはデフォルトのコマンドで実行されます。
よく利用するようなオブジェクトのデフォルトのコマンドはshowになっています。なので、
1 |
ip address show |
は
1 |
ip address |
のように指定できます。つまり、以下のコマンドはすべて等価なコマンドになります。
1 2 3 4 5 |
ip address show ip address ip addr show ip a s ip a |
しかし、シェルスクリプト等を作成する場合にipコマンドを極端に省略すると動作するにしても、
後で読んで意味が分かりにくくなる場合があるので、そのような場合は省略せず記述するのが無難な対応になると思います。
ipコマンドのhelp
ipコマンドはそれぞれのオブジェクトごとにhelpコマンドを利用すると構文を確認できます。
1 2 3 4 5 6 7 8 9 10 11 |
$ ip address help Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ] ip address del IFADDR dev IFNAME [mngtmpaddr] ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ] [ type TYPE ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] [ vrf NAME ] ] ip address {showdump|restore} ~~以下省略~~ |
また、manコマンドでもipコマンド自体の他にそれぞれのオブジェクトごとの項目があります。
1 |
man ip address |
または
1 |
man ip-address |
オプション
表示に関するオプションを紹介します。
json形式で表示(-jオプション)
-jオプションはipコマンドの表示形式をjson形式にできるオプションになります。
ip address showではオプションなしだと以下のように表示されます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ 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 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:95:49:51 brd ff:ff:ff:ff:ff:ff inet 192.168.224.10/24 brd 192.168.224.255 scope global dynamic noprefixroute enp0s3 valid_lft 65sec preferred_lft 65sec inet6 fe80::bf3c:b723:b5a1:38fe/64 scope link noprefixroute valid_lft forever preferred_lft forever |
-jオプションを用いると以下のように表示されます。
コマンド例と実行結果
1 2 |
$ ip -j address show [{"ifindex":1,"ifname":"lo","flags":["LOOPBACK","UP","LOWER_UP"],"mtu":65536,"qdisc":"noqueue","operstate":"UNKNOWN","group":"default","txqlen":1000,"link_type":"loopback","address":"00:00:00:00:00:00","broadcast":"00:00:00:00:00:00","addr_info":[{"family":"inet","local":"127.0.0.1","prefixlen":8,"scope":"host","label":"lo","valid_life_time":4294967295,"preferred_life_time":4294967295},{"family":"inet6","local":"::1","prefixlen":128,"scope":"host","valid_life_time":4294967295,"preferred_life_time":4294967295}]},{"ifindex":2,"ifname":"enp0s3","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"pfifo_fast","operstate":"UP","group":"default","txqlen":1000,"link_type":"ether","address":"08:00:27:95:49:51","broadcast":"ff:ff:ff:ff:ff:ff","addr_info":[{"family":"inet","local":"192.168.224.10","prefixlen":24,"broadcast":"192.168.224.255","scope":"global","dynamic":true,"noprefixroute":true,"label":"enp0s3","valid_life_time":106,"preferred_life_time":106},{"family":"inet6","local":"fe80::bf3c:b723:b5a1:38fe","prefixlen":64,"scope":"link","noprefixroute":true,"valid_life_time":4294967295,"preferred_life_time":4294967295}]}] |
json形式を整形して表示(-pオプション)
-pオプションは-jオプションと一緒に使用するオプションで、json形式の表示を整形して表示できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
$ ip -p -j address show [ { "ifindex": 1, "ifname": "lo", "flags": [ "LOOPBACK","UP","LOWER_UP" ], "mtu": 65536, "qdisc": "noqueue", "operstate": "UNKNOWN", "group": "default", "txqlen": 1000, "link_type": "loopback", "address": "00:00:00:00:00:00", "broadcast": "00:00:00:00:00:00", "addr_info": [ { "family": "inet", "local": "127.0.0.1", "prefixlen": 8, "scope": "host", "label": "lo", "valid_life_time": 4294967295, "preferred_life_time": 4294967295 },{ "family": "inet6", "local": "::1", "prefixlen": 128, "scope": "host", "valid_life_time": 4294967295, "preferred_life_time": 4294967295 } ] },{ "ifindex": 2, "ifname": "enp0s3", "flags": [ "BROADCAST","MULTICAST","UP","LOWER_UP" ], "mtu": 1500, "qdisc": "pfifo_fast", "operstate": "UP", "group": "default", "txqlen": 1000, "link_type": "ether", "address": "08:00:27:95:49:51", "broadcast": "ff:ff:ff:ff:ff:ff", "addr_info": [ { "family": "inet", "local": "192.168.224.10", "prefixlen": 24, "broadcast": "192.168.224.255", "scope": "global", "dynamic": true, "noprefixroute": true, "label": "enp0s3", "valid_life_time": 104, "preferred_life_time": 104 },{ "family": "inet6", "local": "fe80::bf3c:b723:b5a1:38fe", "prefixlen": 64, "scope": "link", "noprefixroute": true, "valid_life_time": 4294967295, "preferred_life_time": 4294967295 } ] } ] |
簡単な形式での表示(-brオプション)
-brオプションは指定したサブコマンドの表示に関してより簡単な形式での表示ができるオプションになります。
コマンド例と実行結果
1 2 3 |
$ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 fe80::bf3c:b723:b5a1:38fe/64 |
詳細な表示(-dオプション)
-dオプションは指定したサブコマンドの表示に関してより詳細な情報を表示できるオプションになります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ ip -d 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 promiscuity 0 minmtu 0 maxmtu 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:95:49:51 brd ff:ff:ff:ff:ff:ff promiscuity 0 minmtu 46 maxmtu 16110 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 parentbus pci parentdev 0000:00:03.0 inet 192.168.224.10/24 brd 192.168.224.255 scope global dynamic noprefixroute enp0s3 valid_lft 98sec preferred_lft 98sec inet6 fe80::bf3c:b723:b5a1:38fe/64 scope link noprefixroute valid_lft forever preferred_lft forever |
統計情報の表示(-sオプション)
-sオプションは統計情報を表示するオプションになります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ ip -s 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 RX: bytes packets errors dropped missed mcast 35036 342 0 0 0 0 TX: bytes packets errors dropped carrier collsns 35036 342 0 0 0 0 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:95:49:51 brd ff:ff:ff:ff:ff:ff inet 192.168.224.10/24 brd 192.168.224.255 scope global dynamic noprefixroute enp0s3 valid_lft 104sec preferred_lft 104sec inet6 fe80::bf3c:b723:b5a1:38fe/64 scope link noprefixroute valid_lft forever preferred_lft forever RX: bytes packets errors dropped missed mcast 4416695 4314 0 0 0 0 TX: bytes packets errors dropped carrier collsns 314764 2139 0 0 0 0 |
ip address - アドレスの表示、追加、削除
ip addressコマンドはIPアドレスに関してのコマンドになります。
ip address show
ネットワークインターフェースに設定されているIPアドレスを確認できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ 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 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:95:49:51 brd ff:ff:ff:ff:ff:ff inet 192.168.224.10/24 brd 192.168.224.255 scope global dynamic noprefixroute enp0s3 valid_lft 83sec preferred_lft 83sec inet6 fe80::bf3c:b723:b5a1:38fe/64 scope link noprefixroute valid_lft forever preferred_lft forever |
また、-brオプションを用いると以下のような形式で表示されます。
1 2 3 4 5 6 |
$ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 fe80::bf3c:b723:b5a1:38fe/64 $ $ ip -br address show dev enp0s3 enp0s3 UP 192.168.224.10/24 fe80::bf3c:b723:b5a1:38fe/64 |
以下のコマンドの形式に従えば、表示したい項目を絞り込むこともできます。
1 2 3 |
ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label PATTERN ] [ master DEVICE ] [ type TYPE ] [ vrf NAME ] [ up ] ] |
詳しくはmanコマンドやip address helpで確認することもできます。
ip address add
ネットワークインターフェースにIPアドレスを追加できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 fe80::bf3c:b723:b5a1:38fe/64 $ $ sudo ip address add 192.168.224.250/24 dev enp0s3 $ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 192.168.224.250/24 fe80::bf3c:b723:b5a1:38fe/64 |
ip address delete
ネットワークインターフェースに設定しているIPアドレスを削除できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 192.168.224.250/24 fe80::bf3c:b723:b5a1:38fe/64 $ $ sudo ip address delete 192.168.224.250/24 dev enp0s3 $ ip -br address show lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 192.168.224.10/24 fe80::bf3c:b723:b5a1:38fe/64 |
ip link
ネットワークデバイスについてのコマンドであり、仮想的なデバイスについても設定できます。
ip link show
ip link showコマンドでネットワークデバイスを確認できます。
コマンド例と実行結果
1 2 3 4 5 |
$ 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:95:49:51 brd ff:ff:ff:ff:ff:ff |
-brオプションを用いると以下のような形式で表示されます。
1 2 3 |
$ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> |
UP状態のデバイスを確認したい場合は
1 |
ip link show up |
のように利用できます。
1 2 3 4 5 6 7 8 |
$ ip -br link show up lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> $ $ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> enp0s3.100@enp0s3 DOWN 08:00:27:95:49:51 <BROADCAST,MULTICAST> |
ip link set
ip link setコマンドでデバイスの属性を変更できます。例えば、ネットワークインターフェースをUP状態やDOWN状態にできます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ ip --br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> $ sudo ip link set enp0s3 down $ $ ip --br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 DOWN 08:00:27:95:49:51 <BROADCAST,MULTICAST> $ sudo ip link set enp0s3 up $ $ ip --br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> |
ip link add
ip link addコマンドでネットワークデバイスを追加できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 |
$ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> $ $ sudo ip link add link enp0s3 name enp0s3.100 type vlan id 100 $ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> enp0s3.100@enp0s3 DOWN 08:00:27:95:49:51 <BROADCAST,MULTICAST> |
ip link delete
ip link deleteコマンドでネットワークデバイスを削除できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> enp0s3.100@enp0s3 DOWN 08:00:27:95:49:51 <BROADCAST,MULTICAST> $ sudo ip link delete link enp0s3 name enp0s3.100 type vlan id 100 $ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> |
また、上の例はip link addコマンドを使いまわしているため、場合によってはもう少し指定を簡単にできます。
1 2 3 4 5 6 7 8 9 |
$ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> enp0s3.100@enp0s3 DOWN 08:00:27:95:49:51 <BROADCAST,MULTICAST> $ $ sudo ip link delete link enp0s3 dev enp0s3.100 $ ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> enp0s3 UP 08:00:27:95:49:51 <BROADCAST,MULTICAST,UP,LOWER_UP> |
ip route
ルーティングテーブルに関するコマンドになります。
ip route show
ip route showコマンドで現在のルーティングテーブルの内容を確認できます。
コマンド例と実行結果
1 2 3 4 |
$ ip route show default via 192.168.224.1 dev enp0s3 proto dhcp src 192.168.224.11 metric 100 169.254.0.0/16 dev enp0s3 scope link metric 1000 192.168.224.0/24 dev enp0s3 proto kernel scope link src 192.168.224.11 metric 100 |
補足として、ip ruleコマンドでルーティングポリシーのデータベースを確認でき、ip route showでtableを指定すると別のルーティングテーブルを確認できます。
1 2 3 4 5 6 7 8 9 10 11 |
$ ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default $ $ ip route show table local local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 192.168.224.11 dev enp0s3 proto kernel scope host src 192.168.224.11 broadcast 192.168.224.255 dev enp0s3 proto kernel scope link src 192.168.224.11 |
ip route add
ip route addコマンドでルーティングテーブルのルートを追加できます。
コマンド例と実行結果
1 2 3 4 5 6 |
$ sudo ip route add 192.168.224.13/32 via 192.168.224.11 dev enp0s3 $ ip route show default via 192.168.224.1 dev enp0s3 proto dhcp src 192.168.224.11 metric 100 169.254.0.0/16 dev enp0s3 scope link metric 1000 192.168.224.0/24 dev enp0s3 proto kernel scope link src 192.168.224.11 metric 100 192.168.224.13 via 192.168.224.11 dev enp0s3 |
ip route delete
ip route deleteコマンドでルーティングテーブルのルートを削除できます。
コマンド例と実行結果
1 2 3 4 5 |
$ sudo ip route delete 192.168.224.13/32 via 192.168.224.11 dev enp0s3 $ ip route show default via 192.168.224.1 dev enp0s3 proto dhcp src 192.168.224.11 metric 100 169.254.0.0/16 dev enp0s3 scope link metric 1000 192.168.224.0/24 dev enp0s3 proto kernel scope link src 192.168.224.11 metric 100 |
ip route get
ip route getコマンドは宛先へのルートを表示します。また、下の例で出ている208.67.222.222はOpenDNSのIPアドレスになります。
1 2 3 4 5 6 |
$ ip route get 192.168.224.13 192.168.224.13 dev enp0s3 src 192.168.224.11 uid 1000 cache $ ip route get 208.67.222.222 208.67.222.222 via 192.168.224.1 dev enp0s3 src 192.168.224.11 uid 1000 cache |
ip neigh
ARP(Address Resolution Protocol)テーブルに関するコマンドになります。
neighはneighbour又はneighborの略ですが、manやhelpでneighの方が構文として載っているのでneighの方を利用します。補完する場合はneighbourとneighborの方が出たりします。スペルの違いはイギリス英語かアメリカ英語かの違いです。
ただ、manコマンドで指定したい場合は、
1 2 |
man ip neighbour man ip-neighbour |
と指定する必要があります。
ARPテーブルは宛先のIPアドレスから、次にパケットを渡したい機器のMACアドレスを探すために利用するテーブルになります。
ip neigh show
ip neigh showでARPテーブルを確認できます。
コマンド例と実行結果
1 2 3 4 |
$ ip neigh show 192.168.224.1 dev enp0s3 lladdr 52:54:00:12:35:00 STALE 192.168.224.13 dev enp0s3 lladdr 08:00:27:92:22:b4 STALE 192.168.224.254 dev enp0s3 lladdr 08:00:27:69:00:2c STALE |
-brオプションを用いると以下のような形式で表示されます。
1 2 3 4 |
$ ip -br neigh show 192.168.224.1 enp0s3 52:54:00:12:35:00 192.168.224.13 enp0s3 08:00:27:92:22:b4 192.168.224.254 enp0s3 08:00:27:69:00:2c |
ip neigh flush
ip neigh flushコマンドは指定した条件に合うレコードをARPテーブルから削除できます。
ip neigh showコマンドと同じ引数を取ることができ、以下の例ではデバイスを指定してその該当するデバイスでのARPテーブルのレコードを削除しています。
コマンド例と実行結果
1 2 3 |
$ sudo ip neigh flush dev enp0s3 $ ip neigh show $ |
ip neigh get
ip neigh getコマンドはアドレスとデバイスを指定して、ARPテーブルから該当するレコードを検索できます。
1 2 |
$ ip neigh get 192.168.224.13 dev enp0s3 192.168.224.13 dev enp0s3 lladdr 08:00:27:92:22:b4 STALE |
参考
vlanの設定例について
VLAN - ArchWiki