Создание многофункциональной точки доступа из старого компьютера
В наличии старый компьютер. В данном примере: 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.