DHCP-сервер и NAT
Чтобы "раздать" интернет при помощи устройства под управлением Tiny Core Linux одного запущенного hostapd недостаточно. Необходимо как минимум связать два сетевых инетрфейса. Один смотрящий в интернет, другой наш беспроводной wlan0 и задействовать трансляцию сетевых адресов NAT. Для удобства, чтобы в каждом устройстве не прописывать вручную настройки для работы в сети роутера, установим и запустим DHCP+DNS сервер. С задачами определились, теперь возьмемся за дело.
Практически во всех Linux-подобных системах, по соображениям безопасности транзит сетевых пакетов между различными сетевыми интерфейсами отключён. Нам же необходимо наоборот, "пробросить" интернет от одной сети (WAN) в нашу беспроводную. Разрешаем форвардинг:
sudo sysctl -w net.ipv4.ip_forward=1
Далее для трансляции сетевых адресов необходимо установить iptables. Вообще iptables - очень мощный и гибкий системный фаерволл для работы с сетевыми пакетами, их фильтрацией и перенаправлением. Достаточно сложен для понимания новичку, но я вам советую потратить день, неделю, месяц на изучение iptables, и вы поймете, насколько это удобный и функциональный сетевой инструмент. Но а пока что:
tce-load -wi iptables.tcz
Включаем маскардинг для всех пакетов приходящих на WAN интерфейс из нашей беспроводной сети:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Конкретно в моём примере интернет приходит на сетевой интерфейс eth0. Именно его я и указал в правиле iptables. Для вашего случая это может быть и ppp0 если у вас модемное подключение к интернету, о котором мы поговорим чуть позже. А может быть и wlan1 - если ваша точка доступа работает в режиме ретранслятора беспроводной сети.
Следующий шаг - назначение сетевого адреса нашей точке доступа. Без этого беспроводные клиенты не будут занть, куда слать сетевые пакеты.
sudo ifconfig wlan0 192.168.1.1 netmask 255.255.255.0
В данном случае IP адрес выбирается из числа серых адресов. Он будет задавать диапазон сетевых адресов для устройств вашей локальной сети. Я выбрал 192.168.1.1. Сетевая маска 255.255.255.0 говорит о том, что моя подсеть может содержать до 256 устройств с диапазоном адресов 192.168.1.0-255.
В принципе после этих нехитрых настроек у нас уже должен появиться интернет на устройствах с прописаными вручную статическим IP-адресом, адресом шлюза и адресом DNS-сервера. Но согласитесь, не очень то удобно каждый раз лезть в настройки. К тому же есть вероятность сетевой коллизии - совпадение двух и более IP адресов у разных клиентов. Намного проще отдать инициативу раздачи адресов шлюза, DNS-сервера и непостедственно самого IP нашему роутеру. Для этого мы поднимем DHCP+DNS сервер dnsmasq.
tce-load -wi dnsmasq.tcz
И по старой доброй традиции файл конфигурации отправляем в /home/conf/dnsmasq.conf, а запускающий скрипт будет такого плана:
/usr/local/etc/init.d/dnsmasq
#!/bin/sh
start() {
if [ ! -e /var/run/dnsmasq.pid ]; then
dnsmasq -C /opt/conf/dnsmasq.conf
fi
}
stop() {
killall -2 dnsmasq 2>/dev/null
if [ -e /var/run/dnsmasq.pid ]; then
rm /var/run/dnsmasq.pid
fi
}
restart(){
if pidof dnsmasq >/dev/null; then
stop && start
else
start
fi
}
status(){
if [ -f /var/run/dnsmasq.pid ]; then
echo "dnsmasq daemon is running"
exit 0
else
echo "dnsmasq daemon is not running"
exit 1
fi
}
case $1 in
start) start;;
stop) stop;;
restart) restart;;
status) status;;
*) echo "Usage $0 {start|stop|restart|status}"; exit 1
esac
Осталось создать свой минимальный конфиг всего из трёх строк с которым dnsmasq будет гарантировано работать:
/opt/conf/dnsmasq.conf
bind-interfaces
interface=wlan0
dhcp-range=192.168.1.2,192.168.1.16
Можно углубиться в настройки и отредактировать конфигурационный файл на примере рускоязычной инструкции, либо воспользоваться очень хорошей статьей.
Вносим наш dnsmasq в скрипт автозапуска:
/opt/bootlocal.sh
...
sudo /usr/local/etc/init.d/dnsmasq start
...
Бэкап. Рестарт. И после загрузки Tiny Core Linux наслаждаемся беспроводным интернетом.
sudo filetool.sh -b
sudo reboot
Обсуждение темы ещё не открыто. Вы можете быть первым.
Оставить комментарий