hostapd
をサービスとして開始するのに問題があります。起動しようとすると失敗します。
$ Sudo service hostapd start
[FAIL] Starting advanced IEEE 802.11 management: hostapd failed!
私が理解していることから、これは/etc/default/hostapd
の設定を使用しています:
$ cat /etc/default/hostapd
# Defaults for hostapd initscript
#
# See /usr/share/doc/hostapd/README.Debian for information about alternative
# methods of managing hostapd.
#
# Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration
# file and hostapd will be started during system boot. An example configuration
# file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz
#
#DAEMON_CONF=""
DAEMON_CONF=”/etc/hostapd/hostapd.conf”
# Additional daemon options to be appended to hostapd command:-
# -d show more debug messages (-dd for even more)
# -K include key data in debug messages
# -t include timestamps in some debug messages
#
# Note that -B (daemon mode) and -P (pidfile) options are automatically
# configured by the init.d script and must not be added to DAEMON_OPTS.
#
DAEMON_OPTS="-d"
私のデーモン構成ファイルは次のとおりです。
$ cat /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=rtl871xdrv
country_code=USA
ctrl_interface=wlan0
ctrl_interface_group=0
ssid=KITT
hw_mode=g
channel=1
wpa=3
wpa_passphrase=georgeisyourfriend
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
beacon_int=100
auth_algs=3
macaddr_acl=0
wmm_enabled=1
eap_reauth_period=360000000
サービスの開始に失敗したにもかかわらず、エラーなしで自分で直接開始できます。
$ Sudo hostapd -d /etc/hostapd/hostapd.conf
random: Trying to read entropy from /dev/random
Configuration file: /etc/hostapd/hostapd.conf
ctrl_interface_group=0
drv->ifindex=3
Configure bridge br0 for EAPOL traffic.
BSS count 1, BSSID mask 00:00:00:00:00:00 (0 bits)
Completing interface initialization
Mode: IEEE 802.11g Channel: 1 Frequency: 2412 MHz
RATE[0] rate=10 flags=0x1
RATE[1] rate=20 flags=0x1
RATE[2] rate=55 flags=0x1
RATE[3] rate=110 flags=0x1
RATE[4] rate=60 flags=0x0
RATE[5] rate=90 flags=0x0
RATE[6] rate=120 flags=0x0
RATE[7] rate=180 flags=0x0
RATE[8] rate=240 flags=0x0
RATE[9] rate=360 flags=0x0
RATE[10] rate=480 flags=0x0
RATE[11] rate=540 flags=0x0
Flushing old station entries
Deauthenticate all stations
+rtl871x_sta_deauth_ops, ff:ff:ff:ff:ff:ff is deauth, reason=2
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
rtl871x_set_key_ops
Using interface wlan0 with hwaddr 80:1f:02:d3:cb:b8 and ssid 'KITT'
Deriving WPA PSK based on passphrase
SSID - hexdump_ascii(len=4):
4b 49 54 54 KITT
PSK (ASCII passphrase) - hexdump_ascii(len=18): [REMOVED]
PSK (from passphrase) - hexdump(len=32): [REMOVED]
rtl871x_set_wps_assoc_resp_ie
rtl871x_set_wps_beacon_ie
rtl871x_set_wps_probe_resp_ie
urandom: Got 20/20 bytes from /dev/urandom
GMK - hexdump(len=32): [REMOVED]
Key Counter - hexdump(len=32): [REMOVED]
WPA: group state machine entering state GTK_INIT (VLAN-ID 0)
GTK - hexdump(len=32): [REMOVED]
WPA: group state machine entering state SETKEYSDONE (VLAN-ID 0)
rtl871x_set_key_ops
rtl871x_set_beacon_ops
rtl871x_set_hidden_ssid ignore_broadcast_ssid:0, KITT,4
rtl871x_set_acl
wlan0: Setup of interface done.
あなたは設定する必要があります:
Sudo nano /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
上の行を見つけて、デフォルトの構成をどこにあるか伝えてください。
あなたがしなければならないすべてはこのコマンドを書くことです:
Sudo hostapd -d /etc/hostapd/hostapd.conf
すべてのエラーが一覧表示され、hostapd.conf
ファイルで修正できます
Sudo nano /etc/hostapd/hostapd.conf
これは私にとっても問題であり、明らかに存在しています。 / etc/rc2.d /および/ etc/networking/if-からhostapdを削除してエラーを修正しましたpre-up.d /
/ etc/network/interfacesがhostapdを制御するようになりました。
iface wlan0 inet static
post-up /usr/sbin/hostapd -B /etc/hostapd/hostapd.conf
post-up service isc-dhcp-server restart
address 192.168.10.1
netmask 255.255.255.0
再起動すると、インターフェースが表示されることが確認されました。とステーションがうまく接続します。以前はsshで停止してiscとhostapdを実行して何をしなければなりませんでしたpost-upが(この順序で)実行されるようになりました
私はこの問題に遭遇しました。私のラスピアンwheezyにデフォルトでインストールすると、hostapdはサービスでS01として起動されます。これにより、eth0とwlan0を構成するifplugd
の前に開始されます。これは、スクリプトが実行のためにアルファベット順にソートされるため、S01h[ostapd]
<S01i[fplugd]
が原因です。
ブリッジは他のすべての前に設定されるのに苦労すると思います。それをS05に移動しても効果がなかったので、代わりにrc.localに移動しました。また、rc [2-5] .dからhostapd
へのすべてのリンクを削除しました。 S05はまだdhclientが正しく完了するにはまだ早すぎると思います。これがベストプラクティスに従っているかどうかはわかりません。 ifplugdはbr0
の起動に失敗しますが、eth0
の方が協力的です。ここでwpa_supplicantが失敗する理由はわかりません。おそらくwlan0
がbr0
にすでに約束されているためです。とにかく無効にする必要があります。その後、hostapdはbr0
を再び起動しようとしますが、eth0
は問題なく、誰もwlan0
の制御を取得していないため、成功します。
post-up
(manインターフェイス)のpre-down
にbr0
//etc/network/interfaces
オプションを指定できる別の構成が考えられます。そこからhostapd
を開始/停止できます。しかし、私はそれをうまく機能させることができませんでしたが、これはかなりすっきりしたソリューションのように見えます。
問題は/etc/default/hostapd
の11行目の引用にあると思います:
”/etc/hostapd/hostapd.conf”
どちらを読むべきですか:
"/etc/hostapd/hostapd.conf"
あなたの投稿は実際に私の問題を解決するのに役立ったので、ありがとう!
ファイル/etc/init.d/hostapd
に10秒のスリープを追加すると、問題が解決しました。
1)Sudo nano /etc/init.d/hostapd
2)start)
セクションにsleep
を以下のように追加します
case "$1" in
start)
log_daemon_msg "Starting $DESC" "$NAME"
sleep 10
start-stop-daemon --start --oknodo --quiet --exec "$DAEMON_SBIN" \
--pidfile "$PIDFILE" -- $DAEMON_OPTS >/dev/null
log_end_msg "$?"
;;
DAEMON_CONF
に/etc/init.d/hostpad
を設定する必要があります。
/etc/init.d/hostapd
を調べれば、デフォルトは次のようになります。
...
14 PATH=/sbin:/bin:/usr/sbin:/usr/bin
15 DAEMON_SBIN=/usr/sbin/hostapd
16 DAEMON_DEFS=/etc/default/hostapd
17 DAEMON_CONF=
18 NAME=hostapd
19 DESC="advanced IEEE 802.11 management"
20 PIDFILE=/var/run/hostapd.pid
21
22 [ -x "$DAEMON_SBIN" ] || exit 0
23 [ -s "$DAEMON_DEFS" ] && . /etc/default/hostapd
24 [ -n "$DAEMON_CONF" ] || exit 0
...
最初はDAEMON_CONF
が空であるため、スクリプトは24行目で終了します。残念ながら、エラーメッセージも何もありません。 17行目を
DAEMON_CONF=/etc/hostapd/hostapd.conf
そして、指定されたファイルに構成を入れるとうまくいきました。
Systemdがrc/init.dよりも標準的なように見えるArch Linuxでは、同様の問題がありました。この回答は、次の点で他の回答と異なります。
構成ファイルは/etc/init.d
ではなく、/etc/systemd/system/
の下にあります。具体的には、私の場合、/etc/systemd/system/multi-user.target.wants/hostapd
であり、ExecStart
行は使用される構成ファイルを指します。
重要なことに、この構成ファイルは、使用されるバイナリ、つまり/usr/bin/hostapd
も指します。
修正は、実際に実行しているhostapdファイルを確認することです。 whereis
を実行すると、使用可能なバージョンとその場所がわかります。そう
whereis hostapd
のようなものを生成します
/sbin/hostapd /usr/bin/hostapd /usr/local/bin/hostapd
PATH
ごとにPATH/hostapd /etc/hostapd/hostapd.conf
を体系的に呼び出してそれぞれをテストすると、実際に呼び出しているものと、systemdが呼び出しているものが識別されます。この場合も、最後のパスはSudo hostapd /etc/hostapd/hostapd.conf
をパンチインしたときに呼び出していたパスです。 2つ目はsystemdが呼び出したものです。
コツは、バイナリを/usr/bin/local
から/usr/bin
にコピーするか、systemdが作業中のhostapdを指すようにすることです。前者は「安全な」オプションだと思います。
Sudo mv /usr/bin/hostapd /usr/bin hostapd.bkp # delete later as necessary
Sudo cp /usr/local/bin/hostapd /usr/bin
繰り返しになりますが、私の場合、/usr/bin/local
の下のバイナリは、Realtekドライバーをソースからコンパイルし、 website の説明に従って here としてコンパイルしたものです。 LinuxをサポートするRealtekによくできました。
これが役立つことを願っていますが、私のシステム(Arch(Arm)Linux on Raspberry Pi B)に固有のものではなく、UEのルールに従って適切な回答とみなされます。