web-dev-qa-db-ja.com

「ifconfig」コマンドと「ip」コマンドの違い

私は 'ifconfig'コマンドに関するいくつかの記事/チュートリアルを読みました、それらのほとんどは共通のステートメントを含んでいました-

「ifconfigはipコマンドで非推奨になりました」

そしてipコマンドを学ぶことを提案しました。しかし、「ip」コマンドが「ifconfig」よりも強力であることを説明したものはいません。

両方の違いは何ですか?

20
Mandar Shinde

ifconfignet-toolsからのもので、長い間Linuxネットワークスタックに完全に追いつくことができませんでした。また、ネットワーク構成にioctlを引き続き使用します。これは、カーネルと対話するための醜く強力でない方法です。

Linuxネットワーキングコードの多くの変更、および多くの新機能には、net-tools:マルチパスルーティング、ポリシールーティング(RPDBを参照)を使用してアクセスできません。 routeを使用すると、同じメトリックを使用して、同じ宛先に複数のルートを追加するなどの愚かなことができます。

さらに:

  • ifconfigは、一部のデバイスの適切なハードウェアアドレスを報告しません。
  • ipipsitgrel2tpなどのカーネル内静的トンネルを構成することはできません。
  • tunまたはtapデバイスを作成することはできません。
  • 特定のインターフェイスに複数のアドレスを追加する方法も、セマンティクスが不十分です。
  • また、net-toolsを使用してLinuxトラフィック制御システムを構成することもできません。

ifconfig sucks も参照してください。

[〜#〜] edit [〜#〜]net-toolsの開発に関するアサーションを削除しました。これで、これを取得した場所を忘れてしまいました役職。 net-tools 'はiproute2がリリースされてから取り組んできましたが、それは主にバグ修正と、国際化などのマイナーな機能強化と機能です。

21
pilona

ifconfigは、ネットワークインターフェイスに関する情報を表示し、一部の設定を変更するための従来のコマンドです。特に、インターフェイスをアップまたはダウンさせる可能性があります。ほとんどのUNIXバリアントに存在します。

Linuxでは、ifconfigコマンドは長い間進化していませんでした。それはそれが何をするかについてはまだ完全に問題ありません。 ifconfigを何かに使用している場合、停止する理由はありません。

Linuxは iproute2 ツールスイートからipコマンドも提供します。 ipコマンドは、ifconfigroutearpなど、いくつかの従来のコマンドを組み合わせたものです。 ipifconfigよりも多くのことができます。一方、ipは、特に組み込みシステムでは常に存在するわけではありません(Linux以外のUNIXバリアントでは決して存在しません)。

ifconfigの出力をパースするのはちょっと悪い。 ipの出力をパースするのはちょっと悪い。勝者はいません。

ピロナの答えに少しだけ追加します。 2005年頃、ネットワークスタックを制御する新しいメカニズムが導入されました- netlink sockets

ネットワークインターフェイスを構成するにはiproute2はその全二重netlinkソケットメカニズムを利用しますが、ifconfigioctlシステムコールに依存します。 netlinkの背後にある動機rtnetlinkの使用法 に関する2つの主要な論文を以下に示します。

5
Boris Burkov