ifconfigコマンドとipコマンドの違いと比較


Linux環境でipconfigやnetstatを含むパッケージnet-toolsが非推奨となってから久しい。
それでもifconfigを使うことになっているドキュメントが存在するからか、なかなかipコマンドへの移行が進んでいないように見える。

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   

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です