hostapd не запускается через «сервис» - но начнется напрямую

У меня возникли проблемы с получением 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.
16 голосов | спросил gnychis 12 MaramWed, 12 Mar 2014 01:36:27 +04002014-03-12T01:36:27+04:0001 2014, 01:36:27

6 ответов


11

вам нужно настроить:

sudo nano /etc/default/hostapd

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

Найдите строку выше и сообщите конфигурацию defaul, где находится ваш.

ответил Matt 20 J000000Sunday14 2014, 02:07:57
10

Это тоже проблема для меня и, очевидно, все еще существует. Я исправил ошибки, удалив hostapd из /etc/rc2.d / и /etc/networking/if-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 (в этом порядке)

ответил Sir_Scofferoff 27 J000000Monday15 2015, 23:52:34
9

Все, что вам нужно сделать, это написать эту команду:

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

он отобразит все ваши ошибки, затем вы можете исправить их в файле hostapd.conf

sudo nano /etc/hostapd/hostapd.conf
ответил Salah laaroussi 7 PMpMon, 07 Apr 2014 15:12:31 +040012Monday 2014, 15:12:31
0

Я думаю, что проблема связана с вашими кавычками в строке 11 из /etc/default/hostapd:

”/etc/hostapd/hostapd.conf”

Что следует читать:

"/etc/hostapd/hostapd.conf"

Ваше сообщение действительно помогло мне решить мою проблему, поэтому спасибо!

ответил Bart Joosten 21 AM000000110000004631 2015, 11:52:46
0

В Arch linux, где systemd кажется нормой по rc /init.d, у меня была аналогичная проблема. Этот ответ отличается от остальных следующими способами:

  1. Конфигурационный файл не находится в /etc/init.d, но где-то под /etc/systemd/system/. Конкретно /etc/systemd/system/multi-user.target.wants/hostapd, в моем случае, где ExecStart указывает на используемый файл конфигурации.

  2. Важно отметить, что этот файл конфигурации также указывает на используемый двоичный код, а именно /usr/bin/hostapd.

Исправление состоит в том, чтобы проверить, какой файл hostapd вы фактически выполняете. running whereis расскажет вам, какие версии доступны и где они находятся. Итак,

whereis hostapd

создает что-то вроде

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

Тестирование каждого из них путем систематического вызова PATH/hostapd /etc/hostapd/hostapd.conf для каждого PATH определяет, какой из них вы вызываете и какой из них вызывается systemd. Опять же в моем случае последний путь - это то, что я вызывал, когда я нажал в sudo hostapd /etc/hostapd/hostapd.conf. Второй - то, что вызывало 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 из источника с их веб-сайт , как описано здесь . Хорошо сделано для Realtek для поддержки Linux.

Надеюсь, что это поможет, не относится к моей системе (Arch (Arm) Linux на малине Pi B) и квалифицируется как подходящий ответ в соответствии с правилами UE.

ответил Carel 30 PMpSat, 30 Apr 2016 17:17:30 +030017Saturday 2016, 17:17:30
0

Добавление 10 секундного спящего режима в файл /etc/init.d/hostapd исправлено для меня.

1) sudo nano /etc/init.d/hostapd 2) Добавьте sleep в раздел start) как ниже

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 7 PMpSat, 07 Apr 2018 12:45:13 +030045Saturday 2018, 12:45:13

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132