※ serverfault(システム管理者用のQ&Aサイト)の質問とそれに対する回答やコメントをまとめた記事です。
古い話ですが、未だにifconfig
を使っているのと、海外のエンジニアたちの会話が少し面白かったのでまとめました。
#ifconfigってもう使っちゃいけないんですか?
##質問
Infinibandを搭載したサーバでifconfig
コマンドを実行したところ、以下のような警告が出力されました。
Ifconfig uses the ioctl access method to get the full address
information, which limits hardware addresses to 8 bytes.
Because Infiniband address has 20 bytes, only the first 8 bytes
are displayed correctly.
Ifconfig is obsolete! For replacement check ip.
和訳:ifconfig
はioctl access
メソッドを使ってアドレスを取得しているため、20バイトあるInfinibandアドレスの始めの8バイトしかとれません。ifconfig
は古いので、ip
を使ってください
これはつまりifconfig
を使うのはやめておけってことですか?いずれip
コマンドに完全に塗り変えられるのでしょうか?それとも、近々ifconfig
も更新されるんでしょうか?
######反応
- 早く切り替えた方がいい。俺は指を
ifconfig
からip
に慣らすのに何ヶ月もかかった。 -
ifconfig
が非推奨だって?俺は今まで洞穴で暮らしてたのか。 - 非推奨なのはLinuxだけだよ。FreeBSDではそんな警告見たことない。
- コマンド名が
ip
なのにリンク層の機能も持ってるって面白いな。
##回答1(ベストアンサー)
Thomas Pircherのウェブサイトを引用させてもらいます(cc-by-sa):
/bin/ip
コマンドはもう何年も前から存在しているにもかかわらず、皆未だに/sbin/ifconfig
を使いたがります。そのため、ifconfig
がすぐ使えなくなるということはないと思われます。ただしip
の方がはるかにパワフルで、いずれは置き換えられるでしょう。
ここでは新機能の紹介はせずにifconfig
とシンタックスを比べてみます。
各種インタフェースと設定の表示
ifconfig
ip addr show
ip link show
インタフェースの起動
ifconfig eth0 up
ip link set eth0 up
インタフェースの停止
ifconfig eth0 down
ip link set eth0 down
######反応
- どの例でも
ip
コマンドの方が長くて複雑じゃないか。それが皆ifconfig
を使いたがる理由なんじゃないかな。 -
ip
の方が機能が豊富なんだからコマンドが複雑になるのは当たり前じゃないか。それにip addr show
はip a
に省略できる。 - 一つ皆に覚えておいてほしいのは、この世の何もかもがLinuxではないってことだ。SolarisもAIXも、HP-UXやBSD、SCOだって
ifconfig
を使ってる。Linux管理者じゃなくてUnix管理者になりたいのなら、ifconfig
は知っておくべきだ。
##回答2
その通り。ipconfig
はLinuxではiproute2(ip
コマンドの正式名)に取って代わられるため、非推奨となっています。
同様に、arp
、route
、netstat
も非推奨です。
ただし、iproute2はLinux固有のコマンドで、他のUnixはifconfig
を使うので注意が必要です。
Why ifconfig sucks [英語]
↑ここによると、ifconfig
は10年以上メンテナンスされていません。
######反応
-
ifconfig
はもともとBSDが開発したもので、Linuxは基本的にBSDのIPスタックを使っていたからな(余談だがこれはWindowsも同じ。ipconfig
とifconfig
が似てるのはこの歴史があるためだ)。Linuxカーネル2.4くらいからBSDのスタックから離れていったけど、これが2001年の始めだったから、Linuxのifconfig
がそれ以来メンテナンスされていないのはしょうがない。 - 10年!?Githubで「ifconfigを守れ」プロジェクトを立ち上げるべきだ。
#所感
3年前の記事ですが、やっぱりまだifconfig
派が多いようですね。
自分も基本的にMacなのでip
に乗り換えるのは難しそうですが、brew
で入れられるらしいし、試してみてもいいかもしれません。
やっぱり世界のエンジニア達の会話はなんだかんだ勉強になります。
#参考 [英語]
serverfault - Should I quit using Ifconfig?
ip command in Mac OS X terminal