Linux環境でipconfigやnetstatを含むパッケージnet-toolsが非推奨となってから久しい。
それでもifconfigを使うことになっているドキュメントが存在するからか、なかなかipコマンドへの移行が進んでいないように見える。
Contents
ifconfigとipコマンドの違い
Linuxベースのディストリビューションではネットワークの管理コマンドをnet-toolsパッケージが提供していた。
このパッケージは古くて長くメンテナンスされていなかったので現在では非推奨となっている。
その代替として開発されたのがipやssといったプログラムである。
ifconfigによって行われていたネットワークの設定はipで置き換えることができる。
そしてipのほうがifconfigよりも強力であるとされている。
※あくまでLinuxベースの環境にいえることで、FreeBSDやMac OSのifconfigは非推奨ではないし現在も最も一般的なネットワーク設定ツールである。
Linux環境で非推奨のコマンド
Linux環境でifconfigコマンドを発行してコマンドが見つからないと言われたら、net-toolsパッケージが無いということだ。
net-toolsパッケージをインストールすれば使えるようになるが、それよりは推奨プログラムを使ったほうが良い。
ifconfigだけでなく、よく使うroute, netstat, arp等もnet-toolsパッケージに含まれているプログラムなので、非推奨である。
推奨プログラムに置き換える
非推奨プログラムをipなどに置き換える時の対応表。
非推奨 | 推奨 |
---|---|
arp | ip n (ip neigh) |
ifconfip | ip a (ip addr) |
ipmaddr | ip m(ip maddr) |
iptunnel | ip tunnel |
route | ip r (ip route) |
nameif | ifrename |
mil-tool | ethtool |
netstatを代替する際はオプションによってプログラムを使い分けるが、基本的にはssコマンドを使う
非推奨 | 推奨 |
---|---|
netstat -a (netstat –all) | ss -a (ss –all) |
netstat -A [family] | ss -f [family] (ss –family=[family]) |
netstat -C | ip route list cache |
netstat -e (netstat –extend) | ss -e (ss –extended) |
netstat -l (netstat –listening) | ss -l (ss –listening) |
netstat -r (netstat –route) | p route, ip route show all |
netstat -t (netstat –tcp) | ss -t (netstat –tcp) |
新旧コマンドの比較
新しいコマンドのほうが短くて使いやすい。
ただし、ipはarpやifconfigをそっくりそのまま置き換えたものでは無いので、出力にも違いがある。
ifconfigとip a
$ ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:27:a6:3b
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe27:a63b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1233 errors:0 dropped:0 overruns:0 frame:0
TX packets:940 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:117576 (117.5 KB) TX bytes:99056 (99.0 KB)
eth1 Link encap:Ethernet HWaddr 08:00:27:d0:65:1f
inet addr:192.168.33.10 Bcast:192.168.33.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fed0:651f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:1914 (1.9 KB)
ip a
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:27:a6:3b brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe27:a63b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:d0:65:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fed0:651f/64 scope link
valid_lft forever preferred_lft forever
arpとip n
$ arp
Address HWtype HWaddress Flags Mask Iface
10.0.2.2 ether 52:54:00:12:35:02 C eth0
10.0.2.3 ether 52:54:00:12:35:03 C eth0
$ ip n
10.0.2.2 dev eth0 lladdr 52:54:00:12:35:02 DELAY
10.0.2.3 dev eth0 lladdr 52:54:00:12:35:03 REACHABLE
netstatとss
$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 wp:ssh 10.0.2.2:62172 ESTABLISHED
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:62172