はじめに
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
※address
はa
と短縮可能、show
は省略可能
ip address show dev デバイス名
※address
はa
と短縮可能
実行例
以下が実行例です。
% 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/etherbrd ff:ff:ff:ff:ff:ff
inetbrd <ブロードキャストアドレス> scope global eth0
valid_lft forever preferred_lft forever
inet6scope link
valid_lft forever preferred_lft forever
3: eth1:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/etherbrd ff:ff:ff:ff:ff:ff
4: eth2:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/etherbrd 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
inetbrd <ブロードキャストアドレス> scope global eth0
valid_lft forever preferred_lft forever
inet6scope link
valid_lft forever preferred_lft forever
ネットワークデバイスのリンクのダウン/アップ、状態確認
ip
コマンドのlink
オブジェクトを用いてネットワークデバイスのリンク状態を確認できます。
構文
- ネットワークデバイスをリンクダウン
ip link set デバイス名 down
※link
はl
と短縮可能
- ネットワークデバイスをリンクアップ
ip link set デバイス名 up
※link
はl
と短縮可能
- 全てのネットワークデバイスのリンク確認
ip link show
※link
はl
と短縮可能、show
は省略可能
- 特定のネットワークデバイスのリンク確認
ip link show dev デバイス名
※link
はl
と短縮可能
実行例
以下が実行例です。
- ネットワークデバイスのリンクダウン
# ip l set eth1 down
- ネットワークデバイスのリンク状態確認
# ip l show eth1
3: eth1:mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
link/etherbrd 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/etherbrd ff:ff:ff:ff:ff:ff
パケットの処理情報確認
ip
コマンドの-s
オプションでデバイスのより詳細な情報を表示できます。link
オブジェクトと組み合わせることで、パケットの処理状態を表示できます。
構文
- 全てのネットワークデバイスのパケットの処理情報を表示
ip -s link show
※link
はl
と短縮可能、show
は省略可能
- 全てのネットワークデバイスのパケットの処理情報を表示
ip -s link show dev デバイス名
※link
はl
と短縮可能
実行例
# 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/etherbrd 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/etherbrd 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/etherbrd 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/etherbrd 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
※route
はr
と短縮可能、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
※neighbour
はn
と短縮可能、show
は省略可能
実行例
# ip ndev 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
で管理されるようになっているのでそのやり方も確認しておく必要がありそうです。