ifconfig vs ip:違いとネットワーク構成の比較


Linuxベースのディストリビューションには、コマンドラインから簡単かつ強力な方法でネットワークを構成する方法を提供する一連のコマンドがあります。これらのコマンドセットは、ほぼすべてのディストリビューションで長い間使用されてきたnet-toolsパッケージから入手でき、ifconfig、route、nameif、iwconfig、iptunnel、netstat、arpなどのコマンドが含まれています。

これらのコマンドは、初心者やエキスパートのLinuxユーザーが望む方法でネットワークを構成するのにほぼ十分ですが、過去数年間のLinuxカーネルの進歩と、このパッケージ化されたコマンドセットの保守が不可能なため、非推奨になり、より強力になっています。これらすべてのコマンドを置き換える機能を備えた代替手段が登場しています。

この代替手段もかなり前から存在しており、これらのコマンドのどれよりもはるかに強力です。残りのセクションでは、この代替案を強調し、net-toolsパッケージのコマンドの1つ(ifconfig)と比較します。

ip –ifconfigの代替

ifconfigは長い間存在しており、ネットワークインターフェイスの構成、表示、制御に多くの人が使用していますが、Linuxディストリビューションには、それよりもはるかに強力な新しい代替手段が存在します。この代替手段は、iproute2utilパッケージの ip コマンドです。

このコマンドは最初のサイトでは少し複雑に見えるかもしれませんが、ifconfigよりも機能がはるかに広いです。これは、ネットワークスタックの2つのレイヤー(レイヤー2(リンクレイヤー)、レイヤー3(IPレイヤー))で機能的に編成され、net-toolsパッケージからの上記のすべてのコマンドの作業を実行します。

ifconfigは主にシステムのインターフェースを表示または変更しますが、このコマンドは次のタスクを実行できます。

  1. Displaying or Modifying Interface properties.
  2. Adding, Removing ARP Cache entries along creating new Static ARP entry for a host.
  3. Displaying MAC addresses associated with all the interfaces.
  4. Displaying and modifying kernel routing tables.

それを以前の対応するifconfigと区別する主なハイライトの1つは、後者がネットワーク構成にioctlを使用することです。これは、カーネルとの対話のあまり評価されていない方法ですが、前者は、はるかに柔軟な後継である同じためのnetlinkソケットメカニズムを利用します。 rtnetlink(ネットワーク環境操作機能を追加)を使用したカーネルとユーザースペース間の相互通信のためのioctlの使用。

これで、ifconfigの機能と、それらがipコマンドによって効果的に置き換えられる方法を強調することができます。

ip vsifconfigコマンド

次のセクションでは、ifconfigコマンドの一部と、ipコマンドを使用したそれらの置き換えについて説明します。

ここで、ipとifconfigを区別する機能の1つは、ifconfigが有効なインターフェイスのみを表示するのに対し、ipは有効か無効かに関係なくすべてのインターフェイスを表示することです。

$ ifconfig
$ ip a

以下のコマンドは、IPアドレス192.168.80.174をインターフェース eth0 に割り当てます。

# ifconfig eth0 add 192.168.80.174

ifconfigコマンドを使用してインターフェイスを追加/削除するための構文:

# ifconfig eth0 add 192.168.80.174
# ifconfig eth0 del 192.168.80.174
# ip a add 192.168.80.174 dev eth0

ipコマンドを使用してインターフェイスを追加/削除するための構文:

# ip a add 192.168.80.174 dev eth0
# ip a del 192.168.80.174 dev eth0

以下のコマンドは、インターフェース eth0 のハードウェアアドレスをコマンドで指定された値に設定します。これは、ifconfigコマンドの出力で HWaddr 値を確認することで確認できます。

ここで、ifconfigコマンドを使用してMACアドレスを追加するための構文は次のとおりです。

# ifconfig eth0 hw ether 00:0c:29:33:4e:aa

ここで、ipコマンドを使用してMACアドレスを追加するための構文は次のとおりです。

# ip link set dev eth0 address 00:0c:29:33:4e:aa

IPアドレスまたはハードウェアアドレスの設定とは別に、インターフェイスに適用できるその他の構成には次のものがあります。

  1. MTU (Maximum Transfer Unit)
  2. Multicast flag
  3. Transmit Queue length
  4. Promiscuous mode
  5. Enable or disable all multicast mode

<中央>

# ifconfig eth0 mtu 2000
# ip link set dev eth0 mtu 2000

<中央>

# ifconfig eth0 multicast
# ip link set dev eth0 multicast on

<中央>

# ifconfig eth0 txqueuelen 1200
# ip link set dev eth0 txqueuelen 1200

<中央>

# ifconfig eth0 promisc
# ip link set dev eth0 promisc on

<中央>

# ifconfig eth0 allmulti
# ip link set dev eth0 allmulti on

以下のコマンドは、特定のネットワークインターフェイスを有効または無効にします。

以下のコマンドは、インターフェース eth0 を無効にし、デフォルトで稼働中のインターフェースのみを表示するifconfigの出力によって検証されます。

# ifconfig eth0 down

インターフェイスを再度有効にするには、downをupに置き換えます。

# ifconfig eth0 up

以下のipコマンドは、ifconfigが特定のインターフェースを無効にするための代替手段です。これは、 'ip a' コマンドの出力で確認できます。このコマンドは、デフォルトですべてのインターフェイスを上または下に表示しますが、説明とともにステータスを強調表示します。

# ip link set eth0 down

インターフェイスを再度有効にするには、downをupに置き換えます。

# ip link set eth0 up

以下のコマンドは、特定のネットワークインターフェイスでARPプロトコルを有効または無効にします。

このコマンドにより、ARPプロトコルをインターフェイスeth0で使用できるようになります。このオプションを無効にするには、arpを -arp に置き換えます。

# ifconfig eth0 arp

このコマンドは、インターフェイスeth0のARPを有効にするためのIP代替手段です。無効にするには、オンをオフに置き換えます。

# ip link set dev eth0 arp on

結論

したがって、ifconfigコマンドの機能と、ipコマンドを使用してそれらを実行する方法を強調しました。現在、Linuxディストリビューションは、ユーザーが都合に合わせて使用できるように、両方のコマンドをユーザーに提供しています。それで、あなたが使いたいと思うあなたに応じて、どのコマンドが便利ですか?コメントでこれに言及してください。

これらの2つのコマンドについて詳しく知りたい場合は、ifconfigとipコマンドの実際的な例をより詳細に示した以前の記事を参照してください。