05 июня 2011

Как раздать интернет через Wi-Fi в Linux

В этой статье описан один из возможных вариантов настроек для раздачи интернета через точку доступа Wi-Fi. О том как настроить точку доступа Wi-Fi я писал здесь и дополнил описание здесь. Раздавать интернет будем из консоли, без использования Network Manager и прочих GUI интерфейсов на ОС Debian Squeeze.

А собственно что нужно для раздачи интернета? По-минимуму немного: настроить два интерфейса, DHCP-сервер, трансляцию адресов (NAT) и разрешить пересылку пакетов между интерфейсами.

Начнем по-порядку. Настроим два интерфейса - один из них (скажем eth0) подключен к провайдеру интернета, а на втором (скажем wlan0) организована точка доступа Wi-Fi.

Если провайдер назначает IP-адрес через DHCP, то интерфейс eth0 должен быть настроен следующим образом в файле /etc/network/interfaces:
auto eth0
iface eth0 inet dhcp
При этом в системе должен быть установлен пакет isc-dhcp-client. При необходимости, найти настройки DHCP-клиента можно в файле /etc/dhcp/dhclient.conf.

Если же адрес назначается провайдером статически (например реальный или т.н. "белый" адрес), то настройка eth0 должна выглядеть следующим образом:
auto eth0
iface eth0 inet static
 dns-nameservers xx.xx.xx.xx # <-- адрес DNS сервера
 address xx.xx.xx.xx # <-- IP адрес
 netmask xx.xx.xx.xx # <-- маска подсети
 gateway xx.xx.xx.xx # <-- адрес шлюза
Также при статическом назначении адреса на интерфейсе подключенном к провайдеру, необходимо прописать адреса DNS серверов в файле /etc/resolv.conf, в следующем виде:
nameserver xx.xx.xx.xx # <-- адрес основного DNS сервера
nameserver xx.xx.xx.xx # <-- адрес резервного DNS сервера
После внесения изменений в настройки интерфейса eth0 необходимо последовательно выполнить в командной строке:
sudo ifdown eth0
sudo ifup eth0
Если провайдер назначает адрес через PPPoE, то необходимо настроить PPPoE подключение. Для упрощения вариант с PPPoE здесь не рассматривается.

Теперь настроим интерфейс wlan0, на котором организована точка доступа Wi-Fi. Для этого используем подсеть 10.0.0.0/29, это позволит подключить до пяти устройств к точке доступа. В файле /etc/network/interfaces настройки для wlan0 будут выглядеть следующим образом:
auto wlan0
iface wlan0 inet static
  address 10.0.0.1
  netmask 255.255.255.248
Чтобы автоматически назначать сетевые настройки для устройств, подключающихся к точке доступа, используем DHCP-сервер. Для его установки надо выполнить в командной строке:
sudo apt-get install isc-dhcp-server
Минимальные настройки для DHCP-сервера пропишем в /etc/dhcp/dhcpd.conf следующим образом:
ddns-update-style none;
option domain-name-servers xx.xx.xx.xx; # <-- адрес основного DNS сервера
option domain-name-servers xx.xx.xx.xx; # <-- адрес резервного DNS сервера
default-lease-time 3600;
max-lease-time 86400;
authoritative;
log-facility local7;
deny bootp;

subnet 10.0.0.0 netmask 255.255.255.248 {
 range 10.0.0.2 10.0.0.6;
 option routers 10.0.0.1;
 option subnet-mask 255.255.255.248;
}
Чтобы DHCP-сервер обрабатывал запросы только на интерфейсе wlan0, необходимо в файле /etc/default/isc-dhcp-server прописать:
INTERFACES="wlan0"
После внесения изменений в настройки DHCP-сервера надо его перезапустить, выполнив в командной строке:
sudo /etc/init.d/isc-dhcp-server restart
Так как через DHCP-сервер раздаются так называемые "серые" адреса, то для выхода в интернет понадобится "спрятать" их за адресом, полученным от провайдера. Для этого необходимо настроить трансляцию адресов-NAT на интерфейсе eth0, подключенному к провайдеру интернета. 

Для этого используем iptables - административный инструмент для управления фильтрацией IP пакетов и трансляцией NAT. Рассмотрим простой вариант с настройками iptables по-умолчанию. По-умолчанию никакие пакеты в iptables не фильтруются, не преобразуются, а также разрешена пересылка пакетов между интерфейсами.

Включить NAT можно двумя способами. Для случая когда IP адрес на eth0 получается динамически и может меняться, NAT включаем следующей командой:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Если IP адрес на интерфейсе eth0 статический, NAT включаем следующей командой:
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xx.xx.xx.xx
Чтобы NAT включался автоматически при загрузке системы, необходимо в файле /etc/rc.local, перед командой exit 0, прописать один из вариантов NAT, без sudo. Например так:
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Хотя по-умолчанию пересылка пакетов между сетевыми интерфейсами в iptables разрешена, необходимо включить пересылку пакетов на уровне ядра. Для этого достаточно в командной строке выполнить следующую команду:
sudo sysctl -w net.ipv4.ip_forward=1
Для того чтобы пересылка пакетов между сетевыми интерфейсами активизировалась при загрузке системы необходимо в файле /etc/sysctl.conf раскоментировать или добавить следующую строку:
net.ipv4.ip_forward=1
На этом минимальная настройка раздачи интернета через Wi-Fi завершена. Пользуемся, радуемся.

Понравилась статья? Подпишись на этот блог! 

Также можно почитать:

3 коммент.:

mwy 2 июля 2013 г. в 18:37  

кривыми руками после инструкций сломал wi-fi полностью =(

Jimmy 16 августа 2013 г. в 18:49  

У меня adsl-соединение (модем в режиме бридж). Хочу раздать интернет по wi-fi. Ip-динамическое. Подскажите как организовать...

Сергей Афонькин 16 августа 2013 г. в 21:55  

Jimmy, в этой статье описан вариант, который вам подойдет, если вы будете раздавать интернет с помощью компьютера на котором установлен debian и есть два интерфейса ethernet и wifi.

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

  © Blogger template Blue Surfing by Ourblogtemplates.com 2008

Наверх