ifconfig(インターフェースコンフィグ)は、
Unix系オペレーティングシステム(OS)において、ネットワークインターフェースの設定を行うためのシステム管理コマンドです。このコマンドは、主にキャラクタユーザインターフェース(CUI)で利用され、多くのOSでは起動時に実行されるスクリプト内でも使用されます。
ifconfigの主な機能
ifconfigは、TCP/IPネットワークインターフェースの様々なパラメータを設定、制御、参照する機能を提供します。具体的には、以下の様な操作が可能です。
IPアドレスと
サブネットマスクの設定
ネットワークインターフェースの有効化および無効化
インターフェースのメディアアクセス制御(MAC)アドレスの変更
ネットワークインターフェースの状態の表示
ifconfigの最初の実装は、4.2BSDにおけるBSD TCP/IPスイートの一部として登場しました。このコマンドは、ネットワーク管理において基本的な役割を果たし、システム管理者がネットワーク設定を理解し、調整するために不可欠なツールでした。
ifconfigの使用例
一般的な用途として、ネットワークインターフェースの
IPアドレスや
サブネットマスクを設定したり、インターフェースを有効・無効にしたりする際に使用されます。システム起動時には、多くの
Unix系OSが
シェルスクリプトからifconfigを呼び出して、ネットワークインターフェースの初期化を行います。また、システム管理者は、ネットワークインターフェースのパラメータを表示したり分析したりするために、対話型ツールとしてifconfigを使用します。
以下は、
OpenBSDにおけるifconfigの出力例です。この例では、
Linuxベースのホスト(インターフェース名: eth0)と
無線LANインターフェース(ural0)がそれぞれ一つずつ実行中の状態を示しています。
eth0 Link encap:Ethernet HWaddr 00:0F:20:CF:8B:42
inet addr:217.149.127.10 Bcast:217.149.127.63 Mask:255.255.255.192
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2472694671 errors:1 dropped:0 overruns:0 frame:0
TX packets:44641779 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1761467179 (1679.7 Mb) TX bytes:2870928587 (2737.9 Mb)
Interrupt:28
ural0: flags=8843
mtu 1500
lladdr 00:0d:0b:ed:84:fb
media: IEEE802.11 DS2 mode 11b hostap (autoselect mode 11b hostap)
status: active
ieee80211: nwid ARK chan 11 bssid 00:0d:0b:ed:84:fb 100dBm
inet 172.30.50.1 netmask 0xffffff00 broadcast 172.30.50.255
inet6 fe80::20d:bff:feed:84fb%ural0 prefixlen 64 scopeid 0xa
`HWaddr`: ハードウェアアドレス(MACアドレス)を表します。
`txqueuelen`: ネットワークスケジューラによって管理されるバッファのサイズを示します。
ifconfigは、インターフェースのMACアドレスを変更するためにも使用できます。以下の例では、`wlan0`という名前のインターフェースのMACアドレスを変更しています。
bash
ifconfig wlan0 down
ifconfig wlan0 hw ether 00:11:22:33:44:55
ifconfig wlan0 up
まずインターフェースを無効化し(`down`)、次にMACアドレスを新しい値に設定し、最後にインターフェースを再び有効化します(`up`)。
ifconfigの進化と現状
FreeBSD、NetBSD、OpenBSDなどのBSD系OSでは、ifconfigの開発が継続されており、無線LANインターフェースやVLANトランク接続の設定、TCPセグメンテーションオフロード(TSO)などのハードウェア機能の制御、ブリッジやトンネルの設定など、より広範な機能に対応しています。Solarisでは、かつて全てのネットワークインターフェースの設定にifconfigを使用していましたが、Solaris 10以降では、データリンク層の設定にdladmを導入し、ifconfigはIP設定に限定されています。
古いLinuxディストリビューションでは、ifconfigはrouteコマンドと組み合わせて、ネットワーク接続やルーティング設定に使用されていました。Linux版のifconfigはnet-toolsパッケージに含まれていましたが、このパッケージの最新版は2001年にリリースされています。
現在、多くのLinuxディストリビューションでは、ifconfigとrouteの利用は非推奨となり、代わりにiproute2スイートが推奨されています。iproute2は、Linux 2.2以降で利用可能で、ifconfig, route, arp, netstatの各コマンドの機能を統合し、マルチキャスト設定やトンネル、トラフィック制御などの高度な機能も提供します。
関連ツール
Windows: Windows 95からWindows Meまでは、`winipcfg`でIP情報をグラフィカルに表示していました。Windows NTカーネルベースのOSでは、`ipconfig`コマンドがifconfigに相当する機能を提供し、DHCPクライアントの制御も行います。
macOS: macOSでは、`ifconfig`はIPConfigurationエージェントのラッパーとして動作し、コマンドラインからBootPやDHCPクライアントを制御できます。ただし、ネットワーク設定には、`/usr/sbin/ipconfig`や`/usr/sbin/networksetup`の使用が推奨されています。
iwconfig: LinuxのWireless toolsの一部である`iwconfig`は、無線ネットワークインターフェースの管理に特化しており、ifconfigでは設定できないSSIDやWEPキーなどの設定を可能にします。また、`iwlist`や`iwspy`といった関連ツールも存在します。
その他のツール: イーサネットアダプタを制御するツールには、Linuxの`ethtool`、`mii-tool`、`mii-diag`、Solarisの`show-link`などがあります。
このように、ifconfigはネットワーク管理における基礎的なコマンドとして長年利用されてきましたが、OSやディストリビューションの進化とともに、他のツールにその役割が移行しつつあります。