Домашний маршрутизатор и беспроводная точка доступа из старого ноутбука

Дома остался винтажный ноутбук COMPAQ Armada m300 (модель 1999 годаCompaqArmadaM300), в наследство от старой работы. Когда-то я держал на нем маленький веб-сервер и прочие полезные вещи, но жесткий диск приказал долго жить. Информацию удалось спасти. После этого случая сайт переехал на новый хостинг, а машинка валялась среди прочего компьютерного хлама, пока я не решил поднять дома точку доступа WiFi – очень уж неудобно по комнате с проводами таскаться. Покупка приличного WiFi-роутера стоит вполне заметных денег, а тут есть все необходимые компоненты за $0.00, осталось где-то взять жесткий диск и настроить систему. Вместо жесткого диска взял CompactFlash (CF) 8GB и переходник на 44-pin IDE, захотелось тишины.

В качестве системы была выбрана Ubuntu 8.04LTS Server. Карточка WiFi тоже нашлась, ASUS Spacelink WL-100, 802.11b. При интернет-подключении DSL 5Mbit ее должно быть достаточно.

Установка базовой системы

Как устанавливать систему рассказывать не буду – делается это тривиально. Не устанавливаем никих дополнительных компонентов вроде LAMP, пока они нам не нужны. Диск бить на отдельные разделы тоже большого смысла не имеет. Я все-таки сконфигурирровал swap 384MB (при RAM 320MB), как предложил мастер установки, так, на всякий случай.

$ sudo fdisk -l

Disk /dev/sda: 8069 MB, 8069677056 bytes
255 heads, 63 sectors/track, 981 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00012eb6
.
Device Boot Start End Blocks Id System
/dev/sda1 * 1 933 7494291 83 Linux
/dev/sda2 934 981 385560 5 Extended
/dev/sda5 934 981 385528+ 82 Linux swap / Solaris

После перезагрузки устанавливаем OpenSSH сервер для удаленного доступа:

$ sudo apt-get install openssh-server

Не забываем обновить систему:

$ sudo apt-get update
$ sudo apt-get upgrade

Видим, что все оборудование распознано, в том числе и PCMCIA:

$ lspcmcia
Socket 0 Bridge: [yenta_cardbus] (bus ID: 0000:00:04.0)
Socket 0 Device 0: [orinoco_cs] (bus ID: 0.0)

Беспроводная карточка оказалась с чипом Prism I. Проверяем, может ли она работать в режиме точки доступа:

$ sudo iwconfig eth1 mode master
Error for wireless request "Set Mode" (8B06) :
SET failed on device eth1 ; Operation not supported.

Опа! Карточка не подходит, придется искать новую. Нашлась еще EUSSO GL245401, 802.11g. Проверим ее чуть позже.

Оптимизируем работу системы с Flash-диском. Сократим количество операций записи и изменим методы работы ядра с диском.

1. Отключаем обновление аттрибута времени доступа к файлу, в файле /etc/fstab необходимо изменить  параметр relatime на noatime. Это сэкономит огромное количество операций записи.

2. Каталог /tmp монтируем в RAM-диск, добавляем в /etc/fstab такую строчку:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

Файл /etc/fstab должен выглядеть примерно так:

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
# /dev/sda1
UUID=0921806f-0177-4221-9e88-b9a931a54712 / ext3 noatime,errors=remount-ro 0 1
# /dev/sda5
UUID=6a9ea02a-ab4b-4583-83d0-539d237cdee0 none swap sw 0 0

3. Меняем шедулер ввода-вывода. По-умолчанию работает cfq, но для flash-диска больше подходит deadline, при установке система распознала тип диска и сама поставила наиболее походящий, менять не будем.

$ cat /sys/block/sda/queue/scheduler
noop anticipatory [deadline] cfq

Если бы система поставила cfq, ее бы пришлось поправить (команда от root’а):
# echo deadline > /sys/block/sda/queue/scheduler

Эту команду стоит добавить в /etc/rc.local, до строки exit 0:

$ sudo nano /etc/rc.local
#!/bin/sh -e
echo deadline > /sys/block/sda/queue/scheduler
exit 0

После перезагрузки изменения вступят в силу. Ввод-вывод будет по-прежнему тормозить, но уже не так сильно.

Настройка беспроводного адаптера

Всталяем карту в слот PCMCIA. Проверяем беспроводную карту в системе:

$ lspcmcia
Socket 0 Bridge: [yenta_cardbus] (bus ID: 0000:00:04.0)
CardBus card -- see "lspci" for more information
$ lspci
...
01:00.0 Ethernet controller: Atheros Communications Inc. AR5212/AR5213 Multiprotocol MAC/baseband processor (rev 01)

Для чипсета Atheros есть драйверы Madwifi, лучше всего скачать последнюю версию и скомпилировать в системе. Файлы проекта Madwifi находятся на Sourceforge. Итак, приступим:

$ wget http://sourceforge.net/projects/madwifi/files/madwifi/0.9.4/madwifi-0.9.4.tar.gz/download
$ tar -zxvf madwifi-0.9.4.tar.gz
$ sudo apt-get install build-essential linux-headers-$(uname -r)
$ cd madwifi-0.9.4
$ make
$ sudo make install

