wpa_supplicantを使用したコマンドラインからのLinux WiFi

この記事では、Xorg / X11ユーティリティーなしでwpa_supplicantを使用してWiFiを構成する方法を説明します。 これは、基本的なOSサービスが最小限のリモートアクセスハードウェアセットで適切に動作するために必要です。 プログラムはサービスとして実行され、設定は構成ファイルを編集することによって行われます。







簡単な方法で、この方法でオープンアクセスポイントに接続できます。







[root@home ~]$ wpa_cli > add_network > set_network 0 ssid "MYSSID" > set_network 0 key_mgmt NONE > enable_network 0
      
      





真剣かつ永続的にする必要がある場合は、内部にお願いします。







Wpa_supplicantの概要



wpa_supplicantとはですか?









Wpa_supplicantサポート



















wpa_supplicantはアクセスポイントとどのように通信しますか?









wpa_supplicantの主な大きな利点は、その一意性 、つまり、プログラムが1つのことを実行するが、それをうまく実行する場合のUnix Way原則への準拠です。 ある意味では、 wpa_supplicantは Gentoo Wayでもあります 。 最初は注意と忍耐が必要ですが、その後は完全に忘れることができます。 プログラムが構成され、実行されると、プログラムはイベントのストリームから完全にドロップアウトし、 ps -ef



から数行になります。 点滅せず、システムトレイで点滅せず、再接続、接続、切断されたワイヤレスネットワークについては通知しません。 自分で探すまで存在しません。







マイナス- 構成と構成の複雑さNetwork Manager



ウィンドウのtyrk-tyrk-tyrkと比較すると、多くの騒ぎがあります。AndroidデバイスからのWiFi接続は言うまでもありません。 Linuxラップトップを使用して旅行を計画している場合は、空港、ホテル、または職場の無料WiFiホットスポットにすばやく接続するために、より使いやすいフロントエンドワイヤレスセットアップを好むでしょう。 家庭用無線インターネットの場合、それだけです。







設置



グラフィックフロントエンドを選択しない場合、プログラムは依存関係をほとんどプルしません。 Gentoo Linuxでは、示されているようにフラグが設定されたインストールが機能します。







 (5:562)$ equery uses wpa_supplicant [ Legend : U - final flag setting for installation] [ : I - package is installed with flag ] [ Colors : set, unset ] * Found these USE flags for net-wireless/wpa_supplicant-2.6: UI - - ap : Add support for access point mode + + dbus : Enable dbus support for anything that needs it (gpsd, gnomemeeting, etc) - - eap-sim : Add support for EAP-SIM authentication algorithm - - fasteap : Add support for FAST-EAP authentication algorithm - - gnutls : Add support for net-libs/gnutls (TLS 1.0 and SSL 3.0 support) + + hs2-0 : Add support for 802.11u and Passpoint for HotSpot 2.0 - - p2p : Add support for Wi-Fi Direct mode - - qt4 : Add support for the Qt GUI/Application Toolkit version 4.x - - qt5 : Add support for the Qt 5 application and UI framework + + readline : Enable support for libreadline, a GNU line-editing library that almost everyone wants - - smartcard : Add support for smartcards + + ssl : Add support for Secure Socket Layer connections - - tdls : Add support for Tunneled Direct Link Setup (802.11z) - - uncommon-eap-types : Add support for GPSK, SAKE, GPSK_SHA256, IKEV2 and EKE - - wps : Add support for Wi-Fi Protected Setup
      
      





インストール。









設定ファイルなしの接続



一度だけ接続する必要がある場合は、構成ファイルを作成して設定のすべての詳細を調べる必要はありません。 コマンドラインからいくつかの指示を入力するだけです。







オープンネットワークの例が最初に示されました。 閉じたWPAネットワークの場合、クイック接続は次のようになります。







まず、wpa_supplicantプログラム自体とそれに付随するwpa_cli



を実行する必要があります







 [root@home ~]$ wpa_supplicant -Dnl80211 -iwlan0 -C/var/run -u & [root@home ~]$ wpa_cli -p/var/run
      
      





次に、 wpa_cli



インタラクティブインターフェイスからセットアップします。







 > add_network > set_network 0 ssid "name of AP" > set_network 0 key_mgmt WPA-PSK > set_network 0 pairwise TKIP > set_network 0 psk "key" > enable_network 0
      
      





閉じたWPA2ネットワークの場合:







 > add_network > set_network 0 ssid "name of AP" > set_network 0 key_mgmt WPA-PSK > set_network 0 pairwise CCMP > set_network 0 psk "key" > enable_network 0
      
      





最後に、DHCPデーモンを手動で起動する必要があります。







 [root@home ~]$ dhcpcd wlan0
      
      





アドホックネットワークに接続する



私はこれに遭遇したことがありませんが、あなたはすべての準備ができている必要があります。 オープンなアドホックに接続します。







 > add_network > set_network 0 ssid "adhoc-ssid" > set_network 0 mode 1 > set_network 0 frequency 2412 > set_network 0 key_mgmt NONE > enable_network 0
      
      





iw



同じです。







 > iw dev wlan0 del > iw phy phy0 interface add wlan0 type ibss > ifconfig wlan0 up > iw dev wlan0 scan > iw dev wlan0 ibss join AdHocNetworkName 2412
      
      





ホームネットワークのセットアップ



ここで楽しい部分はセットアップです。 このプロセスは、 Arch WikiDebian Wiki、 Gentoo Wikiについて文書化されていますが、もちろん詳細はありません。







プログラムは通常/etc/wpa_supplicant/



ディレクトリに配置され、タスクはwpa_supplicant.conf



構成ファイルを正しく構成し、 それをワイヤレスネットワークインターフェイスの起動にバインドすることです。







wpa_supplicant.conf



から始めましょう。 自宅からWPA / WPA2に接続している場合、 WPA-PSK ("WPA-Personal")



モードに対応するWiFi接続にパスワードを使用している可能性が高いです。 WEP暗号化オプションは、オープンネットワークよりも優れていないため、考慮しません。







ドキュメントから典型的な設定を取得します。 たとえばこれ。







 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel # # home network; allow all valid ciphers network={ ssid="home" scan_ssid=1 key_mgmt=WPA-PSK psk="very secret passphrase" }
      
      





最初の行が必要ですctrl_interface



がないとctrl_interface



プログラムは起動しません。 GROUP = wheelは、wpa_gui GUIで通常のユーザーの下から実行するために必要ですが、これは私たちの方法ではありません。 したがって、ルートGROUP=0



変更しGROUP=0









 ctrl_interface_group=0 ctrl_interface=/var/run/wpa_supplicant ap_scan=1
      
      





設定ファイルの各ネットワークには、 network {}



ブロックが必要です。 ソースコードをざっと調べてap_scan



と、 ap_scan



ファイルにap_scan



変数の適切なap_scan



見つかり、マニュアルとユーザーマニュアルの説明は非常に少ないことがわかりました。







 ap_scan=0 #    ap_scan=1 #wpa_supplicant   ,  - ap_scan=2 # 0,       SSID,   ndiswrapper
      
      





完全な説明

ap_scan-APスキャン/選択







デフォルトでは、wpa_supplicantはドライバーにAPスキャンの実行を要求し、スキャン結果を使用して適切なAPを選択します。 もう1つの方法は、ドライバーがAPのスキャンと選択を行い、ドライバーからのIEEE 802.11アソシエーション情報に基づいてEAPOLフレームを処理するためにwpa_supplicantを使用することです。







1:wpa_supplicantはスキャンとAP選択を開始します(デフォルト)。

0:ドライバーは、スキャン、APの選択、IEEE 802.11アソシエーションパラメーター(WPA IE生成など)を処理します。 IEEE 802.1Xモードを使用する場合、このモードは非WPAドライバーでも使用できます。

APとの関連付けを試みないでください(つまり、外部プログラムは関連付けを制御する必要があります)。 このモードは、有線イーサネットドライバーを使用する場合にも使用する必要があります。







2:0に似ていますが、セキュリティポリシーとSSID(BSSIDではありません)を使用してAPに関連付けます。 これは、たとえば、ndiswrapperおよびNDISドライバーで使用して、非表示のSSIDおよび最適化されたローミングでの操作を可能にします。

このモードでは、ドライバーが正常な関連付けを報告するまで、構成内のネットワークブロックが1つずつ試行されます。 各ネットワークブロックには明示的なセキュリティポリシーが必要です(つまり、1つだけ

key_mgmt、pairwise、group、proto変数のリストのオプション)。







注:ap_scan = 2は、nl80211ドライバーインターフェイス(現在のLinuxインターフェイス)では使用しないでください。 ap_scan = 1は、nl80211で動作する最適化された作業です。 非表示のSSIDを使用してネットワークを検索するには、nl80211でネットワークブロックのscan_ssid = 1を使用できます。







残りのオプションは、 手動構成ファイルから取得されます









設定ガイド

group:WPAの受け入れられたグループ(ブロードキャスト/マルチキャスト)暗号のリスト

CCMP = CBC-MACを使用したカウンターモードのAES [RFC 3610、IEEE 802.11i / D7.0]

TKIP = Temporal Key Integrity Protocol [IEEE 802.11i / D7.0]

WEP104 = 104ビットキーのWEP(Wired Equivalent Privacy)

WEP40 = 40ビットキーを使用したWEP(Wired Equivalent Privacy)[IEEE 802.11]

設定されていない場合、デフォルトはCCMP TKIP WEP104 WEP40になります。







pairwise:WPAの受け入れられたペアワイズ(ユニキャスト)暗号のリスト

CCMP = CBC-MACを使用したカウンターモードのAES [RFC 3610、IEEE 802.11i / D7.0]

TKIP = Temporal Key Integrity Protocol [IEEE 802.11i / D7.0]

NONE =グループキーのみを使用(非推奨。APがペアワイズキーをサポートしている場合は含まれません)







proto:受け入れられたプロトコルのリスト

WPA = WPA / IEEE 802.11i / D3.0

RSN = WPA2 / IEEE 802.11i(WPA2はRSNのエイリアスとしても使用できます)

設定されていない場合、デフォルトはWPA RSNになります







key_mgmt:受け入れられた認証済みキー管理プロトコルのリスト

WPA-PSK = WPA事前共有キー(これには「psk」フィールドが必要です)

WPA-EAP = EAP認証を使用するWPA(これは、IEEE 802.1X EAP認証に外部プログラム(Xsupplicantなど)を使用できます)

IEEE8021X = EAP認証および(オプションで)動的に生成されたWEPキーを使用するIEEE 802.1X

NONE = WPAは使用されません。 平文または静的WEPを使用できます

設定されていない場合、これはデフォルトでWPA-PSK WPA-EAPになります。







psk



パスワードハッシュを作成します。







 $ wpa_passphrase MYSSID passphrase
      
      





すべてがネットワーク構成を作成する準備ができています。 結果のファイルは次のようになります。







 ctrl_interface_group=0 ap_scan=1 ctrl_interface=/var/run/wpa_supplicant network={ proto=WPA2 pairwise=CCMP key_mgmt=WPA-PSK priority=5 ssid="MYSSID" bssid=44:b0:51:dc:ba:f8 psk=ce55977186ae1df2dffeb571acee8dacd92f49edddbdef53623132e3c24567ae }
      
      





bssid



group



proto



、およびpairwise



bssid



値は、ワイヤレスネットワークをスキャンすることで決定できます。







 [root@home ~]$ iwlist <wlan_interface> scan
      
      





Wireless Tools



スイートのiwlist



コマンドは廃止され、現在はiw



ます。







 [root@home ~]$ iw dev <wlan_interface> scan
      
      





オフィスの802.1Xを構成する



IEEE 802.1X規格は、WiFiネットワークに接続するためのより厳密なモデルを定義しています。 psk



パスワードの代わりに、サーバー証明書を提示する必要があります。









これは、ユーザーアカウント情報が必要な802.1X PEAP認証を使用して、WPAエンタープライズモードでネットワークに接続するように構成されたブロックのように見える場合があります。







 network = { ssid="Company WPA2 EAP" key_mgmt=WPA-EAP pairwise=TKIP group=TKIP eap=PEAP identity="username@domain" password="your_passphrase" ca_cert="/etc/cert/ca.pem" phase1="peapver=0" phase2="MSCHAPV2" }
      
      





