17 August 2008

Купил новый компьютер? Старый тоже пригодится

Old hardwareDesktop PC's
Так получилось, что я люблю программирование и компьютеры. Поэтому у каждого члена моей семьи было по одному PC. У меня стационарный (Ubuntu), у мамы тоже (Windows XP), а у жены — ноутбук (Windows Vista). Была задача — организовать интернет для всей этой техники. Провайдер мне его отдает по PPTP. Недолго думая (и будучи лентяем) я докупил обычные Ethernet-сетевые карты, вставил на стационарные компы и соединил все компьютеры проводами (если честно, я еще купил WiFi модуль для своего компа, но тупо не смог настроить для ubuntu).

Шло время, потребности росли (особенно потребности в мобильности рабочего места) и я стал обладателем ноутбука MacBook Pro. Что делать со старым компьютером? Выбрасывать? Было жалко… Ведь почти руками его собирал в течение двух лет. И тогда я решил — будет сервером! Я почистил компьютер и заново поставил туда Ubuntu Linux.

Цель


Мне хотелось чтобы мой старый компьютер был вэб (HTTP), файловым (FTP, SSH, SMB) сервером. На фоне занимался скачиванием всяких больших файлов (в том числе из P2P сетей). Был звуковым сервером (чтобы подключить к нему колонки, а звук передавать через WiFi).

Интернет


Сначала, я решил наконец-то разобраться с интернетом. После пары дней на форумах, было принято решение купить WiFi роутер D-Link DIR-300. Так как мне надо было качать из P2P сетей, я подписался на услугу внешнего статического IP у провайдера интернета. А так как этим IP может обладать тот компьютер, который напрямую подключен через PPTP, то я решил, что к интернету будет подключаться PC (конечно, есть такие штуки как форвардинг портов, но я просто не хотел заморачиваться).

Настроить роутер было не так просто как я думал. К нему шел диск, который официально работал в Windows XP и Windows Vista. Я подключил роутер к ноутбуку жены и провозился около часа, после чего понял, что Vista там точно не поддерживается. В XP я настроил его быстро, только настройка сводилась к тому, чтобы выбрать неповторимое имя WiFi сети и включить скрытный режим.

Дальше надо было придумать как отдавать интернет роутеру. Я вспомнил про DHCP(+DNS) и NAT. DNS просто установился командой:
sudo aptitude install bind9

DHCP-сервер установился следующей командой:
sudo aptitude install dhcp3-server

Его настрока прошла легко — дописал в /etc/dhcp3/dhcpd.conf следующие строки:
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.100 192.168.3.150;
option routers 192.168.3.1;
option broadcast-address 192.168.3.255;
default-lease-time 600;
max-lease-time 7200;
}

Роутер у меня на интерфейсе eth0, поэтому запуск DHCP-сервера выполняется командой dhcpd3 eth0, тут я понял, что надо все команды, которые часто будут выполняться — вынести в отдельные скрипты и у меня вышла такая файловая структура:

/run
/run/net — тут работа с сетью
/run/app — тут запуск дополнительных сервисов
/run/bind — тут связывание файловой системы (потом расскажу)

Таким образом у меня появились файлы:
/run/net/dhcp.sh — запуск DHCP-сервера
/run/net/vpn-on.sh — подключение по PPTP к интернету
/run/net/vpn-off.sh — отключение от интернета
/run/net/vpn-ensure.sh — подключение к интернету в случае разрыва, его записал в cron (система периодичного выполнения команд) следующим образом:
sudo crontab -e

Открывается редактор, в котором добавляем строку:
* * * * * /run/net/vpn-ensure.sh

Осталось реализовать роутинг. После некоторых поисков в сети я написал еще один скрипт (/run/net/routes.sh) со следующим содержимым:
#!/bin/sh
iptables -A FORWARD -i ppp0 -o eth0 -s 192.168.3.0/24 -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

И не забываем выполнить в консоли:
sudo -s
echo 1 > /proc/sys/net/ipv4/ip_forward


Ура! Интернет есть!

Сервера


Вэб- и файловые сервера поставились одной командой:
sudo aptitude install apache2 samba openssh-server proftpd

Так же я поставил GUI к ним (так как я далеко не профессионал в настройке этих серверов):
sudo aptitude install gproftpd gsambad

И VNC-сервер, чтобы удаленный рабочий стол сервера видеть с ноутбуков:
sudo aptitude install x11vnc

Помимо серверов, надо было продумать файловую структуру. Я пришел к такой:
/share — корень FTP / SMB ресурс Share
/share/download — сюда все менеджеры закачки должны складывать файлы
/share/music
/share/video
/share/torents — отсюда torrent-клиенты должны забирать torrent-файлы и начинать закачку
/share/second — мой второй жесткий диск
/share/third — мой третий жесткий диск
/share/www — корень http сервера. Монтируется сюда скриптом /run/bind/www.sh (mount --bind /var/www/ /share/www/)

Менеджеры закачки


С этим оказалось труднее. Мне нужны были менеджеры закачки с вэб-интерфейсом, а таких оказалось совсем не много. Но некоторые нашлись:

Deluge у меня просто слов не хватит описать этот замечательный torrent-клиент. В нем есть все, включая Web-интерфейс (если бы он еще не глючил иногда, было бы совсем хорошо).
Поставил командой:
sudo aptitude install deluge

Дальше после запуска настроил через GUI.

mldonkey мощный но странный мультипротокольный проект. Мне он не понравился лишь очень запутанным интерфейсом.

Что вышло


Отличный сервер для личных нужд, доступный извне (я оттуда с работы музыку иногда беру :-) ).
Удобное скачивание из torrent-сетей (просто кладу torrent-файл в папку на сервере и он закачивается автоматически).
TimeMachine (система резервного копирования данных, входит в Mac OS X Leopard) работает через WiFi и бэкапит данные на сервер (выделил ему 80гб). Но это было адски сложно (даже немного разочаровался в Apple) — сделал по этой статье.

Нерешенные задачи


Из нерешенных задач остались:
  • Сервер звука (и клиент звука для MacBook)
  • Менеджер закачки из сетей ed2k с вэб-интерфейсом
  • Менеджер закачки из сетей dc++ с вэб-интерфейсом
  • Менеджер закачки по протоколам HTTP / FTP с вэб-интерфейсом

Что дальше


Сейчас я занят поиском менеджера закачки для HTTP / FTP, но на первое время набросал вэб-интерфейс для wget (добавление закачки, прогресс-бар выполнения, если интересно — могу выложить в sourceforge — поработаем вместе).

P.S. У меня дома получается «дружба народов» :-) Представлены и Windows, и Linux, и Mac OS =)
Tags:домашний сервер
Hubs: Old hardware Desktop PC's
+93
3.4k 161
Comments 250