Falha no IP estático para wlan0


12

Atualmente, estou tentando configurar meu Raspberry Pi como um ponto de acesso hostapdusando as seguintes instruções:

Ponto de acesso sem fio RPI

Infelizmente, meu endereço IP estático se recusa a definir na inicialização. Abaixo está o conteúdo do meu /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

Curiosamente, se eu executar o seguinte comando após a inicialização, tudo funcionará bem:

sudo ifconfig wlan0 192.168.42.1

Alguém vê algum problema flagrante que eu possa estar perdendo? Faz tanto tempo desde que trabalhei com a configuração do Linux que sinto falta de algo fácil.


Como solução rápida, você pode simplesmente executar o ifconfig como um script de inicialização após a conexão das interfaces ou os últimos scripts de inicialização. Você atualizou o firmware para o mais recente? Não atualização de aptidão, mas script raspi para firmware. Isso corrige alguns problemas de interface.
Piotr Kula

@ppumkin - Eu ainda sou um Raspberry Pi n00b. Qual é o comando para executar o script raspi para atualizar o firmware?
Justin Niessner 19/09/13

4
github.com/Hexxeh/rpi-update Vá lá e leia-o. Também após a reinicialização, faça uma atualização do aptitude também.
Piotr Kula

@ppumkin - Eu executei as duas atualizações e nem cuidamos do problema. Parece que vou ter que ir com a solução alternativa por enquanto.
Justin Niessner 19/09/13

O último recurso é tentar queimar o Rasbpian de novo usando a imagem mais recente. Faça as atualizações novamente e veja se isso ajuda. Isso ajudou com os problemas do mi WiFi.
Piotr Kula

Respostas:


4

Meu arquivo de interfaces parece um pouco diferente, mas funciona para mim o tempo todo.

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"

Talvez isso possa ajudar


O IP de transmissão não deve ficar assim: 192.168.1.255o 255 está em último lugar porque, caso contrário, você não transmitirá em todos os dispositivos do seu roteador.
XandruCea

Eu acredito que a peça que faltava na pergunta original era a linha "auto wlan0" acima. Você também pode adicionar um "dns-nameservers 8.8.8.8" (como exemplo) após a linha de transmissão.
joat

2

Desative o ifplugd, o endereço IP estático deve funcionar.


funciona para mim! / etc / default / ifupd, altere auto / all => eth0
flotto

2

Suspeito que o hostapd reinicialize a interface, que é o que causa a falha. Você pode adicionar manualmente o comando ifconfig ao arquivo /etc/rc.local, que o executará automaticamente na inicialização.


2

É definitivamente uma condição de corrida no raspbian jessie, que parou de usar o init baseado no nível de execução em favor de uma abordagem "iniciar tudo ao mesmo tempo" baseada em árvore de pacotes. Eu acho que posso ter contornado colocando estas linhas /etc/rc.local:

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

O tempo dirá, suponho.


OK, o unix certamente tinha níveis de execução e telinit quando trabalhei nele de 1984 a 1992, mas infelizmente só retornei recentemente. Talvez se passarmos por todas as coisas que não são, alguém irá explicar o que realmente é . (Minha correção ainda está funcionando, mas não gosto).
Colin Wray

Decidi que era uma condição de corrida, porque existem dois resultados possíveis da sequência de inicialização e eles ocorrem aleatoriamente.
Colin Wray

Caramba. Peço desculpas por ter interpretado mal esta resposta ao contrário - que foi um problema causado pelo SysV init corrigido com systemd. De qualquer forma, nenhum deles pode impedir uma condição de corrida, pois, por natureza, muitos dos serviços começam a bifurcar e a persistir. A configuração incorreta de qualquer coisa pode causar um problema, e o que eu objeto aqui é a implicação de que o systemd é o culpado por natureza (pode-se argumentar que ele possui uma metodologia melhor para resolver dependências e não simplesmente "inicia tudo ao mesmo tempo") à toa - à toa - mas isso está saindo pela tangente) ...
goldilocks

Eu tenho uma atitude pouco ortodoxa em relação à rede em caixas Linux geralmente, o que me deixa com pouca perspectiva de problemas como esse, e se você tem uma solução que funciona para você, ótimo, mas seu diagnóstico parece muito conjetural (parece uma condição de corrida, caminha como uma condição de corrida ... mas a sombra de um pato não é um pato ... etc).
goldilocks

1
Ao ler meu OP, posso ver por que você pensou que eu estava culpando o sistema diretamente e por que ele provocou um defensor ferrenho como você. Não, acho que o problema deve estar na árvore de dependência de pacotes que eles professam estar seguindo e sobre a qual eu sei nada. De alguma forma, ele deve reconhecer o conflito entre ifup e hostapd.
Colin Wray #

1

Eu estaria tentando adicionar as seguintes linhas logo acima da sua configuração atual da interface sem fio:

auto wlan0
allow-hotplug wlan0

Isso diz à sua configuração de interface para iniciar a interface wlan0 automaticamente e que ela pode ser inserida posteriormente (hotplug).

Você também pode precisar adicionar uma gateway <IP Address>linha para que o roteamento funcione.


Foi isso que fez o truque para mim! Obrigado.
johnboiles

0

Não é necessariamente uma ótima solução, mas como tive problemas com o staticip ao usar o / etc / network / interfaces, passei a usar um IP estático através do meu roteador. Você já tentou desta maneira como alternativa?


0

Sigo o mesmo tutorial para configurar o WAP no meu Pi.

Infelizmente, o serviço dhcp não inicia na inicialização. Após a inicialização, a verificação do serviço mostra que ele não está em execução: status do serviço isc-dhcp-server Status do servidor DHCP do ISC: o dhcpd não está em execução

Na verdade, a interface wlan0 não obtém um endereço IP e é por isso que o servidor dhcp não inicia.

Sigo as instruções no link abaixo, mas isso não resolve o problema: http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless- access-pointrouter-part-3b /

Então, sigo as instruções deste post: 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

Após a reinicialização, o servidor DHCP está em execução.

Também é possível outra solução que eu não teste: oops, não tenho reputação suficiente para postar mais de 2 links.


0

Eu tive o mesmo problema. O wlan0 perde seu endereço IP estático de alguma forma quando o servidor dhcp é iniciado. Edite / etc / default / ifplugd e mude para isso:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"

Esta resposta é correta! não sei por que recusou
flotto

Eu estava usando a bota pi, e às vezes terminava com um endereço 169.xx.xx.xx, e às vezes o endereço estático que eu queria. Isso foi feito para obter com segurança o endereço estático. Obrigado @Stef!
Peter Bagnall #

0

Como alternativa, você pode criar um mini-serviço que reinicie o wlan0, certificando-se de que ele seja inicializado antes do hostapd e do isc-dhcp-server.

Crie o novo script /etc/init.d/wlan0-restart

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

com o seguinte conteúdo:

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

Em seguida, execute os seguintes comandos:

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

Reinicialize e verifique se wlan0 tem seu endereço IP estático e se isc-dhcpd-server está executando:

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.