Мы планируем использовать карточку в режиме точки доступа, создадим файл /etc/modprobe.d/madwifi с параметрами перехода в режим “Master” при старте сетевой подсистемы:
$ sudo nano /etc/modprobe.d/madwifi
options ath_pci autocreate=ap

Запустим драйвер без перезагрузки компьютера:
$ sudo modprobe ath_pci

В системе должен появиться адаптер ath0.

Настройка сети

Теперь нам необходимо настроить сетевые интерфейсы, установить и настроить сервер DHCP, включить и настроить маршрутизацию.

Конфигурация сетевых интерфейсов:
$ sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
#
# The loopback network interface
auto lo
iface lo inet loopback
#
# The primary network interface
auto eth0
iface eth0 inet dhcp
#
# Second network interface (PCMCIA)
auto ath0
iface ath0 inet static
address 192.168.0.254
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
wireless-mode master
wireless-essid ratnet
# downgrade interface for stability
wireless-rate 11M

На сайте Madwifi Project есть достаточно подробная информация по установке и настройке драйверов Madwifi для разных дистрибутивов. Я делал по-старинке ;)

Включим в системе пересылку пакетов (packet forwarding):
$ sudo nano /etc/sysctl.conf
...
net.ipv4.ip_forward=1

Установим и настроим DHCP сервер, для внутренней сети выбрал диапазон 192.168.0.200 -192.168.0.250;
$ sudo apt-get install dhcp3-server
$ sudo nano /etc/dhcp3/dhcpd.conf
ddns-update-style none;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.250;
option domain-name-servers 80.232.169.11, 195.122.12.241;
option domain-name "ratnet.dom";
option routers 192.168.0.254;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}

$ sudo /etc/init.d/dhcp3-server start

Теперь заставим NAT работать с помощью iptables:
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -j MASQUERADE

Сохраним настройки iptables:
$ sudo sh -c "iptables-save > /etc/iptables.conf"

Пропишем их восстановление при старте сетевых интерфейсов:
$ sudo nano /etc/network/interfaces
...
# iptables rules
pre-up iptables-restore < /etc/iptables.conf

$ sudo /etc/init.d/networking restart

У нас есть незащищенная беспороводная точка доступа с выходом в интернет. Как настроить безопасность – смотрите в интернете, тот же WEP или WPA прикручиваются достаточно просто.

У себя оставлю нешифрованную сеть для оптимизации канала. Секретные данные в открытом виде я не передаю. Точка расположена на последнем этаже многоэтажки, если кто-то из соседей подцепился, мне не жалко. Особо наглые просто блокируются по MAC.

10 Comments

[…] А вот тот же тест, но компьютер подключен не напрямую, а как обычно, через самодельный беспроводной роутер 54Мбит: […]

ВладимирMay 1st, 2010 at 20:23

Человече! Я уже убился поднимать точку доступа на 900-м еже, под 9.10 убунтой, помогите!

Режим AP поднимается, но инернет раздать никак.
Еще раз поднял из архива чистую систему и делал по вашей указке тут – полный абандон. Линуксоиды на форумах эту проблему вобще даже не пытаются рассмотреть (

eee@eee-laptop:~$ iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wifi0 no wireless extensions.

wimax0 no wireless extensions.

ath1 IEEE 802.11g ESSID:”” Nickname:””
Mode:Master Channel:0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power:17 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=0/70 Signal level=-96 dBm Noise level=-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Надо с wimax0 раздать интернет на ath1

Итог – к ноуту устройства подключаются, но пинг не идет ни в какую сторону…. dhcp айпишники не присваевает.. Куда копнуть?

Плюшевый КрысMay 1st, 2010 at 23:05

$ cat /proc/net/wireless ?
$ lspci ?
$ tail /var/log messages?
$ sudo /etc/init.d/dhcp3-server status ?

Какой драйвер WiFi установлен?

[…] получилось, что на моем домашнем маршрутизаторе образовался дополнительный диск объемом 200ГБ, […]

[…] 1Mbit, но при этом по тестам скорость соответствует 54Mbit (WiFi AP 54Mbit). И этот параметр в адаптере не […]

[…] сохранять и восстанавливать правила iptables было описано ранее. […]

[…] их при старте интерфейса, я описывал здесь: “Домашний маршрутизатор и беспроводная точка доступа и…” Подробнее настройка контейнеров OpenVZ за NAT описана […]

EugeneJuly 30th, 2013 at 23:41

…Как устанавливать систему рассказывать не буду – делается это тривиально… – как? CD нет, с USB тоже не грузится. В какую дырку ему систему заливать?

Плюшевый КрысJuly 31st, 2013 at 00:59

В поставке шел отделяемый модуль наподобие дока с флопиком, DVD и репликатором портов. А уж поставить систему с CD/DVD много ума не надо.

ВладимирMarch 9th, 2016 at 14:36

Есть хороший мануал (http://tinycorelinux.sytes.net/) по сборке нечто подобного на TCL (Tiny Core Linux).
– Интернет по wi-fi раздает, торренты качает, с мобилками и USB-модемами дружит, умещается на
карте памяти 64Мб и заводится на древних мамонтах с 128RAM.

Leave a comment

Your comment