Дано:
Компьютер - raspberry
Система - raspbian основан на debian 7
Задача:
Нужно сделать из raspberry точку доступа.
Решение:
В интернете полно инструкций по этому поводу, например одна из них http://www.rpiblog.com/2012/12/turn-raspberry-pi-into-wireless-access.html.
Алгоритм такой:
1) Установить пакет hostapd - демон создающий wifi точку доступа, добавить в автозагрузку, настроить:
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=CCMP2) Установить dhcp сервер udhcpd или isc-dhcp-server, добавить в автозагрузку, я выбрал isc-dhcp-server и настроил его:
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) Настроить интерфейсы, чтобы поднимались при старте:
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:
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 автоматически не поднимается при старте системы или как диагностировать проблему?