Показаны сообщения с ярлыком embedded. Показать все сообщения
Показаны сообщения с ярлыком embedded. Показать все сообщения

пятница, 10 декабря 2010 г.

Медленная работа Captive Portal и web-интерфейса Pfsense

Pfsense - отличный продукт. Готовое решение на основе FreeBSD для управления трафиком. Грубо говоря, продвинутый роутер с веб-интерфейсом. Сделан на базе схожего решения m0n0wall. Основные фичи: NAT, traffic shaper, DHCP, DNS forwarder, VPN (PPTP, OpenVPN, IPSec), RIP, SNMP, CARP. Один недостаток. При включении Captive Portal, его страничка медленно открывается, да и web-интерфейс сильно тормозит.

Дело в том, что Pfsense создан для работы на слабом железе с малым объемом RAM. Соответствующим образом настроен и lighttpd, на котором крутится web часть решения. Чтобы повысить скорость общения с роутером нужно в файле /etc/inc/system.inc выставить параметры PHP_FCGI_MAX_REQUESTS и PHP_FCGI_CHILDREN в соответствии с задачей и объемом памяти. PHP_FCGI_CHILDREN задается переменной max_procs, значения которой зависят от RAM, в файле это выглядит так:

$avail = $memory[0];

        if($avail > 0 and $avail < 98) {
                $max_procs = 1;
        }

        if($avail > 97 and $avail < 128) {
                $max_procs = 1;
        }

        if($avail > 127 and $avail < 256) {
                $max_procs = 1;
        }

        if($avail > 255 and $avail < 384) {
                $max_procs = 3;
        }

        if($avail > 384) {
                $max_procs = 36;
        }

        if($captive_portal == true)  { 
                $bin_environment =  <<
        "bin-environment" => (
                        "PHP_FCGI_MAX_REQUESTS" => "9500",
                        "PHP_FCGI_CHILDREN" => "$max_procs"
        ),


По умолчанию при объеме памяти больше 384 max_procs=4, а PHP_FCGI_MAX_REQUESTS=500.
В моем pfsense-маршрутизаторе 2 Гб ОЗУ, поэтому я выставил max_procs=36 и  PHP_FCGI_MAX_REQUESTS=9500. Т.е. приведенная выше часть конфига стала такой:

$avail = $memory[0];

if($avail > 0 and $avail < 98) {
                $max_procs = 1;
        }

        if($avail > 97 and $avail < 128) {
                $max_procs = 1;
        }

        if($avail > 127 and $avail < 256) {
                $max_procs = 1;
        }

        if($avail > 255 and $avail < 384) {
                $max_procs = 3;
        }

        if($avail > 384) {
                $max_procs = 36;
        }

        if($captive_portal == true)  { 
                $bin_environment =  <<
        "bin-environment" => (
                        "PHP_FCGI_MAX_REQUESTS" => "9500",
                        "PHP_FCGI_CHILDREN" => "$max_procs"
        ),



вторник, 7 апреля 2009 г.

Доступ к shell в m0n0wall

Если к девайсу с m0n0wall на борту подключить монитор и клавиатуру, то доступ в shell будет предоставлен. Но как сделать это удаленно? Ведь в последних версиях m0n0wall и Nano Wall уже нет ssh.

Очень просто. Это можно сделать из web-интерфейса. Все ясно из рисунка, достаточно лишь в строке адреса добавить exec.php


понедельник, 23 марта 2009 г.

Терминальный сервер на Linux за полчаса

Один из клиентов спросил, а заработает ли на наших железках LTSP. И я решил протестировать.

Вообще LTSP - это Linux Terminal Server Project, т.е. предназначен для организации работы терминального сервера на основе Linux. Клиенты при этом грузятся по сети (PXE), т.е. на серваке связка: dhcp+tftp. Навскидку помню две сетевухи, в которых есть поддержка PXE: Realtek 8139 и Intel eepro100. Кроме бездисковой загрузки может быть загрузка с дискет и т.п. Изначально LTSP включен в дистрибутивы: Ubuntu, k12 и вроде как в федору. В остальных легко устанавливается из репозиториев. Я для тестов выбрал Ubuntu 8.10 (alternate cd). Вся установка сводится к тому, чтобы нажать в самом начале инсталляции F4 и выбрать "LTSP server" в меню, дальше происходит обычная установка убунты, после которой автоматом ставится и настраивается LTSP.



Пара замечаний: ip на серваке только статический и желательно его прописать в момент установки, если же ip после установки менялся, нужно выполнить ltsp-update-sshkeys, т.к. ltsp использует ssh. Вот магическая формула:
LTSP = DHCP + TFTP + X11 (в виде ldm display manager) + ssh.
Сразу же по окончании установки LTSP сервера я запустил наш тонкий клиент, для чистоты эксперимента отключив от него CF-флешку, с которой грузится наш софт... и спустя 2 минуты уже работал через него на серваке. По сравнению с RDP порадовало следующее: изображение лучше, скорость тоже, с раскладкой клавиатуры проблем не возникло, USB-флешка подцепилась сразу же. Клава PS/2, мышь - USB.
В общем, кому нужно быстро организовать терминальный сервер на линуксе, рекомендую LTSP.


четверг, 19 марта 2009 г.

Полезные LiveCD

Как и многим IT специалистам, мне частенько приходится помогать с техникой родственникам, друзьям и знакомым. Так вот в этом своем эникействе я в полной мере ощутил преимущества LiveCD дистрибутивов Linux.

Нужно удалить файлы, доступ к которым блокируется виндой даже в безопасном режиме? - Пожалуйста, для LiveCD с этой т.з. все файлы одинаковы.
Нужно восстановить данные с дискеты? - dd есть практически в любом дистре.
Нужно восстановить битую таблицу из  Excel - Openoffice из той же Kubuntu вам в руки.
Нужно залить образ роутера на CF карту? - опять же dd.
Вирусы? - DrWeb LiveCD отлично с этим справится.
Для медленных компов подойдет облегченный дистрибутив типа PuppyLinux, а лучше всего его русская реализация проекта PuppyRus. Причем, для совсем старых компов лучше брать версию Retro.
В общем, рекомендую. В первую очередь тем, кто просто хочет посмотреть, что такое Linux..

среда, 18 марта 2009 г.

Автозапуск приложений в Puppy Linux

Puppy Linux и  его русская реализация PuppyRus, очень удобны для запуска на слабых компьютерах, работающих в режиме киоска. Как правило, в киоск-режиме после загрузки ОС сразу же запускается какое-то приложение, которым и ограничены возможности пользователя. Как обеспечить такой автозапуск?

Делается это довольно просто. Нужно в файле ~/.xinitrc найти и закомментировать строку:

rox -p /root/Choices/ROX-Filter/PuppyPin

и вместо нее добавить команду запуска нужного приложения.
Если приложение нужно запустить после старта window manager, то можно просто поместить скрипт запуска в директорию /root/Startup. Но тогда возможности пользователя ограничиваться не будут.
Приведенный способ с заменой строчки с rox не всегда выручает, т.к. многие программы любят работать в окружении window manager. Так, например, firefox запускается в одиночестве очень криво. Решением является использование комбинированного метода.
Во-первых комментируется приведенная строчка с rox, но вместо нее ничего не добавляется. Во-вторых скрипт запуска программы (того же firefox) кладется в /root/Startup. А чтобы пользователь был ограничен редактируется конфиг WM, в роли которого по дефолту jwm. Из конфига убираются все ненужные строки, соответствующие пунктам меню. Файлы конфига: ~/.jwmrc и ~/.jwmrc-tray.
Вот примеры таких файлов с ограничениями: .jwmrc и .jwmrc-tray.