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

これらのコマンドは、どのような初心者またはエキスパートのLinuxユーザーも望むネットワークの構成に十分ですが、過去数年間のLinuxカーネルの進化とこのパッケージ化されたコマンドセットのメンテナンス不可能性により、これらのコマンドは非推奨となり、これらのすべてのコマンドを置き換える能力を持つより強力な代替手段が登場しています。
この代替手段もかなりの期間利用可能であり、これらのコマンドのどれよりもはるかに強力です。残りのセクションでは、この代替手段を強調し、net-toolsパッケージの1つのコマンドであるifconfigと比較します。
ip – ifconfigの代替手段
ifconfigは長い間存在しており、多くの人がネットワークインターフェイスを構成、表示、制御するために使用していますが、Linuxディストリビューションには、それよりもはるかに強力な新しい代替手段が存在します。この代替手段は、iproute2utilパッケージからのip
コマンドです。
このコマンドは最初は少し複雑に見えるかもしれませんが、ifconfigよりも機能が広範囲です。これは2つのネットワーキングスタックのレイヤーで機能的に整理されています。すなわち、Layer 2(リンクレイヤー)、Layer 3(IPレイヤー)であり、net-toolsパッケージからの上記のコマンドのすべての作業を行います。
ifconfigは主にシステムのインターフェースを表示または変更しますが、このコマンドは以下のタスクを実行できます:
- インターフェースのプロパティを表示または変更する。
- ARPキャッシュエントリを追加、削除し、ホストの新しい静的ARPエントリを作成する。
- すべてのインターフェースに関連付けられたMACアドレスを表示する。
- カーネルのルーティングテーブルを表示および変更する。
古代の相手であるifconfigとの主なハイライトの1つは、後者がネットワーク構成のためにioctlを使用しているのに対し、前者は同じことを行うためにnetlinkソケットメカニズムを利用しており、これはioctlの後継であり、rtnetlinkを使用してカーネルとユーザースペースの間の相互通信に柔軟性を持たせたものです(これによりネットワーキング環境の操作機能が追加されます)。
ここで、ifconfigの機能と、それがどのようにipコマンドに効果的に置き換えられているかを強調し始めることができます。
ip vs ifconfig コマンド
次のセクションでは、いくつかのifconfigコマンドと、それらをipコマンドを使用して置き換える方法について説明します。
1. Linuxですべてのネットワークインターフェースを表示する
ここで、ipとifconfigの間の1つの特徴は、ifconfigは有効なインターフェースのみを表示するのに対し、ipは有効または無効に関わらずすべてのインターフェースを表示します。
ifconfigコマンド
$ ifconfig

ipコマンド
$ ip a

2. LinuxでIPアドレスを追加または削除する
以下のコマンドは、IPアドレス192.168.80.174をインターフェースeth0
に割り当てます。
ifconfig – IPアドレスの追加/削除
# ifconfig eth0 add 192.168.80.174
ifconfigコマンドを使用してインターフェースを追加/削除する構文:
# ifconfig eth0 add 192.168.80.174 # ifconfig eth0 del 192.168.80.174
ip – IPアドレスの追加/削除
# 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
4. ネットワークインターフェースにMACハードウェアアドレスを追加する
以下のコマンドは、インターフェースeth0
のハードウェアアドレスをコマンドで指定された値に設定します。これは、ifconfigコマンドの出力でHWaddr
値を確認することで検証できます。
ifconfig – MACアドレスの追加
ここでは、ifconfigコマンドを使用してMACアドレスを追加する構文:
# ifconfig eth0 hw ether 00:0c:29:33:4e:aa
ip – MACアドレスの追加
ここでは、ipコマンドを使用してMACアドレスを追加する構文:
# ip link set dev eth0 address 00:0c:29:33:4e:aa
4. ネットワークインターフェースのその他の設定を行う
IPアドレスやハードウェアアドレスの設定に加えて、インターフェースに適用できるその他の設定には、次のものがあります:
- MTU(最大転送ユニット)
- マルチキャストフラグ
- 送信キュー長
- ポピュラス・モード
- マルチキャスト・モードの有効化または無効化
ifconfig – その他のネットワーク設定
ip – その他のネットワーク設定
a. Set MTU value to 2000.
# ifconfig eth0 mtu 2000
# ip link set dev eth0 mtu 2000
b. Enable or Disable multicast flag.
# ifconfig eth0 multicast
# ip link set dev eth0 multicast on
c. Setting the transmit queue length.
# ifconfig eth0 txqueuelen 1200
# ip link set dev eth0 txqueuelen 1200
d. Enabling or disabling promiscuous mode.
# ifconfig eth0 promisc
# ip link set dev eth0 promisc on
e. Enable or disable all multicast mode.
# ifconfig eth0 allmulti
# ip link set dev eth0 allmulti on
5. ネットワークインターフェースの有効化または無効化
以下のコマンドは、特定のネットワークインターフェースを有効化または無効化します。
ifconfig – ネットワークインターフェースの無効化/有効化
以下のコマンドは、インターフェースeth0
を無効化し、デフォルトでアップしているインターフェースのみを表示するifconfigの出力で確認できます。
# ifconfig eth0 down
インターフェースを再有効化するには、downをupに置き換えます。
# ifconfig eth0 up
ip – ネットワークインターフェースの無効化/有効化
以下のipコマンドは、特定のインターフェースを無効化するためのifconfigの代替手段です。これは、デフォルトですべてのインターフェースを表示し、アップまたはダウンの状態と説明とともに強調する'ip a'
コマンドの出力で確認できます。
# ip link set eth0 down
インターフェースを再有効化するには、downをupに置き換えます。
# ip link set eth0 up
6. ARPプロトコルの使用の有効化または無効化
以下のコマンドは、特定のネットワークインターフェースでARPプロトコルを有効化または無効化します。
ifconfig – ARPプロトコルの有効化/無効化
このコマンドは、インターフェースeth0でARPプロトコルを使用するように有効化します。このオプションを無効化するには、arpを-arp
に置き換えます。
# ifconfig eth0 arp
ip – ARPプロトコルの有効化/無効化
このコマンドは、インターフェースeth0のARPを有効にするためのipの代替手段です。無効にするには、onをoffに置き換えるだけです。
# ip link set dev eth0 arp on
結論
したがって、ifconfigコマンドの特徴と、ipコマンドを使用してそれらを行う方法を強調しました。現在、Linuxディストリビューションは、ユーザーが自分の便利さに応じて使用できるように、両方のコマンドを提供しています。それでは、どちらのコマンドが便利だと思いますか?どちらを使いたいですか?コメントでそれを述べてください。
これらの2つのコマンドについてさらに学びたい場合は、以前の記事を読むことを検討してください。そこでは、ifconfigおよびipコマンドの実践例がより詳細に示されています。
Source:
https://www.tecmint.com/ifconfig-vs-ip-command-comparing-network-configuration/