Błąd statycznego adresu IP dla wlan0

12

Obecnie próbuję skonfigurować Raspberry Pi jako punkt dostępu, hostapdkorzystając z następujących wskazówek:

RPI Wireless Hotspot

Niestety mój statyczny adres IP odmawia ustawienia przy uruchamianiu. Poniżej znajduje się treść mojego /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

Co dziwne, jeśli uruchomię następujące polecenie po uruchomieniu, wszystko działa dobrze:

sudo ifconfig wlan0 192.168.42.1

Czy ktoś widzi jakieś rażące problemy, które mogą mi brakować? Minęło tak dużo czasu, odkąd pracowałem z konfiguracją Linuksa, że ​​wydaje mi się, że brakuje mi czegoś łatwego.

Justin Niessner
źródło
Jako szybkie obejście można po prostu uruchomić ifconfig jako skrypt rozruchowy po podłączeniu interfejsów lub ostatnich skryptów rozruchowych. Czy zaktualizowałeś oprogramowanie do najnowszej wersji? Nie aktualizacja umiejętności, ale skrypt raspi dla oprogramowania układowego. To rozwiązuje kilka problemów z interfejsem.
Piotr Kula,
@ppumkin - Nadal jestem Raspberry Pi n00b. Jakim poleceniem jest uruchomić skrypt raspi w celu aktualizacji oprogramowania?
Justin Niessner,
4
github.com/Hexxeh/rpi-update Idź tam i przeczytaj. Również po ponownym uruchomieniu wykonaj aktualizację umiejętności.
Piotr Kula,
@pumkin - Uruchomiłem obie aktualizacje i żadna nie zajęła się tym problemem. Wygląda na to, że na razie będę musiał obejść to obejście.
Justin Niessner,
Ostatnią próbą jest spalenie Rasbpian od nowa przy użyciu najnowszego obrazu. Wykonaj aktualizacje ponownie i sprawdź, czy to pomoże. Pomogło mi to z problemami z WiFi.
Piotr Kula,

Odpowiedzi:

4

Mój plik interfejsów wygląda nieco inaczej, ale działa dla mnie cały czas.

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"

Może to może pomóc

karan
źródło
Adres IP emisji nie powinien wyglądać tak: 192.168.1.255255 jest na ostatnim miejscu, ponieważ w przeciwnym razie nie będziesz nadawał na wszystkich urządzeniach routera.
XandruCea,
Uważam, że brakującym fragmentem oryginalnego pytania była powyższa linia „auto wlan0”. Możesz także dodać „dns-nameservers 8.8.8.8” (jako przykład) po linii rozgłoszeniowej.
dołącz
2

Wyłącz ifplugd, wtedy statyczny adres IP powinien działać.

Lawrence
źródło
pracuje dla mnie! / etc / default / ifupd, zmień auto / all => eth0
flotto
2

Podejrzewam, że hostapd ponownie inicjuje interfejs, co powoduje awarię. Możesz ręcznie dodać polecenie ifconfig do pliku /etc/rc.local, który wykona go automatycznie podczas rozruchu.

Fred
źródło
2

Zdecydowanie jest to warunek wyścigu w raspbian jessie, który przestał używać init opartego na runlevel na korzyść opartego na drzewie pakietów podejścia „start wszystko w tym samym czasie”. Myślę, że mogłem to obejść, umieszczając następujące wiersze /etc/rc.local:

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

Czas pokaże, jak sądzę.

