hostapd tidak akan memulai melalui "layanan" - tetapi akan mulai secara langsung

19

Saya mengalami kesulitan hostapduntuk memulai sebagai layanan. Gagal ketika saya mencoba memulainya:

$ sudo service hostapd start
[FAIL] Starting advanced IEEE 802.11 management: hostapd failed!

Dari apa yang saya mengerti, ini menggunakan konfigurasi di /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"

File konfigurasi daemon saya adalah sebagai berikut:

$ 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

Meskipun layanan gagal untuk memulai, saya dapat memulainya secara langsung tanpa kesalahan:

$ 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.
gnychi
sumber
Jika Anda mengalami masalah hostapduntuk dijalankan melalui init.d( service hostapd start) dan sepertinya tidak ada yang terjadi ... lihat posting forum ini .

Jawaban:

14

Yang harus Anda lakukan adalah menulis perintah ini:

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

itu akan mencantumkan Anda semua kesalahan, Anda kemudian dapat memperbaikinya dalam hostapd.conffile

sudo nano /etc/hostapd/hostapd.conf
Salah laaroussi
sumber
14

Anda harus mengonfigurasi:

sudo nano /etc/default/hostapd

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

Temukan baris di atas dan beri tahu konfigurasi defaul di mana Anda berada.

Mat
sumber
11

Ini masalah bagi saya juga dan jelas masih ada. Saya tetap kesalahan dengan menghapus hostapd dari /etc/rc2.d/ dan /etc/networking/if-pre-up.d/

/ etc / network / interfaces mengontrol hostapd sekarang ..

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

Sebuah reboot dikonfirmasi akan memunculkan antarmuka; dan Stasiun terhubung dengan baik. Sebelumnya saya harus ssh in dan menghentikan isc dan hostapd dan melakukan apa yang dilakukan post-up sekarang (dalam urutan itu)

Sir_Scofferoff
sumber
@lordvlad lebih benar, saya telah melewatkan pengaturan DAEMON_CONF, itulah sebabnya opsi -B bekerja untuk saya.
Sir_Scofferoff
'Benar' adalah yang berfungsi, dan yang ini bekerja pada systemd, dengan rapi menghindari sekelompok masalah lain yang tidak dipecahkan orang lain.
John Mee
1
@ Teoma, sebenarnya @lordvlad salah jika Anda mengikuti instruksi hostapd yang tipikal dan mengatur DAEMON_CONF /etc/defaults/hostapdsebagai @Matt (bukan saya) menyarankan dalam jawaban lain (daripada dengan diam-diam memasukkannya /etc/init.d/hostapdseperti yang disarankan vlad). Yang mengatakan, jawaban khusus Anda di sini membahas kondisi ras yang ada bahkan setelah DAEMON_CONF ditetapkan, yang lebih merupakan bug dalam bagaimana skrip startup hostapd diimplementasikan daripada apa pun. Jadi terimakasih untuk itu!!
matt
1
Ini adalah satu-satunya cara saya bisa membuatnya bekerja pada raspbian, rpi3. Dan itu dengan> 15 tahun pengalaman unix. Systemd dibajak start-stop-daemondan melakukan pekerjaan buruk dalam memulai daemon sysv (baik udhcpd dan hostapd). Saya tidak tahu apa yang bisa salah, karena sejauh systemd berjalan itu melakukan pekerjaannya (dan daemon "keluar"). Jadi, jika Anda memiliki post-up, gunakan itu.
Melvyn
3

Saya baru saja mengalami masalah ini. Secara default menginstal pada wheezy raspian saya, hostapd dimulai sebagai S01 dalam layanan. Ini membuatnya mulai sebelum ifplugdmengkonfigurasi eth0 dan wlan0. Alasan untuk ini adalah S01h[ostapd]< S01i[fplugd]karena skrip diurutkan dalam urutan abjad untuk dieksekusi.

Saya pikir jembatan sulit dikonfigurasikan sebelum yang lainnya. Memindahkannya ke S05 juga tidak membantu, jadi saya memindahkannya ke rc.local, yang dieksekusi "sementara" setelah yang lainnya. Saya juga menghapus semua tautan dari rc [2-5] .d ke hostapd. Saya pikir S05 masih terlalu cepat untuk diselesaikan dengan benar. Saya tidak yakin ini sesuai dengan praktik terbaik. Apa yang tampaknya terjadi sekarang adalah jika ifplugd gagal untuk membesarkan br0tetapi eth0lebih kooperatif. Saya tidak yakin mengapa wpa_supplicant gagal di sini, mungkin karena wlan0sudah dijanjikan br0. Bagaimanapun juga itu perlu dinonaktifkan. Kemudian, hostapd mencoba untuk membuka br0kembali dan berhasil karena eth0tidak masalah dan tidak ada yang mengambil kendali wlan0.

