Статична помилка IP для wlan0


12

Зараз я намагаюся налаштувати Raspberry Pi як точку доступу, hostapdвикористовуючи такі вказівки:

RPI Wireless Hotspot

На жаль, моя статична IP-адреса відмовляється встановлювати при запуску. Нижче наведено вміст мого /etc/network/interfaces:

auto lo

iface lo inet loopabck
iface eth0 inet dhcp

iface wlan0 inet static
address 192.168.42.1
broadcast 192.168.42.255
netmask 255.255.255.0

up iptables-restore < /etc/iptables.ipv4.nat

Як не дивно, якщо після завантаження я запускаю таку команду, все працює добре:

sudo ifconfig wlan0 192.168.42.1

Хтось бачить якісь кричущі проблеми, які мені можуть бути відсутні? З давніх пір я працював з конфігурацією Linux, що відчуваю, що мені щось не вистачає.


В якості швидкого вирішення ви можете просто запустити ifconfig як завантажувальний сценарій після підключення інтерфейсів або останнього сценарію завантаження. Ви оновили прошивку до останнього? Не оновлення можливостей, але raspi скрипт для прошивки. Це виправляє кілька проблем з інтерфейсом.
Пьотр Кула

@ppumkin - я все ще Raspberry Pi n00b. Яка команда запустити скрипт raspi для оновлення мікропрограмного забезпечення?
Джастін Нісснер

4
github.com/Hexxeh/rpi-update Перейдіть туди і прочитайте його. Крім того, після перезавантаження також зробіть оновлення можливостей.
Пьотр Кула

@ppumkin - я запустив обидва оновлення, і жоден не переймався проблемою. Схоже, зараз мені доведеться піти з вирішенням проблеми.
Джастін Нісснер

В останню чергу намагаються спалити Распіану від свіжого за допомогою останнього зображення. Зробіть оновлення ще раз і подивіться, чи це допомагає. Це допомогло вирішити проблеми з Wi-Fi.
Пьотр Кула

Відповіді:


4

Мій файл інтерфейсів виглядає трохи інакше, але працює для мене весь час.

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0

iface wlan0 inet static
    address 192.168.1.123
    netmask 255.255.255.0
    network 192.168.1.1
    broadcast 255.255.255.255
    gateway 192.168.1.1
    wpa-ssid "SSID"
    wpa-psk "PASSWORD"

Можливо, це може допомогти


Якщо IP-трансляція не повинна виглядати так: 192.168.1.255255 знаходиться на останньому місці, оскільки в іншому випадку ви не транслюєтесь на всіх пристроях вашого маршрутизатора.
XandruCea

Я вважаю, що відсутній фрагмент з оригінального запитання був вищенаведеним рядком "auto wlan0". Ви також можете додати "dns-сервери імен 8.8.8.8" (як приклад) після лінії трансляції.
Joat

2

Вимкніть ifplugd, тоді статична IP-адреса повинна працювати.


працює для мене! / etc / default / ifupd, змінити auto / all => eth0
flotto

2

Я підозрюю, що hostapd реініціалізує інтерфейс, що є причиною цього збою. Ви можете вручну додати команду ifconfig до файлу /etc/rc.local, який автоматично виконає її під час завантаження.


2

Це, безумовно, умова перегонів у розпбі-джессі, яка перестала використовувати init, заснований на runlevel, на користь підходу, що базується на дереві пакетів, "почати все одночасно". Я думаю, що я міг би його обійти, поставивши ці рядки /etc/rc.local:

/sbin/ifdown wlan0
/sbin/ifup wlan0
/sbin/ifconfig wlan0 192.168.42.1
/usr/sbin/service isc-dhcp-server start

Час покаже, я думаю.


Гаразд, у Unix звичайно були рівні і telinit, коли я працював над ним з 1984 по 1992 рік, але, на жаль, повернувся лише нещодавно. Може бути , якщо ми проходимо через все те , що це не так , хто - то пояснити , що це на самому справі є . (Моє виправлення все ще працює, але мені це не подобається).
Colin Wray

Я вирішив, що це умова гонки, оскільки є два можливі результати завантажувальної послідовності, і вони трапляються випадковим чином.
Колін Врай

Yikes. Прошу вибачення за те, що я неправильно прочитав цю відповідь назад - що це проблема, спричинена SysV init fix w / systemd. У будь-якому випадку жоден з них не може запобігти умові перегонів, оскільки за своєю природою багато служб, які вони починають розвивати і зберігаються. Неправильне налаштування чого-небудь може спричинити проблеми, і те, що я тут заперечую, - це те, в чому винна система systemd (можна стверджувати, що вона має кращу методологію вирішення залежностей, і це не просто "почати все одночасно" willy-nilly - але це відбувається по дотичній) ...
goldilocks