Colin Wray
źródło
OK, Unix z pewnością miał poziomy pracy i telinit, kiedy pracowałem nad nim w latach 1984-1992, ale niestety wróciłem dopiero niedawno. Może jeśli przejdziemy przez wszystkie rzeczy, których nie ma, ktoś wyjaśni, co to właściwie jest . (Moja poprawka nadal działa, ale mi się nie podoba).
Colin Wray,
Uznałem, że to warunek wyścigu, ponieważ są dwa możliwe wyniki sekwencji rozruchowej i występują one losowo.
Colin Wray,
Yikes. Przepraszam, że źle odczytałem tę odpowiedź wstecz - że był to problem spowodowany przez naprawioną w / systemd inicjalizację SysV. W każdym razie żadna z nich nie może zapobiec wyścigowi, ponieważ z natury wiele usług rozpoczyna rozwidlenie i trwa. Błędna konfiguracja czegokolwiek może spowodować problem, a ja temu sprzeciwiam się implikacji, że systemd jest z natury winny (można argumentować, że ma lepszą metodologię rozwiązywania zależności i nie po prostu „zaczyna wszystko od razu” willy-nilly - ale to dzieje się ze styczną) ...
goldilocks
Mam nieco niekonwencjonalne podejście do tworzenia sieci na urządzeniach z linuksem ogólnie, co pozostawia mi małą perspektywę na takie problemy, a jeśli masz rozwiązanie, które działa dla ciebie, świetnie, ale twoja diagnoza wydaje się bardzo domniemana (wygląda podobnie do wyścigu, idzie jak warunek wyścigu ... ale cień kaczki nie jest kaczką ... itd.).
goldilocks
1
Po przeczytaniu mojego OP widzę, dlaczego myślałeś, że obwiniłem system bezpośrednio i dlaczego wystrzelił tak zagorzałego obrońcę jak ty. Nie, myślę, że problem musi leżeć w drzewie zależności pakietów, które, jak twierdzą, podążają i o których wiem zero. Jakoś musi rozpoznać starcie między ifup a hostapd.
Colin Wray,
1

Próbowałbym dodać następujące wiersze tuż nad twoją aktualną konfiguracją interfejsu bez wirless:

auto wlan0
allow-hotplug wlan0

To informuje konfigurację interfejsu, aby automatycznie uruchamiał interfejs wlan0 i że może zostać wstawiony później (hotplug).

Konieczne może być również dodanie gateway <IP Address>linii, aby routing działał.

Hurgh
źródło
To właśnie zrobiło dla mnie lewę! Dzięki.
johnboiles
0

Niekoniecznie świetne rozwiązanie, ale skoro miałem problemy z moim staticip podczas korzystania z / etc / network / interfaces, przełączyłem się na używanie statycznego adresu IP przez mój router? Czy próbowałeś tego w ten sposób jako alternatywy?

szary Lis
źródło
0

Wykonuję ten sam samouczek, aby skonfigurować WAP na moim Pi.

Niestety usługa dhcp nie uruchamia się przy starcie systemu. Po uruchomieniu sprawdzenie usługi pokazuje, że nie jest uruchomiona: usługa isc-dhcp-server status Status serwera ISC DHCP: dhcpd nie działa

W rzeczywistości interfejs wlan0 nie otrzymuje adresu IP i dlatego serwer dhcp się nie uruchamia.

Postępuję zgodnie z instrukcjami w linku poniżej, ale to nie rozwiązuje problemu: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- access-pointrouter-part-3b /

Następnie postępuję zgodnie z instrukcjami w tym poście: 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

Po ponownym uruchomieniu serwer DHCP działa.

Możliwe też inne rozwiązanie, którego nie testuję: ups, nie mam wystarczającej reputacji, aby opublikować więcej niż 2 linki.

esa1966
źródło
0

Miałem ten sam problem. wlan0 traci jakoś statyczny adres IP, gdy uruchamia się serwer dhcp. Edytuj / etc / default / ifplugd i zmień na:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
Stef
źródło
Ta odpowiedź jest aktualna! nie wiem, dlaczego przegłosowano
flotto
Miałem bootowanie pi i czasami kończyło się to adresem 169.xx.xx.xx, a czasem statycznym adresem, który chciałem. Zostało to zrobione, aby niezawodnie uzyskać adres statyczny. Dzięki @Stef!
Peter Bagnall,
0

Alternatywnie, możesz stworzyć mini-usługę, która ponownie uruchomi wlan0, upewniając się, że startuje on podczas rozruchu przed hostapd i isc-dhcp-server.

Utwórz nowy skrypt /etc/init.d/wlan0-restart

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

o następującej treści:

#!/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

Następnie wykonaj następujące polecenia:

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

Uruchom ponownie i sprawdź, czy wlan0 ma swój statyczny adres IP i czy isc-dhcpd-server działa:

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
źródło