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

ранее: "Точка доступа Wi-Fi"далее: "Ретранслятор. Радиомост"

Обсуждение темы ещё не открыто. Вы можете быть первым.


Оставить комментарий

Имя:

Сообщение: