wpa_supplicant
プログラムに問題があります。
私の問題は、wpa_cli
を必要とするwpa_supplicant
の使用についてです。 Sudo wpa_cli
を実行しているときのエラー:
Could not connect to wpa_supplicant
wpa_supplicant
を手動で開始すると、いくつかエラーが発生します。
Sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
rfkill: Cannot open RFKILL control device
ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument
wlan0: CTRL-EVENT-DISCONNECTED bssid=00:00:00:00:00:00 reason=0 ### NEW!!!
設定dhcp
## /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.9;
option domain-name-servers 192.168.1.1;
option domain-name "home";
option routers 192.168.2.1;
}
設定wpa_supplicant
## /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
# network={
# ssid="__SSID__"
# key_mgmt=WPA-PSK
# psk="__PASS__"
# id_str="home"
# }
設定hostapd
## /etc/hostapd/hostapd.conf
interface=wlan0
driver=rtl871xdrv
ieee80211n=1
ssid=__SSID__
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=__PASS__
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# EDIT
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ifconfig
/iwconfig
の結果
wlan0 Link encap:Ethernet HWaddr c0:4a:00:17:40:fd
inet adr:192.168.2.1 Bcast:192.168.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan0 IEEE 802.11bgn ESSID:"__SSID__" Nickname:"<WIFI@REALTEK>"
Mode:Master Frequency:2.412 GHz Access Point: C0:4A:00:17:40:FD
Sensitivity:0/0
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=100/100 Signal level=0 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
エラーなしでwpa_supplicant
を起動し、wpa_cli
を接続するにはどうすればよいですか?
最後に、書かれたエラーはシステムに影響を与えませんでした。
ぼくの /etc/network/interfaces
ファイルは次のようになります(wlan部分のみ):
iface wlan0 inet static
address 192.168.2.1
netmask 255.255.255.0
pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
この構成では、Sudo wpa_cli
コマンドはエラーなしで!
おかげでpeterphとにかく:)!
wpa_supplicant
が生成するエラーは、wpa_cli
接続の問題とは必ずしも関連がありません。ここでの問題は、wpa_cli
がwpa_supplicant
との接続を確立できず、制御ソケットを開けないことです。これにはいくつかの原因が考えられます。
wpa_cli
を実行しているユーザーは、指定されたソケットにアクセスできません。 wpa_supplicant.conf
内:
ctrl_interface=DIR=/var/run/wpa_supplicant
そのディレクトリ内のファイルが、wpa_cli
を実行しているユーザーからアクセス可能であることを確認する必要があります。つまり、ソケットがrw
であるだけでなく、上記のすべてのディレクトリが少なくともx
である必要があります。最後のディレクトリもr
でなければならず、wpa_clie
は使用可能なすべてのソケットをリストできます。
wpa_supplicant
とは異なり、wpa_cli
はDBus対応ではありません。 wpa_supplicant
がDBusのみを介してリッスンしていないことを確認してください。あなたの設定ファイルから判断すると、これはおそらくあなたのケースではありません。
wpa_supplicant
が実行されていません(以下のコメントのとおり)。これは、実際にwpa_supplicant
によって生成されたエラーメッセージと、それに接続できないエラーメッセージとの間に関連がある可能性があることを示します。冗長モードで実行することを確認するには(-d
または-dd
)およびデーモン化しない(これがデフォルトです--B
オプションを使用していないことを確認してください)。また、制御ソケットに注意することもできます。例:
watch -n 0.1 "ls -al /var/run/wpa_supplicant"
これらのコマンドのほとんどはroot特権で実行する必要があるため、デバッグする場合は、各コマンドの前にSudo
を付けるよりも、su - root
を永続的に使用する方が簡単な場合があります。