クライアント機としてのLinuxマシンには、無線LANネットワークインターフェースが必携となっています。その接続の基礎ともいえる無線LANアクセスポイントの検出/スキャンには、「Wireless tools for Linux」(wireless-tools)に収録されているコマンド「iwlist」を利用できます。
本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。今回はLinux端末から無線LANアクセスポイントを検出する際に使う「iwlist」コマンドを紹介します。
なお、本連載では、執筆時点の最新版「Red Hat Enterprise Linux」(RHEL)および「CentOS」環境で動作を確認しています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。
「iwlist」は、「Wireless tools for Linux」(wireless-tools)に収録されている、無線LANインターフェースをスキャン/情報収集するためのコマンドです。周囲で稼働しているアクセスポイントのESSID*を調べたいときや、現在接続しているアクセスポイントの接続レートを確認したいときなどに利用します。
*ESSID(Extended Service Set Identifier) IEEE 802.11無線LANにおけるネットワーク識別情報。SSIDの拡張版。
なお、本連載のターゲットにしている「CentOS 7」標準のリポジトリにはwireless-toolsが収録されていません。yumを使って手動インストールする場合は、wireless-toolsを配布している外部リポジトリを利用しましょう。yumを使ったパッケージリリースの手順は以下の通りです。ここではEPELのリポジトリを利用しています。
$ sudo yum -y install epel-release $ sudo yum install wireless-tools
通常、iwlistは「/sbin」ディレクトリにインストールされるため、一般ユーザーが実行する場合には「/sbin/iwlist」のようにルートからのフルパスを指定します。設定変更を伴わないので、実行時に管理者権限は求められず、rootになったりsudoコマンドを組み合わせたりする必要もありません。ただし、一般ユーザーで実行していると、エラー発生時にメッセージを出力せずに終了することもあるため、基本的には管理者権限で実行すべきでしょう。
Linuxでは無線LANインターフェースのデバイス名は「wlan0」「wlan1」のように「wlan」から始まることが一般的です。作業中のシステムにどのようなネットワークインターフェースが存在するかは、引数/オプションなしで「ifconfig」コマンドを実行するか「cat /proc/net/wireless」などとして、「/proc/net/wireless」の内容を出力すれば分かります。
なお、最近のLinuxディストリビューションでは、wireless-toolsに代わり「iw」パッケージが採用されています。RHEL 7/CentOS 7以降でもiwパッケージの利用が推奨されていますが、ドライバーによっては旧式のインターフェース(Wireless Extention)にしか対応せず、iwコマンドが動作しないこともあるため、その場合にはwireless-toolsに含まれるツールを利用することになります。
iwlistの主なパラメーターは次の通りです。
パラメーター | 意味 |
---|---|
scanning(scan) | 周囲のアクセスポイントとアドホック端末を表示する |
bitrate(rate、bit) | アクセスポイントで利用できる帯域を表示する |
channel(chan、freq) | 利用可能なチャンネルの情報を表示する |
encryption(enc、keys) | 暗号化キーのリストを表示する |
event | 指定した無線LANデバイスからスキャン可能な項目を表示する |
auth | 対応するWPA認証方式を表示する |
wpakeys(wpa) | 暗号化キー(WPAキー)を表示する |
周囲の無線LANアクセスポイントを調べる場合は、パラメーターに「scan」とだけ指定してiwlistコマンドを実行します。すると、検出された全てのアクセスポイントに対しスキャンを行い、それぞれのESSIDや対応するプロトコル、暗号化の有無やビットレートなどの情報が画面に出力されます。
検出される項目は複数あり、アクセスポイントが多数存在する場所では出力される情報が膨大となるため、出力結果をgrepなどのコマンドにパイプして必要な行を抽出することが現実的な使い方です。例えば、iwlistコマンドが出力した情報の中からgrepコマンドで「ESSID」行のみ抽出すれば、周囲に存在するアクセスポイントの一覧を取得(表示)することができます。
以下の実行例は、sudoで一時的に権限を変更をした上で、iwlistコマンドを使って「wlan0」をスキャンし、その結果をgrepコマンドに渡してESSIDの行のみを抽出して表示しています。
$ sudo /sbin/iwlist wlan0 scan | grep ESSID ESSID:"USS-Enterprise" ESSID:"aterm-53ee61-g" ESSID:"aterm-53ee61-gw" ESSID:"001D236023F0_G" ESSID:"aterm-5f4f12-g" ESSID:"aterm-5f4f12-gw" ESSID:"004D7391AF57-1" ESSID:"FON_FREE_EAP"
現在接続しているアクセスポイントの転送レート(ビットレート)は、「rate」パラメーターで調べることができます。なお、アクセスポイントがサポートする通信規格で有効なビットレートが幾つか例示されますが、信号強度などの事情により、実効転送レート(Current Bit Rate)とは一致しないことがあります。
以下の実行例では、iwlistコマンドでwlan0の転送レートを調べています。実行転送レートは最終行に出力されます。
$ sudo /sbin/iwlist wlan0 rate wlan0 4 available bit-rates : 1 Mb/s 2 Mb/s 5.5 Mb/s 11 Mb/s Current Bit Rate:72.2 Mb/s
パラメーターに「auth」を付けてiwlistコマンドを実行すると、現在認識されているネットワークデバイスがサポートする認証方式と暗号化方式を表示できます。
以下の実行例からは、認証方式としてWPAとWPA2、暗号化方式としてTKIPとCCMPがサポートされていることが分かります。
$ sudo /sbin/iwlist wlan0 auth wlan0 Authentication capabilities : WPA WPA2 CIPHER-TKIP CIPHER-CCMP
Copyright © ITmedia, Inc. All Rights Reserved.