Создание многофункциональной точки доступа из старого компьютера

Материал из Викиадмин
Версия от 11:51, 22 ноября 2018; Aleksdem (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к навигации Перейти к поиску

В наличии старый компьютер. В данном примере: Celeron с частотой 566Мгц и память в общей сложности 192МБ. Можно было бы из него сделать домашнюю интернет-машинку, но таковых устройств более чем хватает. А вот сделать что-то многофункционально-незаметное можно. Для этого системного блока была выбрана ОС Ubuntu. В качестве карты Wi-Fi была выбрана D-Link DWL-G510. (Сейчас эту роль выполняет ASUS EEE PC 701)

На такой точке доступа легко настроить IPv6 и уже иметь доступ извне, если провайдер не дает реальный IP. К тому же некоторые торрент-трекеры уже сейчас поддерживают IPv6. Точка доступа

Настраиваем сетевые карты

Для того, чтобы у нас этот компьютер стал неплохой точкой доступа, нам нужно будет добавить в него Wi-Fi карточку и поднять две службы - hostapd и dhcpd. Первая служба станет самим сервисом, превращающим машинку в точку доступа. А вторая будет раздавать IP присоединившимся по Wi-Fi компьютерам. Начнем с настроек сетевых карт. Итак, смотрим файл /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.150
        netmask 255.255.255.0
        gateway 192.168.0.1
        post-up iptables-restore < /etc/iptables.up.rules

auto wlan0
iface wlan0 inet static
    address 10.0.0.1
    netmask 255.255.255.0

Комментарии тут, по понятным причинам, просто убраны. Итак, у нас есть внутренний интерфейс lo. Его мы трогать не будем. Интерфейс eth0 - его в данном случае мы настроили статично с IP 192.168.0.150 и шлюз указан 192.168.0.1 (так устроена сеть в данном месте). Ну и последний в нашем списке -‘wlan0. Это та самая беспроводная Wi-Fi-карта. Ей мы так же присвоили статичный IP и отдали в подсети заслуженное первое место - 10.0.0.1.

Как создать точку доступа wifi. Установка Hostapd

Теперь давайте поставим hostapd. В Ubuntu это можно сделать буквально одной командой:

apt-get install hostapd

И теперь давайте поправим его конфигурацию. Текст настройки мы разместим в /etc/hostapd/hostapd.conf:

wpa=3
rsn_pairwise=CCMP
wpa_passphrase=password
driver=nl80211
interface=wlan0
hw_mode=g
channel=1
ssid=wikiadmin.net
#необязательная часть
#macaddr_acl=1 #включаем фильтрацию по MAC, это необязательная опция
#accept_mac_file=/etc/hostapd/accept #указываем файл со списком разрешенных MAC

Если надоедают надписи типа WPA: group key handshake completed (RSN), то добавьте опцию

wpa_group_rekey=0

Если нужно скрыть точку, добавьте

ignore_broadcast_ssid=1

Файл /etc/hostapd/accept просто содержит MAC адреса. Например, так:

00:01:01:01:10:01
00:11:11:41:6b:cc
11:05:a3:e4:12:11

В конфиг-файле следует обратить внимание на строчку wpa_passphrase - здесь вы укажите свой пароль к сети. В строке ssid вам нужно будет указать название своей сети, которое будет видно с клиентов. Остальные строчки можно оставить как есть. И советую не забыть добавить этот конфиг в /etc/init.d/hostapd. Для этого просто откройте файл и строчку DAEMON_CONF= отредактируйте в DAEMON_CONF=/etc/hostapd/hostapd.conf.

Если нужно ограничить скорость Wi-Fi, достаточно отдать такую команду:

   iwconfig wlan0 rate 1M

wlan0 - это ваш интерфейс точки доступа. 1М - то самое ограничение hostapd список клиентов

Напрямую посмотреть нельзя, поэтому либо в логи, либо смотрим лизинг у DHCP, настройку которого дальше и рассмотрим.

Настройка DHCPD в Ubuntu

Для более простых систем рекомендую поставить dnsmasq, этого вполне хватит, если вы не собираетесь поддерживать свои зоны

Теперь мы позаботимся о том, чтобы подключающиеся устройства получали нужный им IP и другие сетевые параметры. Этим у нас займется DHCPD. Для начала установим его:

   apt-get install dhcp3-server

Несмотря на то, что на данном сайте уже есть примеры настройки DHCPD, думаю не лишним будет еще раз их посмотреть. Они располагаются в файле /etc/dhcp3/dhcpd.conf:

default-lease-time 3600;
 max-lease-time 9000;
 authoritative;
 log-facility local7;
 subnet 10.0.0.0 netmask 255.255.255.0 {
 interface wlan0;
 range 10.0.0.2 10.0.0.254;
 option domain-name-servers 192.168.0.252, 192.168.0.253;
 option routers 10.0.0.1;
 option broadcast-address 10.0.0.0;
}

Тут все просто - мы раздаем адреса с 10.0.0.2 по 10.0.0.255. DNS сервера вы можете посмотреть у себя в /etc/resolv.conf. И не забудьте указать в качестве шлюза свою точку 10.0.0.1. Как раз строка option routers за это и отвечает. Если все сделали, то советую зайти еще в файл /etc/default/dhcp3-server. И здесь обязательно укажите, какой интерфейс будет раздавать IP. Это необходимо поправить в сл. строке:

INTERFACES="wlan0"

Настройка трансляции пакетов

Если вы все уже настроили, попробовали запустить и ошибок не возникло, то теперь самое время еще и настроить трансляцию адресов. Для этого стоит зайти в файл /etc/sysctl.conf и найти там строчку:

net.ipv4.ip_forward=1

Если в этой строке стоит комментарий в начале, уберите его. Можно конечно сразу эти данные передать системе, чтобы не перегружать. Это просто сделать командой:

sysctl -w net.ipv4.ip_forward="1"

И теперь зададим для iptables некоторое правило, которое будет транслировать пакеты из внутренней сети во внешнюю:

/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

Не забудьте его сохранить, чтобы оно подключалось при каждой загрузке системы. И теперь все, можете перезапустить систему, чтобы проверить корректность поднятия сервисов и пробуйте подключиться с клиента. Если возникают какие-либо ошибки, не забывайте это смотреть в /var/log/messages как посмотреть список подключенных wifi устройств

Можно просто получить список командой:

iw dev wlan0 station dump

Получаем

Station 48:5b:39:be:35:ff (on wlan0)
       inactive time:  4 ms
       rx bytes:       7627355
       rx packets:     36780
       tx bytes:       32593033
       tx packets:     49771
       tx retries:     19017
       tx failed:      9
       signal:         -69 dBm
       signal avg:     -69 dBm
       tx bitrate:     36.0 MBit/s
       authorized:     yes
       authenticated:  yes
       preamble:       long
       WMM/WME:        no
       MFP:            no

и ещё несколько таких же. Второй вариант

arp -a

Получаем что-то такое

android-decb5 (10.0.0.47) at 98:d7:28 [ether] on wlan0
mts_4G (192.168.8.1) at 8e:4b:ac [ether] on eth1
Android_77907 (10.0.0.23) at 93:5f:93 [ether] on wlan0
notebook (10.0.0.37) at <incomplete> on wlan0
TV (10.0.0.2) at be:35:ff [ether] on wlan0

тут, правда, все интерфейсы, но ничего не мешает сделать grep wlan0

Если постоянно обрывается связь

Мой провайдер мало того, что нагло врёт по поводу скорости, к тому же часто обрывает связь. Если это происходит ночью, то до утра роутер ничего не качает и не выполняет другие операции, связанные с интернетом. Поэтому пришлось написать небольшой скриптик, который пересоединяет сеть в случае, если пингуемый хост недоступен. В качестве примера выбран хост 8.8.8.8.

#!/bin/bash
if ping -c 2 wikiadmin.net >> /dev/null
then
echo "Internet is connected"
exit 0
else
echo "Restart internet"
poff
killall -9 pppd
pon dsl-provider
fi

Этого вполне хватило, чтобы сеть работала хоть немного чаще. Ещё бы провайдера научить работать….

Торрент-клиент

Для того, чтобы можно было загружать файлы через torrent, я рекомендую поставить transmission-daemon. Корректно и быстро работает, а так же имеет хороший веб-интерфейс. Его установка и настройка описана на странице Torrent-клиенты. Учтите, что для разных дистрибутивов Linux есть отличие в расположении конфигурационного файла.

Прокси-сервер

Если связь с интернетом не очень, почему бы не добавить кеширующий прокси? Настройка того же SQUID у нас описана. Плюсы: кеш, резалка рекламного контента, статистика.

Музыкальный сервер

Если сервер спрятан, никому не мешает, а дома у вас завалялась лишняя звуковая система - почему бы не использовать этот сервер для того, чтобы слушать музыку? Для этого вы можете поставить сервис MPD. Плюс в том, что управляется он по сети с различных клиентов, в том числе и для мобильных устройств.

Система видеонаблюдения

При наличии веб-камеры, поддерживаемой в Ubuntu, вы можете поставить сервис motion, который позволяет не только видеть данные в камеры, но и записывать при наличии движений. Данный сервис имеет так же хороший веб-интерфейс. Однако хотелось бы предупредить, что процесс кодирования видео может быть тяжеловат для старой техники (для нетбука Asus EEE PC 701 c 1Ггц процессором и 512МБ памяти этот сервис практически незаметен).

Сервер виртуальных машин

Вы можете в любое время на данной машине поднять ещё одну параллельно с любой нужной вам операционной системой. Для этого вы можете использовать Xen, KVM или Qemu.