私は 'ifconfig'コマンドに関するいくつかの記事/チュートリアルを読みました、それらのほとんどは共通のステートメントを含んでいました-
「ifconfigはipコマンドで非推奨になりました」
そしてipコマンドを学ぶことを提案しました。しかし、「ip」コマンドが「ifconfig」よりも強力であることを説明したものはいません。
両方の違いは何ですか?
ifconfig
はnet-tools
からのもので、長い間Linuxネットワークスタックに完全に追いつくことができませんでした。また、ネットワーク構成にioctl
を引き続き使用します。これは、カーネルと対話するための醜く強力でない方法です。
Linuxネットワーキングコードの多くの変更、および多くの新機能には、net-tools
:マルチパスルーティング、ポリシールーティング(RPDBを参照)を使用してアクセスできません。 route
を使用すると、同じメトリックを使用して、同じ宛先に複数のルートを追加するなどの愚かなことができます。
さらに:
ifconfig
は、一部のデバイスの適切なハードウェアアドレスを報告しません。ipip
、sit
、gre
、l2tp
などのカーネル内静的トンネルを構成することはできません。tun
またはtap
デバイスを作成することはできません。net-tools
を使用してLinuxトラフィック制御システムを構成することもできません。ifconfig
sucks も参照してください。
[〜#〜] edit [〜#〜]:net-tools
の開発に関するアサーションを削除しました。これで、これを取得した場所を忘れてしまいました役職。 net-tools
'はiproute2
がリリースされてから取り組んできましたが、それは主にバグ修正と、国際化などのマイナーな機能強化と機能です。
ifconfig
は、ネットワークインターフェイスに関する情報を表示し、一部の設定を変更するための従来のコマンドです。特に、インターフェイスをアップまたはダウンさせる可能性があります。ほとんどのUNIXバリアントに存在します。
Linuxでは、ifconfig
コマンドは長い間進化していませんでした。それはそれが何をするかについてはまだ完全に問題ありません。 ifconfig
を何かに使用している場合、停止する理由はありません。
Linuxは iproute2 ツールスイートからip
コマンドも提供します。 ip
コマンドは、ifconfig
、route
、arp
など、いくつかの従来のコマンドを組み合わせたものです。 ip
はifconfig
よりも多くのことができます。一方、ip
は、特に組み込みシステムでは常に存在するわけではありません(Linux以外のUNIXバリアントでは決して存在しません)。
ifconfig
の出力をパースするのはちょっと悪い。 ip
の出力をパースするのはちょっと悪い。勝者はいません。
ピロナの答えに少しだけ追加します。 2005年頃、ネットワークスタックを制御する新しいメカニズムが導入されました- netlink sockets 。
ネットワークインターフェイスを構成するにはiproute2
はその全二重netlinkソケットメカニズムを利用しますが、ifconfig
はioctl
システムコールに依存します。 netlinkの背後にある動機 と rtnetlinkの使用法 に関する2つの主要な論文を以下に示します。