LinuxForum.Fans
Тема

raspberry не поднимает wlan0 при старте

Автор: aivs 2 сообщений 2524 просмотров
#334158

Дано:
Компьютер - raspberry
Система - raspbian основан на debian 7

Задача:
Нужно сделать из raspberry точку доступа.

Решение:
В интернете полно инструкций по этому поводу, например одна из них http://www.rpiblog.com/2012/12/turn-raspberry-pi-into-wireless-access.html.
Алгоритм такой:
1) Установить пакет hostapd - демон создающий wifi точку доступа, добавить в автозагрузку, настроить:

text
pi@raspberrypi ~ $ cat /etc/hostapd/hostapd.conf 
interface=wlan0
driver=rtl871xdrv
ssid=ZME-Chemodan
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

2) Установить dhcp сервер udhcpd или isc-dhcp-server, добавить в автозагрузку, я выбрал isc-dhcp-server и настроил его:

text
pi@raspberrypi ~ $ cat /etc/dhcp/dhcpd.conf 
#
# Sample configuration file for ISC dhcpd for Debian
#

# have support for DDNS.) ddns-update-style none;

option domain-name-servers 8.8.8.8, 8.8.4.4;

default-lease-time 600; max-lease-time 7200;

# Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7;

# This is a very basic subnet declaration. subnet 192.168.3.0 netmask 255.255.255.0 { range 192.168.3.2 192.168.3.10; option routers 192.168.3.1; }

3) Настроить интерфейсы, чтобы поднимались при старте:

text
pi@raspberrypi ~ $ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

iface eth0 inet dhcp

# Wlan0 not auto start from /etc/network/interface, moved to /etc/init.d/isc-dhcp-server #auto wlan0 iface wlan0 inet static address 192.168.3.1 netmask 255.255.255.0 gateway 192.168.3.1

# NAT not work in /etc/network/interfaces, moved to /etc/init.d/isc-dhcp-server #up iptables-restore < /etc/iptables.ipv4.nat

4) Настроить NAT, чтобы интернет с eth0 шел и на wlan0:

text
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
echo "up iptables-restore < /etc/iptables.ipv4.nat" >> /etc/network/interfaces

Проблемы:
После установки, настройки и запуска, всё работает, но после перезагрузки интерфейс wlan0 сам не поднимается, соответственно dhcp сервер не запускается и NAT не настраивается, т.е. точка доступа не работает.
На данный момент я сделал костыль, в загрузочный скрипт dhcp сервера в начало добавил поднятие wlan0 и настройку NAT, так работает, но проблема не искоренена. Я долго диагностировал проблему, но так и не смог понять почему wlan0 не поднимается при загрузке, а после загрузки вручную поднимается ifup wlan0. Возможно когда начинает подниматься сеть драйвер еще не загружен, как это проверить и главное как определить порядок, что пока драйвера сети не загрузятся, саму сеть не поднимать?

Подскажите почему wlan0 автоматически не поднимается при старте системы или как диагностировать проблему?

#336314

по поводу поднятия wlan0 ни чего сказать не могу, dhcp если ставили из репозитория должен стартовать в деамонизированном режиме, nat у вас и не поднимется, после каждой перезагрузке правила и цепочки iptables сбрасываются, а в /etc/network/interfaces поднятие правил iptables вы закомментировали.

Войдите или зарегистрируйтесь, чтобы ответить.