dshimizu/blog/alpha

とりとめのないITブログ

CentOS 7でネットワークの状態確認するためのipコマンド、ssコマンドについてメモ

はじめに

CentOS 7ではnet-toolsパッケージ(ifconfigコマンド、netstatコマンド等)が非推奨になりデフォルトではインストールされておらず、iprouteパッケージ(ipコマンド、ssコマンド)が使われることになっています。

慣れていないコマンドはなかなかオプション等を覚えられず、最初は苦労しましたので、すでにいろいろなブログ記事等で紹介されていますが、自分用に簡単な使い方をいくつかメモしておきます。

ipコマンド, ssコマンドによるネットワーク確認

基本的な使い方はhelpで確認できます。必要に応じてmanで確認します。

  • ipコマンドの使い方

Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}
  • ssコマンドの使い方

Usage: ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
-h, --help this message
-V, --version output version information
-n, --numeric don't resolve service names
-r, --resolve resolve host names
-a, --all display all sockets
-l, --listening display listening sockets
-o, --options show timer information
-e, --extended show detailed socket information
-m, --memory show socket memory usage
-p, --processes show process using socket
-i, --info show internal TCP information
-s, --summary show socket usage summary
-b, --bpf show bpf filter socket information

-4, --ipv4 display only IP version 4 sockets
-6, --ipv6 display only IP version 6 sockets
-0, --packet display PACKET sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
-d, --dccp display only DCCP sockets
-w, --raw display only RAW sockets
-x, --unix display only Unix domain sockets
-f, --family=FAMILY display sockets of type FAMILY

-A, --query=QUERY, --socket=QUERY
QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE Dump raw information about TCP sockets to FILE
-F, --filter=FILE read filter information from FILE
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
ネットワークデバイスの状態確認

ipコマンドのaddressオブジェクトを用いてネットワークデバイスIPアドレスや状態を確認できます。

構文


ip address show

 ※addressaと短縮可能、showは省略可能


ip address show dev デバイス

 ※addressaと短縮可能

実行例

以下が実行例です。


% ip a
1: lo: mtu 65536 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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
inet brd <ブロードキャストアドレス> scope global eth0
valid_lft forever preferred_lft forever
inet6 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
4: eth2: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff

% ip a show dev eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:11:00:42:42 brd ff:ff:ff:ff:ff:ff
inet brd <ブロードキャストアドレス> scope global eth0
valid_lft forever preferred_lft forever
inet6 scope link
valid_lft forever preferred_lft forever
ネットワークデバイスのリンクのダウン/アップ、状態確認

ipコマンドのlinkオブジェクトを用いてネットワークデバイスのリンク状態を確認できます。

構文
  • ネットワークデバイスをリンクダウン

ip link set デバイス名 down

 ※linklと短縮可能

  • ネットワークデバイスをリンクアップ

ip link set デバイス名 up

 ※linklと短縮可能

  • 全てのネットワークデバイスのリンク確認

ip link show

 ※linklと短縮可能、showは省略可能

  • 特定のネットワークデバイスのリンク確認

ip link show dev デバイス

 ※linklと短縮可能

実行例

以下が実行例です。

  • ネットワークデバイスのリンクダウン


# ip l set eth1 down

  • ネットワークデバイスのリンク状態確認


# ip l show eth1
3: eth1: mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff

  • ネットワークデバイスのリンクアップ


# ip link set eth1 up

  • ネットワークデバイスのリンク状態確認


# ip link show dev eth1
3: eth1: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
パケットの処理情報確認

ipコマンドの-sオプションでデバイスのより詳細な情報を表示できます。linkオブジェクトと組み合わせることで、パケットの処理状態を表示できます。

構文
  • 全てのネットワークデバイスのパケットの処理情報を表示

ip -s link show

 ※linklと短縮可能、showは省略可能

  • 全てのネットワークデバイスのパケットの処理情報を表示

ip -s link show dev デバイス

 ※linklと短縮可能

実行例

# ip -s l
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
2060 19 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2060 19 0 0 0 0
2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
53242888 780447 0 0 0 0
TX: bytes packets errors dropped carrier collsns
4936364 25919 0 0 0 0
3: eth1: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
468 6 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
4: eth2: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
468 6 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0

# ip -s l show dev eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
53909617 790762 0 0 0 0
TX: bytes packets errors dropped carrier collsns
5012886 26334 0 0 0 0
ルーティングテーブル確認

ipコマンドのrouteオブジェクトを用いてルーティングテーブルのエントリを確認できます。

構文

ip route show

 ※routerと短縮可能、showは省略可能

実行例

# ip r
default via <デフォルトゲートウェイアドレス> dev eth0 proto static metric 1024
<サブネットIPアドレス> dev eth0 proto kernel scope link src
arpキャッシュ確認

ipコマンドのneighbourオブジェクトを用いてARPやNDISCのキャッシュ状態を確認できます。

構文

ip neighbour show

 ※neighbournと短縮可能、showは省略可能

実行例

# ip n
dev eth0 lladdr STALE
dev eth0 lladdr DELAY
TCP通信状態確認
構文

ssコマンドの-aオプションを指定すると全ての通信ソケットが表示され、-tオプションを指定するとtcp通信のコネクション状況を確認できます。-nオプションを指定すると、通信しているサービスの名前ではなくポート番号が表示されます。


ss -a -t (-n)
実行例

# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
ESTAB 0 52 xxx.xxx.xxx.xxx:22 xxx.xxx.xxx.xxx:59702
ESTAB 0 76 xxx.xxx.xxx.xxx:22 xxx.xxx.xxx.xxx:55329
TIME-WAIT 0 0 xxx.xxx.xxx.xxx:22 xxx.xxx.xxx.xxx:59080
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::22 :::*
UDP通信状態確認
構文

ssコマンドの-aオプションを指定すると全ての通信ソケットが表示され、-uオプションを指定するとudp通信のコネクション状況を確認できます。-nオプションを指定すると、通信しているサービスの名前ではなくポート番号が表示されます。


ss -a -u (-n)
実行例

# ss -a -n -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:123 *:*
UNCONN 0 0 *:5353 *:*
UNCONN 0 0 *:51496 *:*
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 :::123 :::*
UNCONN 0 0 ::1:323 :::*

おわりに

よく使いそうなものをメモがてら書き連ねました。ただ、ネットワークはデフォルトでNetworkManagerで管理されるようになっているのでそのやり方も確認しておく必要がありそうです。