У мене злегка неортодоксальне ставлення до роботи з мережами на скриньках Linux, що, як правило, залишає мене з невеликим поглядом на подібні проблеми, і якщо у вас є рішення, яке працює для вас, чудово, але ваш діагноз здається дуже химерним (схоже на умови перегонів, ходить як умова гонки ... але тінь качки не качка ... тощо).
goldilocks

1
Читаючи мою ОП, я можу зрозуміти, чому ви думали, що я звинувачую систему безпосередньо, і чому вона звільнила переконливого захисника, як ви. Ні, я думаю, що проблема повинна полягати в дереві залежностей від пакета, якого вони вважають за наступним, і про яке я знаю нуль. Якось він повинен розпізнати зіткнення між ifup і hostapd.
Колін Врай

1

Я б намагався додати наступні рядки трохи вище вашої поточної конфігурації бездротового інтерфейсу:

auto wlan0
allow-hotplug wlan0

Це повідомляє конфігурації вашого інтерфейсу автоматично запускати інтерфейс wlan0, і що він може бути вставлений пізніше (гаряча пробка).

Вам також може знадобитися додати gateway <IP Address>рядок, щоб маршрутизація працювала.


Це те, що зробило для мене трюк! Дякую.
johnboiles

0

Не обов'язково чудове рішення, але оскільки у мене виникли проблеми зі станом при використанні / etc / network / interfaces, я перейшов на використання статичного ip через маршрутизатор? Ви пробували це як альтернативу?


0

Я виконую той самий підручник, щоб налаштувати WAP на моєму Pi.

На жаль, служба dhcp не запускається під час завантаження. Після завантаження перевірка служби показує, що вона не працює: service isc-dhcp-server status Status сервера ISC DHCP: dhcpd не працює

Насправді інтерфейс wlan0 не отримує IP-адресу, і тому dhcp-сервер не запускається.

Я дотримуюся інструкції за посиланням нижче, але це не вирішує проблему: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- частина точки доступу-3b /

Потім я дотримуюся інструкції в цій публікації: http://www.novitiate.co.uk/?p=183

nano /etc/rc.local

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.

# Print the IP address
sleep 5
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
      sudo ifup wlan0                           #start wlan0 with ip adress in  /etc/network/interfaces
#      sudo service hostapd start               #not necessary if you already start hostapd as a service
      sudo service isc-dhcp-server start        #start dhcp server
exit 0

Після перезавантаження працює сервер DHCP.

Також можливе інше рішення, яке я не тестую: ой, у мене недостатньо репутації, щоб розмістити більше 2 посилань.


0

У мене була така ж проблема. wlan0 втрачає статичну IP-адресу якось при запуску сервера dhcp. Змініть / etc / default / ifplugd та змініть це:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"

Ця відповідь коректна! не знаю, чому проголосували
проти

У мене було завантаження pi, і іноді це закінчувалося б адресою 169.xx.xx.xx, а іноді і статичною адресою, яку я хотів. Це зроблено для того, щоб надійно отримати статичну адресу. Дякую @Stef!
Пітер Баньялл

0

Крім того, ви можете створити міні-сервіс, який перезапустить wlan0, переконавшись, що він запускається перед завантаженням перед hostapd та isc-dhcp-сервером.

Створіть новий скрипт /etc/init.d/wlan0-restart

sudo vi /etc/init.d/wlan0-restart

із наступним вмістом:

#!/bin/sh
#
#

### BEGIN INIT INFO
# Provides:          wlan0-restart
# Required-Start:    $network
# Required-Stop:     $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Restarts wlan0 interface
# Description:       Restarts wlan0 interface to fix problem with static address in WiFi AP
# X-Start-Before:    hostapd isc-dhcp-server
### END INIT INFO

PATH=/sbin:/usr/sbin:$PATH

do_start() {
  ifdown wlan0
  ifup wlan0
}

case "$1" in
  start)
    do_start
    ;;
  restart|reload|force-reload)
    echo "Error: argument '$1' not supported" >&2
    exit 3
    ;;
  stop)
    ;;
  status)
    ;;
  *)
    echo "Usage: $0 start|stop" >&2
    exit 3
    ;;
esac
exit 0

Потім виконайте такі команди:

sudo chmod 755 /etc/init.d/wlan0-restart
sudo update-rc.d –f hostapd remove
sudo update-rc.d –f isc-dhcp-server remove
sudo update-rc.d wlan0-restart defaults
sudo update-rc.d hostapd defaults
sudo update-rc.d isc-dhcp-server defaults

Перезавантажте та переконайтеся, що у wlan0 є статична IP-адреса та чи запущений isc-dhcpd-сервер:

pi@raspberrypi:~$ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr e8:de:27:07:92:6a  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

pi@raspberrypi:~$ pgrep -l dhcpd
2315 dhcpd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.