Ada konfigurasi lain yang memungkinkan di mana Anda dapat menentukan opsi post-up/ pre-downuntuk br0di /etc/network/interfaces(antarmuka manusia). Anda bisa mulai / berhenti hostapddari sana. Saya tidak berhasil membuatnya bekerja, tetapi ini sepertinya solusi yang jauh lebih bersih.

Eric
sumber
1

Saya pikir masalahnya adalah dengan kutipan Anda pada baris 11 dari /etc/default/hostapd:

”/etc/hostapd/hostapd.conf”

Yang harus dibaca:

"/etc/hostapd/hostapd.conf"

Posting Anda sebenarnya membantu saya memecahkan masalah saya, jadi terima kasih!

Bart Joosten
sumber
1

Anda perlu mengatur DAEMON_CONFdi /etc/init.d/hostpad.

Ini benar-benar sangat jelas jika Anda melihat ke dalam /etc/init.d/hostapd, defaultnya terlihat seperti ini:

...
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
...

karena DAEMON_CONFkosong untuk memulai, skrip keluar pada baris 24. Sayang sekali tidak ada pesan kesalahan atau apa pun. Mengubah baris 17 menjadi

 DAEMON_CONF=/etc/hostapd/hostapd.conf

dan menempatkan konfigurasi dalam file yang ditentukan bekerja untuk saya.

tuan
sumber
1
Jika seseorang telah mengikuti instruksi instalasi khas untuk hostapd, jawaban ini salah dan cenderung membingungkan. Baris 23 menarik variabel yang ditentukan dalam file yang direferensikan oleh DAEMON_DEFS, yang pada gilirannya biasanya memiliki DAEMON_CONF yang didefinisikan di dalamnya. Dengan demikian, skrip ini hanya akan keluar pada baris 24 jika DAEMON_CONF tidak didefinisikan dalam keduanya /etc/init.d/hostapd(yang Anda salah eja sebagai hostPAD di baris pertama Anda) juga /etc/defaults/hostapd.
matt
0

Di Arch linux, di mana systemd tampaknya norma di atas rc / init.d Saya punya masalah yang sama. Jawaban ini berbeda dari yang lain dalam cara berikut:

  1. File konfigurasi tidak berada /etc/init.dtetapi di suatu tempat di bawah /etc/systemd/system/. Secara khusus /etc/systemd/system/multi-user.target.wants/hostapd, dalam kasus saya, di mana ExecStartgaris menunjuk ke file konfigurasi yang digunakan.

  2. Yang penting file konfigurasi ini juga menunjuk ke biner yang digunakan, yaitu /usr/bin/hostapd.

Cara mengatasinya adalah untuk memeriksa file hostapd mana yang sebenarnya Anda jalankan. running whereisakan memberi tahu Anda versi apa yang tersedia dan di mana mereka berada. Begitu

whereis hostapd

menghasilkan sesuatu seperti

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

Menguji masing-masing dengan secara sistematis memanggil PATH/hostapd /etc/hostapd/hostapd.confmasing-masing PATHmengidentifikasi mana yang Anda benar-benar memohon dan mana yang systemd memohon. Sekali lagi dalam kasus saya, jalan terakhir adalah apa yang saya minta ketika saya menekan sudo hostapd /etc/hostapd/hostapd.conf. Yang kedua adalah apa yang dipanggil systemd.

Caranya adalah dengan menyalin biner dari /usr/bin/localke /usr/binatau ke titik systemd ke hostapd yang berfungsi. Saya percaya yang pertama adalah opsi "lebih aman".

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

Sekali lagi dalam kasus saya biner di bawah /usr/bin/localberasal dari kompilasi driver Realtek dari sumber dari situs web mereka seperti yang dijelaskan di sini . Bagus sekali bagi Realtek untuk mendukung Linux.

Semoga ini bisa membantu, tidak spesifik untuk sistem saya (Arch (Arm) Linux pada Raspberry Pi B) dan memenuhi syarat sebagai jawaban yang sesuai menurut aturan UE.

Carel
sumber
0

Menambahkan 10 detik tidur dalam file /etc/init.d/hostapdmemperbaiki masalah bagi saya.

1) sudo nano /etc/init.d/hostapd 2) Tambahkan bagian sleepdalam start)seperti di bawah ini

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 "$?"
        ;;
Junaid
sumber