Programaticamente alternar entre rede sem fio ad-hoc e regular

2

Estou usando um Raspberry Pi para criar um pequeno dispositivo autônomo. Ao clicar em um botão, quero configurar uma rede ad-hoc para que um usuário possa se conectar à rede, usar uma ferramenta de configuração baseada na Web e, em seguida, o dispositivo ingressará na rede sem fio especificada na saída. Eu tenho todo o software pronto, mas meu conhecimento de redes Linux não é ótimo. Estou usando o Raspbian Jessie - setembro de 2016.

Aqui está o que proponho fazer para iniciar a rede ad-hoc.

Altere /etc/network/interfaces para:

auto lo
iface lo inet loopback

iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.0.1
    netmask 255.255.255.0
    wireless-channel 0
    wireless-essid DEVICE
    wireless-mode ad-hoc

Embora eu não ache que deva ser usado neste ponto, meu /etc/wpa_supplicant/wpa_supplicant.conf contém:

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

Eu também tenho isc-dhcp-server em execução para atribuir endereços IP quando o usuário se conecta. O conteúdo de /etc/dhcp/dhcpd.conf é:

ddns-update-style none;
option domain-name "DEVICE";
default-lease-time 600;
max-lease-time 7200;

authoritative;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.2 192.168.0.255;
    option broadcast-address 192.168.0.255;
}

Quando chegar a hora de voltar para a rede normal, altere /etc/network/interfaces para:

auto lo
iface lo inet loopback

iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

Altero /etc/wpa_supplicant/wpa_supplicant.conf para:

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="{{ssid}}"
    psk="{{key}}"
}

Se eu fizer essas alterações manualmente e reinicializar o dispositivo, elas funcionarão conforme o esperado. No entanto, não consigo descobrir qual sequência de comandos fará com que a nova configuração seja aplicada.

Eu tentei várias combinações de:

sudo ifdown --force wlan0 && sudo ifup wlan0 ,

sudo service isc-dhcp-server stop

e

sudo service networking restart .

Ou eu mantenho a configuração antiga ou a rede sem fio é perdida até eu reiniciar.

Meus arquivos de configuração parecem corretos tanto para rede ad-hoc quanto para rede regular? Qual sequência de comandos eu uso para alternar entre eles, iniciando o dhcp quando no modo ad-hoc e parando o dhcp quando no modo regular?

    
por Josh 12.10.2016 / 22:33

1 resposta

2

Você pode tentar usar a configuração em vez de nomes de interface, conforme explicado aqui .

Seu arquivo interfaces deve fornecer descrições para ambos os casos,

   auto lo
   iface lo inet loopback

   iface eth0 inet dhcp

   auto wlan0
   allow-hotplug wlan0

   iface adhoc inet static
    address 192.168.0.1
    netmask 255.255.255.0
    wireless-channel 0
    wireless-essid DEVICE
    wireless-mode ad-hoc

   iface normal inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

adhoc e normal são os nomes das configurações de rede.  Para ativar / desativar uma configuração que você deve usar, interface = configuration como argumento para ifupdown ,

  # ifup wlan0=adhoc

  # ifdown wlan0=adhoc
    
por 13.10.2016 / 01:01