Сбой статического 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 в качестве загрузочного скрипта после подключения интерфейсов или последних загрузочных скриптов. Вы обновили прошивку до последней версии? Не обновление aptitude, а скрипт распи для прошивки. Это исправляет несколько проблем с интерфейсом.
Петр Кула
@ppumkin - Я все еще Raspberry Pi n00b. Что за команда запускает скрипт raspi для обновления прошивки?
Джастин Нисснер,
4
github.com/Hexxeh/rpi-update Перейдите туда и прочитайте его. Также после перезагрузки сделайте обновление aptitude.
Петр Кула
@ppumkin - я запустил оба обновления и ни один не позаботился о проблеме. Похоже, мне сейчас придется идти с обходным путем.
Джастин Нисснер,
В крайнем случае пытается выжечь Rasbpian из свежих, используя новейшие изображения. Сделайте обновления еще раз и посмотрите, поможет ли это. Это помогло с проблемами с WiFi.
Петр Кула

Ответы:

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-nameservers 8.8.8.8» (в качестве примера) после широковещательной линии.
joat
2

Отключите ifplugd, тогда статический IP-адрес должен работать.

Лоренс
источник
работает для меня! / etc / default / ifupd, изменить auto / all => eth0
flotto
2

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

Фред
источник
2

Это определенно условие гонки в raspbian jessie, которое прекратило использовать init на основе runlevel в пользу подхода на основе дерева пакетов «start all одновременно». Я думаю, что я мог бы обойти это, поместив эти строки в /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 год, но, к сожалению, вернулся только недавно. Может быть , если мы проходим через все то , что это не так , кто - то объяснить , что это на самом деле есть . (Мое исправление все еще работает, но мне это не нравится).
Колин Рэй
Я решил, что это было состояние гонки, потому что есть два возможных результата последовательности загрузки, и они происходят случайно.
Колин Рэй
Хлоп. Я прошу прощения за неправильное прочтение этого ответа в обратном направлении - что это была проблема, вызванная исправлением SysV init с помощью systemd. В любом случае, ни один из них не может предотвратить состояние гонки, поскольку по своей природе многие службы запускаются и продолжают работать. Неправильная конфигурация чего-либо может вызвать проблему, и здесь я возражаю против того, что systemd по своей природе виноват (можно утверждать, что он имеет лучшую методологию для разрешения зависимостей и не просто «запускает все одновременно»). волей-неволей - но это происходит по касательной) ...
Златовласка
У меня немного неортодоксальное отношение к сетевому взаимодействию на компьютерах с Linux, в общем, что оставляет меня без малейшего взгляда на подобные проблемы, и если у вас есть решение, которое работает для вас, прекрасно, но ваш диагноз кажется очень предположительным (выглядит как состояние гонки, прогулки как состояние гонки ... но тень утки не утка ... и т. д.).
Златовласка
1
Читая мой ОП, я понимаю, почему вы решили, что я обвиняю систему напрямую, и почему она уволила такого стойкого защитника, как вы. Нет, я думаю, что проблема должна заключаться в дереве зависимостей пакетов, которому они, как утверждают, следуют, и о котором я знаю ноль. Каким-то образом он должен распознать конфликт между ifup и hostapd.
Колин Рэй
1

Я хотел бы добавить следующие строки чуть выше текущей конфигурации интерфейса wirless:

auto wlan0
allow-hotplug wlan0

Это говорит вашей конфигурации интерфейса, чтобы автоматически запускать интерфейс wlan0, и что он может быть вставлен позже (hotplug).

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

Hurgh
источник
Это было то, что помогло мне! Благодарю.
Джонбойлс
0

Не обязательно отличное решение, но так как у меня были проблемы с моим staticip при использовании / etc / network / interfaces, я переключился на использование статического ip через маршрутизатор? Вы пробовали это как альтернативу?

gray_fox
источник
0

Я следую тому же руководству, чтобы настроить WAP на моем Pi.

К сожалению, служба dhcp не запускается при загрузке. После загрузки проверка службы показывает, что она не запущена: service isc-dhcp-server status Состояние ISC DHCP-сервера: dhcpd не запущен

На самом деле интерфейс wlan0 не получает IP-адрес, и поэтому сервер DHCP не запускается.

Я следую инструкции в ссылке ниже, но это не решает проблему: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- доступа pointrouter-часть-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 работает.

Также возможно другое решение, которое я не тестирую: упс, у меня недостаточно репутации, чтобы размещать более двух ссылок.

esa1966
источник
0

У меня была такая же проблема. wlan0 как-то теряет свой статический IP-адрес при запуске сервера dhcp. Отредактируйте / etc / default / ifplugd и измените на это:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Stef
источник
Этот ответ ошибочный! не знаю почему проголосовали
флот
У меня была пи-загрузка, и иногда она заканчивалась адресом 169.xx.xx.xx, а иногда и статическим адресом, который я хотел. Это было сделано, чтобы надежно получить статический адрес. Спасибо @Stef!
Питер Багналл
0

В качестве альтернативы вы можете создать мини-сервис, который перезапускает wlan0, следя за тем, чтобы он запускался при загрузке перед hostapd и isc-dhcp-server.

Создайте новый скрипт /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
PJ_Finnegan
источник