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

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

「ifconfig」コマンドに関する記事/チュートリアルを読みましたが、ほとんどの一般的な説明が含まれています。

「ipコマンドにはifconfigはお勧めできません」

そして、ipコマンドを学ぶことをお勧めします。しかし、それらのどれも、「ip」コマンドが「ifconfig」よりも強力な理由を説明していません。

それらの違いは何ですか?

答え1

ifconfig私はnet-tools長い間Linuxネットワークスタックに正しく従うことができませんでした。また、ioctlカーネルと対話するための醜く、あまり強力な方法であるネットワーク構成にも使用されています。

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

また:

  • ifconfig一部のデバイスの正しいハードウェアアドレスは報告されません。
  • ipipなどのカーネル内の静的トンネルは設定できませんsitgrel2tp
  • tunまたはデバイスを作成できませんtap
  • 与えられたインターフェイスに複数のアドレスを追加することも意味がありません。
  • net-toolsまた、Linuxフロー制御システムの設定には使用できません。

また、見ることができますifconfig残念

編集するnet-tools開発中断の主張を削除し、今頃この記事の出所を忘れてしまいました。net-tools主にバグ修正、国際化などの小さな改善と機能を提供することはありましたが、リリース以降の作業は続行されました。iproute2

答え2

ifconfigネットワークインターフェイスに関する情報を表示し、特定の設定を変更する従来のコマンドです。特に、インターフェースを開閉することができます。ほとんどのUnixバリアントに存在します。

Linuxでは、このifconfigコマンドは長い間進歩していません。それでもうまくいきます。何かを使っているとifconfig止まる理由はありません。

Linuxは次のサービスも提供しますipIP ルート 2ツールキット。このコマンドは、およびをip含むいくつかの基本コマンドと他のコマンドを組み合わせます。はるかに多くのことができます。一方、特に組み込みシステムでは常に存在するわけではありません(Linux以外のUNIXバリアントでは絶対に存在しません)。ifconfigroutearpipifconfigip

構文解析の出力がifconfig少し悪いです。構文解析の出力がip少し悪いです。そこには勝者はいません。

答え3

フィロナの答えに何かを追加するだけです。 2005年頃にネットワークスタックを制御する新しいメカニズムが導入されました。ネットワークリンクソケット

iproute2全二重ネットリンクソケットメカニズムを利用し、システムコールifconfigに依存するようにネットワークインターフェイスを設定します。ioctlここには2つの主要な論文があります。Netlinkの動機そしてrtnetlinkの使用

答え4

私の経験に基づいて結果を見つけました。設定されている場合思ったより消化しやすいIP-*司令部、IMOは視覚的に少し残念です。一般的な使用法では、インターフェイス、ステータス、IPアドレスなど、提供されているもののサブセットのみが必要です。設定されている場合読みやすくなります。

設定されている場合:

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
    inet 127.0.0.1  netmask 255.0.0.0
    loop  txqueuelen 1000  (Local Loopback)
    RX packets 297454  bytes 14872700 (14.1 MiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 297454  bytes 14872700 (14.1 MiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 10.0.0.20  netmask 255.255.255.0  broadcast 10.0.0.255
    ether aa:aa:aa:aa:aa:aa  txqueuelen 1000  (Ethernet)
    aa:aa:aa:aa:aa:aabytes 596277 (582.3 KiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 9083  bytes 738309 (721.0 KiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

IPアドレスと比較:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
   valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.10/24 brd 10.0.0.255 scope global eth0
   valid_lft forever preferred_lft forever
3: eth1 <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
inet 10.0.0.20/24 brd 10.0.0.255 scope global eth1
   valid_lft forever preferred_lft forever

関連情報