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.d( service 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"

Знайдіть рядок вище та скажіть конфігурацію за замовчуванням, де ваша.


11

Це також було проблемою для мене і, очевидно, існує. Я виправив помилки, видаливши hostapd з /etc/rc2.d/ та /etc/networking/if-pre-up.d/

/ і т.д. / мережа / інтерфейси керують 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

Перезавантаження підтвердило, що він пропонує інтерфейс; Станції добре підключаються. Раніше мені доводилося забиватися і зупиняти isc і hostapd і робити те, що робить post-up зараз (у такому порядку)


@lordvlad правильніше, я пропустив налаштування DAEMON_CONF, тому параметр -B працював для мене.
Sir_Scofferoff

"Правильно" - це те, що працює, і ця працює на системних, акуратно пробігаючи купу інших проблем, які інші не вирішують.
Джон Мей

1
@Teoma, насправді @lordvlad є невірним, якщо ви дотримуєтесь типових інструкцій hostapd і встановите DAEMON_CONF так, /etc/defaults/hostapdяк @Matt (не я) пропонує в іншій відповіді (замість того, щоб покірливо ставити це так, /etc/init.d/hostapdяк пропонує Уряд ). При цьому ваша конкретна відповідь стосується умови перегонів, що існує навіть після того, як встановлено DAEMON_CONF, що більше помилка в тому, як реалізуються сценарії запуску hostapd, ніж усе. Тож дякую за це !!
мат

1
Це єдиний спосіб, коли я міг би змусити його працювати над raspbian, rpi3. І це з досвідом> 15 років Unix. Сидд викрадений start-stop-daemonі виконує шалену роботу при запуску демона sysv (і udhcpd, і hostapd). Я не маю поняття, що може бути не так, тому що, наскільки Systemd пішов, це зробило свою роботу (і демон "вийшов"). Тож якщо у вас є розблокування, використовуйте його.
Мельвін

3

Я просто зіткнувся з цією проблемою. За замовчуванням встановити на моєму розпійному хрипі, hostapd запускається як S01 в ​​сервісах. Це змушує його почати перед тим, як ifplugdналаштувати eth0 і wlan0. Причиною цього є те, що 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/ pre-downпараметр для br0в /etc/network/interfaces(man інтерфейси). Ви можете почати / зупинитись hostapdзвідти. Мені не вдалося змусити його працювати, але це виглядає як набагато чистіше рішення.


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_CONF. Таким чином, цей скрипт буде виходити лише у рядку 24, якщо DAEMON_CONF не визначено ні в /etc/init.d/hostapd(що ви неправильно написали як hostPAD у своєму першому рядку), ні /etc/defaults/hostapd.
мат

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 ви насправді виконуєте. Біг 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 на Raspberry Pi B) і кваліфікується як відповідна відповідь згідно з правилами UE.


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 "$?"
        ;;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.