hostapd e ordem de inicialização dhcpcd

1

Estou usando o Raspberry Pi como um ponto de acesso WiFi.

Quando inicio manualmente hostapd seguido por dhcpcd , funciona como um encanto. Mas quando eu reinicio o host, dhcpcd começa primeiro e não consigo entender que wlan0 deve ser usado como um cliente. E depois que hostapd não pode acessar wlan0 porque dhcpcd já está usando.

Existe uma maneira de influenciar a ordem desses serviços?

    
por Anthony Ananich 16.11.2017 / 17:53

1 resposta

1

Eu também tive esse problema. Eu criei um pequeno script que irá lidar com esta ordem e também automatizar todas as configurações que você fez manualmente.

Você só precisa instalar dnsmasq e hostapd . Não ative ou desative nenhum serviço. Será cuidado.

eth-to-wifi-route.sh

#!/bin/bash

# Share Eth with WiFi Hotspot
#
# This script is created to work with Raspbian Stretch
# but it can be used with most of the distributions
# by making few changes. 
#
# Make sure you have already installed 'dnsmasq' and 'hostapd'
# Please modify the variables according to your need
# Don't forget to change the name of network interface
# Check them with 'ifconfig'

ip_address="192.168.2.1"
netmask="255.255.255.0"
dhcp_range_start="192.168.2.2"
dhcp_range_end="192.168.2.100"
dhcp_time="12h"
eth="eth0"
wlan="wlan0"
ssid="Arpit-Raspberry"
psk="arpit1997"

sudo killall wpa_supplicant &> /dev/null
sudo rfkill unblock wlan &> /dev/null
sleep 2

sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t nat -A POSTROUTING -o $eth -j MASQUERADE  
sudo iptables -A FORWARD -i $eth -o $wlan -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i $wlan -o $eth -j ACCEPT 

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

sudo ifconfig $wlan $ip_address netmask $netmask

sudo ip route del 0/0 dev $wlan &> /dev/null
a='route | awk "/${eth}/"'{print $5+1;exit}''
sudo route add -net default gw $ip_address netmask 0.0.0.0 dev $wlan metric $a

echo -e "interface=$wlan \n\
bind-interfaces \n\
server=8.8.8.8 \n\
domain-needed \n\
bogus-priv \n\
dhcp-range=$dhcp_range_start,$dhcp_range_end,$dhcp_time" > /etc/dnsmasq.conf

sudo systemctl restart dnsmasq

echo -e "interface=$wlan\n\
driver=nl80211\n\
ssid=$ssid\n\
hw_mode=g\n\
ieee80211n=1\n\
wmm_enabled=1\n\
macaddr_acl=0\n\
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]\n\
channel=6\n\
auth_algs=1\n\
ignore_broadcast_ssid=0\n\
wpa=2\n\
wpa_key_mgmt=WPA-PSK\n\
wpa_passphrase=$psk\n\
rsn_pairwise=CCMP" > /etc/hostapd/hostapd.conf

sudo systemctl stop hostapd
sudo hostapd /etc/hostapd/hostapd.conf &

Faça o download deste arquivo e coloque-o em /home/pi/

Abra /home/pi/.config/lxsession/LXDE-pi/autostart file

nano /home/pi/.config/lxsession/LXDE-pi/autostart

Adicione a última linha:

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
@point-rpi
sudo bash /home/pi/eth-to-wifi-route.sh

Certifique-se de fornecer o caminho completo para o arquivo. E pronto. Agora reinicie para ver as alterações

sudo reboot

Isso está hospedado no Github aqui

    
por 16.11.2017 / 19:17