hostapdは「サービス」経由では起動しませんが、直接起動します


19

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.

()hostapd経由で実行できない場合は、何も発生していないようです...このフォーラムの投稿を参照してくださいinit.dservice hostapd start

回答:


14

あなたがしなければならないことはこのコマンドを書くことです:

sudo hostapd -d /etc/hostapd/hostapd.conf

すべてのエラーがリストされ、hostapd.confファイルで修正できます

sudo nano /etc/hostapd/hostapd.conf

14

以下を構成する必要があります。

sudo nano /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"

上記の行を見つけて、defaul configがどこにあるかを伝えます。


11

これは私にとっても問題であり、明らかに残っています。/etc/rc2.d/および/etc/networking/if-pre-up.d/からhostapdを削除して、エラーを修正しました

/ 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を実行してischostapdを停止し、ポストアップが行うことを(この順序で)行わなけれなりませんでした


@lordvladの方が正確です。DAEMON_CONFの設定を見逃していたため、-Bオプションが有効でした。
Sir_Scofferoff

「正しい」が機能するものであり、これはsystemdで機能し、他の人が解決できない他の多くの問題をうまく回避します。
ジョン・ミー

1
@Teoma、実際には@lordvladは、典型的なhostapdの指示に従い、/etc/defaults/hostapd@ Matt(私ではない)が別の回答で示唆するように(/etc/init.d/hostapdvladが示唆するようにハックして入れるのではなく)DAEMON_CONF を設定すると正しくありません。とはいえ、ここでのあなたの特定の答えは、DAEMON_CONFが設定された後でも存在する競合状態に対処するものです。だから、ありがとう!!
マット

1
これは、raspbian、rpi3で動作させるための唯一の方法です。そして、15年以上のUNIXの経験があります。Systemdはハイジャックされstart-stop-daemon、sysvデーモン(udhcpdとhostapdの両方)の起動時にくだらない仕事をします。何が間違っているのか、手がかりがありません。systemdが実行している限り、それは仕事でした(そしてデーモンは「終了」していました)。したがって、ポストアップがある場合は、それを使用します。
メルビン

3

私はちょうどこの問題に出くわしました。デフォルトでは、私のraspian wheezyにインストールすると、hostapdはサービスでS01として起動されます。これにより、ifplugdeth0とwlan0を構成する前に起動します。その理由は、あるS01h[ostapd]< S01i[fplugd]スクリプトを実行するために、アルファベット順にソートされているため。

ブリッジは他のものよりも先に設定するのに苦労すると思います。それをS05に移動しても何の助けにもならなかったので、代わりにrc.localに移動しました。他のすべての後に「しばらく」実行されます。また、rc [2-5] .dからへのすべてのリンクを削除しましたhostapd。dhclientが適切に終了するには、S05はまだ早すぎると思います。これがベストプラクティスに従っているかどうかはわかりません。今起こっているように見えることは、ifplugdが起動に失敗br0したeth0が、より協力的であるということです。ここでwpa_supplicantが失敗する理由はわかりません。おそらくwlan0既に約束されているからbr0です。とにかく無効にする必要があります。その後、hostapdはbr0再び起動しようとし、成功し、eth0誰もを制御できなかったため成功しwlan0ます。

in (manインターフェイス)にpost-up/ pre-downオプションを指定できる別の可能な構成があります。そこから開始/停止できます。しかし、私はそれを機能させることができませんでしたが、これははるかにクリーンなソリューションのように見えます。br0/etc/network/interfaceshostapd


1

問題は次の11行目の引用にあると思います/etc/default/hostapd

”/etc/hostapd/hostapd.conf”

読むべきもの:

"/etc/hostapd/hostapd.conf"

あなたの投稿は実際に私の問題を解決するのに役立ちましたので、ありがとう!


1

あなたは、設定する必要が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

指定されたファイルに構成を置くことは私のために働いた。


1
hostapdの一般的なインストール手順に従っている場合、この答えは間違っており、混乱する可能性があります。23行目は、DAEMON_DEFSによって参照されるファイルで定義されている変数をプルします。DAEMON_DEFSは通常、DAEMON_CONFが定義されています。したがって、DAEMON_CONFが/etc/init.d/hostapd(最初の行でhostPADとしてつづりを間違えた)またはで定義されていない場合、このスクリプトは24行目でのみ終了します/etc/defaults/hostapd
マット

0

systemdがrc / init.dの標準であると思われるArch Linuxでは、同様の問題がありました。この回答は、次の点で他の回答と異なります。

  1. 構成ファイルはにではなく/etc/init.d、のどこかにあり/etc/systemd/system/ます。具体的/etc/systemd/system/multi-user.target.wants/hostapdには、私の場合、ExecStart行が使用される構成ファイルを指します。

  2. 重要なことに、この構成ファイルは使用されるバイナリ、つまりも指します/usr/bin/hostapd

修正は、実際に実行しているhostapdファイルを確認することです。実行whereisすると、使用可能なバージョンとその場所がわかります。そう

whereis hostapd

のようなものを生成します

/sbin/hostapd /usr/bin/hostapd /usr/local/bin/hostapd

体系的に呼び出すことで、それぞれをテストするPATH/hostapd /etc/hostapd/hostapd.confごとにPATHその1あなたが実際に起動していると、どちらにsystemdが起動される識別。再び私の場合、最後のパスは、パンチインしたときに呼び出していたものsudo hostapd /etc/hostapd/hostapd.confです。2番目は、systemdが呼び出していたものです。

トリックからバイナリをコピーすることである/usr/bin/local/usr/bin取り組んでhostapdにsystemdにポイントかと。前者は「より安全な」オプションだと思います。

sudo mv /usr/bin/hostapd /usr/bin hostapd.bkp     # delete later as necessary
sudo cp /usr/local/bin/hostapd /usr/bin

繰り返しになりますが、この場合のバイナリ/usr/bin/localは、ここで説明するように、WebサイトのソースからRealtekドライバーをコンパイルすることで作成されました。LinuxをサポートしてくれたRealtekによくやった。

これが役立つことを望み、私のシステム(Raspberry Pi B上のArch(Arm)Linux)に固有ではなく、UEルールに従って適切な答えとして認定されます。


0

ファイルに10秒のスリープを追加すると/etc/init.d/hostapd、問題が修正されました。

1)sudo nano /etc/init.d/hostapd 2)を追加sleepstart)以下のようなセクション

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 "$?"
        ;;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.