Итак, я рад объявить всем, что у нас скоро открывается новое Интернет-кафе, в центре города Минска, в горячо любимом мной торговом центре Столица, в прекрасной кофейне КафеБерри.
Моя задача, как системного администратора всего этого счастья, была крайне нетривиальна - в целях экономии средств и времени необходимо, используя старые компьютеры и программу управления, работающую на другом Интернет-кафе, построить рабочую точку.
Итак, задача поставлена, приступаем к ее реализации.
Первоначальная работа - это улаживание административных взаимодействий с провайдером (БелИнфонет) и владелицей КафеБерри. Тут все, по большей части, обошлось без меня, единственное, что я сделал - это убедил провайдера не снимать кроссировку с линии и не отбирать у меня хорошо спрятанный модем (он был настолько хорошо спрятан, что я только в момент сборов его нашел).
Следующий шаг - объяснение самому себе, как именно это должно работать.
Исходные данные: Интернет-кафе Росток (г. Минск, Ленинградская, 7), работает под управлением довольно-таки хорошего, но небесплатного ПО astalavista (по заявлению его автора, разрабатывалось им самим специально для сети его компьютерных клубов), имеющего 30 лицензий на стационарные клиентские компьютеры +17 лицензий для внешних клиентов (Wi-FI). Где экономия, спросите Вы? Отвечаю: на Ростиксе всего 15 стационарных компьютеров, следовательно, еще 15 лицензий просто так стоят и не используются.
Задача1: объединить точки - решается на уровне провайдера, и почти меня не касается. Побочные следствия решения задачи на уровне провайдера - необходимость установки роутера в КафеБерри, и настройки исполнения скриптов Асты для IPFW на нем зеркально к такому же роутеру в Ростиксе. Статус задачи зеркалирования - пока не решена, буду благодарен любой помощи (можно в комментариях). На всякий случай, чтобы не задавалось лишних вопросов поясню смысл сей замысловатой задачки, правда, для этого придется несколько отклониться от темы.
Итак, программный комплекс AstaLaVista (я его обзываю для краткости Аста), состоит из нескольких модулей, без которых его функционирование невозможно. Причем часть модулей исполняется исключительно под управлением MS Windows. Основа Асты - программа/сервис под незамысловатым названием Server, с которой, собственно говоря, и происходит все управление. Данные Аста хранит в БД MySQL в формате innodb, взаимодействие с клиентом осуществляется специальной клиентской оболочкой, запускающейся перед Winlogon (под GNU/linux, вроде бы и есть реализация, но что то про нее не слышно вообще), взаимодействие с админом - посредством программы Operator (тоже Windows приложение), взаимодействие с управляющим клубом - посредством программы Boss (Windows-приложение, по сути, являющееся всего лишь фронтендом для базы данных MySQL). У сервера есть замечательная возможность отдавать команды роутеру (в основном, это связка FreeBSD+IPFW, но при наличии прямых рук, напильника - можно заточить под что угодно). То есть, админ создает счет, клиент садиться за компьютер, shell открывает доступ к виндам, а сервер, по ssh отдает команду роутеру. В случае с одним роутером - все пляшет прекрасно. Но, у меня их, во-первых 2, а во-вторых, второй расположен удаленно (пусть и в одной подсети). Так вот, моя задачка состоит в том, чтобы или мониторить состояние правил IPFW и, при изменении той их части, которая касается КафеБерри, отправлять эти изменения туда (как?), или же, просто, при получении команды для IPFW роутер Ростикса просто передает такую же команду роутеру КафеБерри (такой подход мне кажется более экономичным и менее ресурсоемким). Прошу всех, кто может - окажите помощь ;-).
Задача2: экономия компьютеров - решилась относительно просто. Вместо двух компьютеров (роутер, и компьютер админа) - будет установлен лишь один, под управление FreeBSD с каким-либо GUI + 10 клиентских.
Дальше начались для меня шаманские пляски с бубном. Собственно говоря, я не новичок во FreeBSD, но ламерские мохнатые ушки все еще растут у меня откуда-то :-D. C самого начала, инсталлятор, загрузившись с диска, отказался обнаруживать этот самый диск в качестве источника установки. Имея доступ в Интернет, для меня это не оказалось такой уж большой проблемой, тем более, что последний дистрибутив, скачанный мной имеет номерок 7.2, а тут уже и 8.0 есть. Так что, я просто подсказал откуда с какого фтп-сервера брать дистрибутив и ушел пить кофе и готовить компьютеры с Windows.
Скоро сказка сказывается, но нескоро дело делается. Через некоторое время, Фря таки собралась и установилась и я начал настройку ее, как роутера и файл-сервера. Тут мне было все просто и знакомо: VPN-подключение поднимается при помощи MPD5, firewall и контроль доступа в Интернет - IPFW (всего что нужно - перекомпилировать ядро с парой новых параметров), файл-сервер - Samba. Установил, настроил, проверил, обновил, еще раз проверил - все работает.
Чуть не забыл о некоторых необходимых параметрах для /etc/sysctl.conf:
- net.inet.ip.fw.verbose=1 - сообщения IPFW будут более содержательными 😉 (шутка, этот параметр обозначет необходимость логировать сообщение от ipfw в /var/log)
- net.inet.ip.fw.verbose_limit=10000 - ограничение количества сообщений в лог
- net.inet.ip.fw.one_pass=0 - пакет проходит через файрволл дважды - на входе и на выходе
- net.inet.ip.forwarding=1
#This sets the session lifetime for TCP sessions without any traffic to 1 hour,
#for UDP to 10 seconds.
net.inet.ip.fw.dyn_ack_lifetime=3600#Linux kernel 2.6.19
compat.linux.osrelease=2.6.19
А вот далее, мне пришлось ступить на тропу неизведанного - установка GUI (Graphical User Interface). Спросил у знакомых, проанализировал собственные, довольно таки скудные знания в этой области и, первоначально, остановился на XFCE. Собралась она довольно таки быстро, запустилась тоже без проблем, а вот что с ней делать дальше - я так и не смог разобраться. Простой, непонятный и неудобный для меня-виндузятника интерфейс. Исходя из всех, вышеперечисленных моментов, а также, учитывая то, что я уже имел опыт работы с Gnome (http://wordpress.sng.by/testirovanie-svobodnoj-os-na-blondinke/), я решил не пытать судьбу и поставить его. Однако, из портов он так и не захотел собираться - останавливается на сборке libxml2/python и все на этом. Поискав информацию во всемогущем Гугле, я так ничего не нашел, и пришлось мне пойти по другому пути установки, любезно предоставляемой мне ОС FreeBSD - установка из системы пакетов.
Пакет Gnome2 (pkg_add -r gnome2) довольно таки шустро собрался, установился и запустился без проблем. Таким образом, первая часть конфигурация перешла в статут "завершена".
Теперь нужно приступить к доработке получившейся заготовки при помощи напильника. В первую очередь, проверил, стоил ли апдейтить Гнома - оказалось, что нет, из пакетов установилась последняя версия.
Теперь - русификация консоли, в чем я воспользовался блогом hd_keeper - http://hd-keeper.livejournal.com/1577.html.
После русификации консоли, следующий шаг - установка драйверов для видеокарты NVidia, потому что тот дефолтный драйвер что загружается по умолчанию, не поддерживает разрешение выше 800х600 пикселей. Тут опять же мне на помощь приходит всезнайка-Гугл и блог Linux/BSD Sharing (http://linux-bsd-sharing.blogspot.com/2009/03/howto-install-and-configure-nvidia.html). Первая рекомендация - смотреть на сайте Nvidia драйвера последней версии для моей системы. Однако, я решил скачать драйвера с официального сайта производителя моей материнской платы ASUS. Так как драйвера для FreeBSD специально не пишутся - то придется устанавливать еще и поддержку Linux, что делается довольно таки просто. Подробно и интересно все это описано тут - http://www.linux.com/archive/feature/53055?theme=print.
Однако, для конфигурации с загрузкой нужных мне параметров - необходимо изменять xorg.conf (по умолчанию, он должен находиться в /etc/X11/), однако в новых версиях его там нет, и появляется он при помощи команды Xorg -configure. Опять же, чтобы не утомлять - вот линки с информацией:
- http://www.freebsd.org/doc/handbook/x-config.html
- http://forums.freebsd.org/archive/index.php/t-3986.html
После этих нехитрых манипуляций Гном приобрел значительно более приятный внешний вид.
Итак, настройка ограниченно завершена, в следующих статьях постараюсь рассказать о моей борьбе с wine и настройке объединения клубов.
А работа на Gamerbox.ru продолжается. Советую всем, кто еще не знает об этой системе ознакомиться с ней и подписаться на рассылку с тем, чтобы в числе первых оказаться ее пользователем.