これは、802.1X EAP-TLS認証を使用してWPA-Enterpriseモードでネットワークに接続するように構成されたブロックの例であり、サーバーとクライアントの証明書が必要です。







 network = { ssid="Company WPA2 TLS" key_mgmt=WPA-EAP pairwise=CCMP group=CCMP eap=TLS ca_cert="/etc/cert/ca.pem" private_key="/etc/cert/privkey.p12" private_key_passwd="your_passphrase PKCS#12" }
      
      





wpa_supplicantをネットワークカードにバインドする



Gentoo Linuxの場合 、2行を/etc/conf.d/net



追加し/etc/conf.d/net









 modules=( "wpa_supplicant" ) wpa_supplicant_wlan0="-Dnl80211"
      
      





サポートされている-D<driver>



ドライバーのリスト。 最新のチップとカーネルバージョンには、 nl80211



適しています。 古い鉄のwext



は離陸することができます。









wlan0



ネットワークカードはlo0



とリンクする必要があります。







 lrwxrwxrwx 1 root root 6  29 2014 /etc/init.d/net.wlan0 -> net.lo
      
      





また、 wpa_supplicantを自動実行に追加する必要があります







  [root@home ~]$ rc-update add wpa_supplicant default
      
      





Debianユーザーは、 /etc/network/interfaces



ファイルにエントリを追加します。







 auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
      
      





RedHatユーザーは/etc/sysconfig/wpa_supplicant



追加し/etc/sysconfig/wpa_supplicant









 INTERFACES="-iwlan0"
      
      





ファイル/etc/sysconfig/network-scripts/ifcfg-wlan0









 ESSID="home" NAME=wlan0 MODE=Managed KEY_MGMT=WPA-PSK TYPE=Wireless BOOTPROTO=dhcp DEFROUTE=yes ONBOOT=yes HWADDR=aa:bb:cc:dd:ee IPV6INIT=yes IPV6_AUTOCONF=yes
      
      





デバッグ



wpa_supplicantがアクセスポイントに正常に接続した後、 dmesg



接続セットアッププロトコルを確認できます。







 [243960.587] cfg80211: World regulatory domain updated: [243960.587] cfg80211: DFS Master region: unset [243960.587] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp), (dfs_cac_time) [243960.587] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A) [243960.587] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz, 92000 KHz AUTO), (2000 mBm), (N/A) [243960.587] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A) [243960.587] cfg80211: (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (2000 mBm), (N/A) [243960.587] cfg80211: (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (2000 mBm), (0 s) [243960.587] cfg80211: (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s) [243960.587] cfg80211: (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), [243960.587] cfg80211: (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), [243963.070] wlan0: authenticate with aa:bb:cc:dd:ee [243963.075] wlan0: send auth to aa:bb:cc:dd:ee (try 1/3) [243963.077] wlan0: authenticated [243963.084] wlan0: associate with aa:bb:cc:dd:ee (try 1/3) [243963.088] wlan0: RX AssocResp from aa:bb:cc:dd:ee (capab=0x411 status=0 aid=3) [243963.090] wlan0: associated
      
      





代わりにエラーが表示される場合:







 Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands wlan0: Failed to initialize driver interface
      
      





次に、 wext



代わりにnl80211



ドライバーを使用する必要があります。 そしてエラー付き:







 WEXT: Driver did not support SIOCSIWAUTH for AUTH_ALG, trying SIOCSIWENCODE
      
      





それどころか、 wext



wext



必要があります。

エラーを特定できない状況では、 -dd



してwpa_supllicantを直接実行します。







 [root@home ~]$ wpa_supplicant -Dnl80211 -iwlan0 -C/var/run/wpa_supplicant/ -c/etc/wpa_supplicant/wpa_supplicant.conf -dd
      
      





使用材料








  1. 4ウェイハンドシェイク

  2. ユニキャストとブロードキャスト




All Articles