Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  trafd & MySQL
  WEB-морда к траффику
  SNMP
  ipacctd
  pfctl
  ntop 4.10
  NeTAMS
  NeTAMS 2
  SQUID+SAMS +Rejik-(NCSA)
  ng_ipacct + squid
  SQUID+SAMS +Rejik-(NTLM)
  SQUID+SAMS +Rejik-(ADLDAP)
  mpd5 + radius + ng_car + Abills
  darkstat
  Netams 3.4.5
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> подсчёт трафика —> АСУТ - система учета трафика

АСУТ - система учета трафика

Автор: arksu.


После длительного перерыва решил обновить статью, материал того заслуживает (имхо), первая статья тут.

ВВЕДЕНИЕ

Нужна была достойная система способная считать ВЕСЬ трафик, масштабируемая, написанная на "легком" для освоения языке программированя чтобы можно было ее затачивать под свои нужды, а нужды эти появляются как ни крути в любой компании и в любом месте. Под словом ВЕСЬ понимается трафик проходящий и через прокси, и тот который мы натим (т.к. не всегда есть возможность все завернуть на прокси, взять теже самые клиент банки). Итак что мы хотим иметь мы знаем, теперь начнем искать что уже есть и выбирать подходящее нам (желательно Open Source)
Что я нашел:
   SAMS,
   NETAMS,
   SARG,
   IPACCT,
   UTM,
   Traffic Inspector,
   StarGazer,
   и многие многие другие
Сравнив эти и другие системы я для себя ничего подходяещего не нашел, и решил ни много ни мало сделать "свое". Признаюсь по началу было немного страшновато лепить "нечто свое" когда на свете уже много подобных систем, очень не хотелось изобретать велосипед. Но по мере продвижения работы и знакомства с другими система все более крепла уверенность в том что это действительно нужно и не только мне.

ЦЕЛИ

Мы хотим чтобы система делала следующее:
1. Учет трафика SQUID с привязкой к конкретному человеку.
2. Учет проходящих пакетов через роутер, раскидывание их по типам протоколов (которые мы сами описываем), пример: есть 2 фтп сервера, и нам нужно чтобы трафик с обоих писался как "ftp_company", создаем правило: (src="12.12.12.12" AND (port=21 OR port>49999)) OR (src="23.23.23.23" AND (port=21 OR port>49999)), после этого весь трафик подпадающий под правило будет виден как "ftp_company".
3. Авторизация пользователей в системе, возможность работы с AD Windows.
4. Запретить любые соединения от неавторизованных пользователей в том числе и через прокси (чтобы корректно считать трафик).
5. Удобная админка с разграничением прав. Чтобы НЕ администратор мог зайти и посмотреть отчеты по трафику и чтобы мог или не мог видеть в этих отчетах трафик администратора ;)
6. Допустим у нас большая филиальная сеть, и есть пользователи которые мигрируют - нужно сделать возможность оперативного добавления пользователей в удаленные системы.
7. Работа со статическими адресами без использования авторизатора.
8. Гибкие отчеты по трафику в любом разрезе за любой период времени
9. Хранение всех логов работы
10. Хранение информации по трафику за любой период времени без замедления работы системы (будь то информация за год за 2 года, чтобы ее объем не сказывался на скорости формирования отчетов).
11. Общая простота конфигурирования и настройки системы, отсутствие центрального звена без которого не сможет работать вся система.

ОПИСАНИЕ СИСТЕМЫ

Скажу сразу - я не буду описывать пошагово всю настройку системы, предполагается что эту статью читают люди знакомые с FreeBSD и другими UNIX системами. Если надо поставить какой то модуль я не буду описывать как это делается, если надо поставить сервер БД, запустить его и поставить пароль на root - я не буду все это описывать. Цель статьи - описать систему учета трафика и то как ее сконфигурировать. Информацию о том как поставить и заставить работать то или иное приложение можете найти на этом же сайте или в интернете.
Система написана модульно, без привязки к конкретной ОС, можно заставить работать хоть на Linux, хоть на Solaris, хоть даже на Windows.
Фактически вся система - это набор скриптов, таблиц в БД и правил для работы с другими сервисами.

ВЫБОР ИНСТРУМЕНТОВ

С целями определились, определимся с инструментами:
Прокси: SQUID, в принципе ничто не мешает использовать любой другой прокси сервер. Вся архитектура системы продумана так что она состоит из кубиков, каждый модуль выполняет строго свою определенную функцию и для того чтобы привязать другой прокси сервер ничто не мешает исправить код который парсит его логи.
Пакетный учет трафика: ng_ipacct, работа на уровне ядра, высокое быстродействие, безглючность, простота парсинга логов. Больше добавить нечего.
Язык программирования системы: PHP, думаю не стоит говорить о том сколько сейчас людей кодит на этом языке, сколько дополнительный расширений существует, и насколько легко при его помощи создавать веб странички. Возможность работы в CLI (командная строка). Вся система написана на нем, бОльшая часть это веб странички, ядро - один шелл скрипт для парсинга логов и реконфигурирования сервисов.
База данных: MySQL, быстрая, удобная, бесплатная =). Ну и фактически стандарт "де факто" для таких систем - проблем с переносимостью не будет.
Файрволл: pf, простой синтаксис, работа на уровне ядра, простейший нат и редирект портов.
Планировщик задач: fcron, минимальное разрешение времени 1 секунда, понадобилось реконфигурировать систему через каждые 10 секунд, т.е. чтобы задержка между входом пользователя в систему и применением его правил не превышала 10 секунд. Стандартный cron с этой задачей справиться не смог.

УСТАНОВКА И НАСТРОЙКА МОДУЛЕЙ

Ядро
Нам нужно ядро с поддержкой NETGRAPH, добавляем опции:
options         NETGRAPH		# собственно сам нетграф
options         NETGRAPH_ETHER		# нода для работы с физическими интерфейсами
options         NETGRAPH_SOCKET		# нода для работы ngctl (создание сокета для подключения ngctl)
options         NETGRAPH_TEE		# нода для дублирования трафика

device          pf			# PF OpenBSD packet-filter firewall
options         ALTQ			# необходимая оцпя для сборки pf (работа с очередями)

ng_ipacct
Ставим ng_ipacct из портов
/usr/ports/net-mgmt/ng_ipacct

правим конфиг /usr/local/etc/ng_ipacct.conf
ng_ipacct_interfaces="iface0"
ng_ipacct_modules_load="YES"
ng_ipacct_modules_list="ng_ipacct"

ng_ipacct_default_ether_start='
        mkpeer %%iface%%: tee lower right
        name %%iface%%:lower %%iface%%_tee
        connect %%iface%%: lower upper left

        mkpeer %%iface%%_tee: ipacct right2left %%iface%%_in
        name %%iface%%_tee:right2left %%iface%%_ip_acct
        connect %%iface%%_tee: %%iface%%_ip_acct: left2right %%iface%%_out
'

ng_ipacct_default_ether_stop='
        shutdown %%iface%%_ip_acct:
        shutdown %%iface%%_tee:
        shutdown %%iface%%:
'

ng_ipacct_iface0_dlt="EN10MB"      # required line; see ipacctctl(8)
ng_ipacct_iface0_threshold="10000" # '5000' by default
ng_ipacct_iface0_verbose="yes"     # 'yes' by default
ng_ipacct_iface0_start=${ng_ipacct_default_ether_start}
ng_ipacct_iface0_stop=${ng_ipacct_default_ether_stop}

ng_ipacct_iface0_checkpoint_script="/var/asut/ipacct.sh iface0"

В котором внимательно исправляем iface0 на свой внутренний (тот который смотрит в локалку) интерфейс маршрутизатора. Можно указать несколько интерфейсов если локалок несколько.
cat /var/asut/ipacct.sh
#!/bin/sh

IPACCTCTL="/usr/local/sbin/ipacctctl"
IFACE=$1
DIR=/var/asut/ipacct
NAME="ng_ipacct.log"

$IPACCTCTL ${IFACE}_ip_acct:$IFACE checkpoint
$IPACCTCTL ${IFACE}_ip_acct:$IFACE show >> $DIR/$NAME
$IPACCTCTL ${IFACE}_ip_acct:$IFACE clear

/usr/bin/tail -1 $DIR/$NAME | /usr/bin/fgrep exceed

этот скрипт заставляет ng_ipacct сбросить собранную статистику в файл лога

Включаем:
echo 'ng_ipacct_enable="YES"' >> /etc/rc.conf

squid
ставим из портов
cd /usr/ports/www/squid
make install clean

правим конфиг /usr/local/etc/squid/squid.conf
http_port 111.111.111.111:3128
error_directory /usr/local/etc/squid/errors/Russian-1251
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 16 MB
ftp_user anonymous@aaa.com

acl all src 0.0.0.0/0.0.0.0
acl icq url_regex "/var/asut/squid_conf/icq_servers"

# USERS
acl allow_all                   src "/var/asut/squid_conf/allow_all"
acl normal                      src "/var/asut/squid_conf/allow_normal"
acl work                        src "/var/asut/squid_conf/allow_work"
acl mail_services_adr           src "/var/asut/squid_conf/allow_mail_services"
acl exe_allow                   src "/var/asut/squid_conf/allow_exe"
acl allow_job_services          src "/var/asut/squid_conf/allow_job_services"
acl allow_admins_access         src "/var/asut/squid_conf/allow_admins_access"
acl allow_nod32                 src "/var/asut/squid_conf/allow_nod32_http_update"

# URL GROUPS
acl notwork                             url_regex "/var/asut/squid_conf/notwork"
acl banner                              url_regex "/var/asut/squid_conf/banner"
acl banks                               url_regex "/var/asut/squid_conf/banks"
acl true_work                           url_regex "/var/asut/squid_conf/true_work"
acl bigfiles                            url_regex \.avi$ \.mpeg$ \.mpg$ \.exe$ \.mov$ \.iso$ \.nrg$ \.mpe$ \.mp3$ \.wmv$
acl mail_services_url                   url_regex "/var/asut/squid_conf/mail_services"
acl exe_files                           url_regex \.exe$
acl job_services                        url_regex "/var/asut/squid_conf/job_services"
acl admins                              url_regex "/var/asut/squid_conf/admins"
acl nod32                               url_regex "/var/asut/squid_conf/nod32"

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 8420
acl Safe_ports port 80             # http
acl Safe_ports port 21             # ftp
acl Safe_ports port 443            # https, snews
acl Safe_ports port 49000-65535    # ftp ports
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager

# Deny requests to unknown ports
http_access deny !Safe_ports

# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports

##################################################################
http_access deny  icq                   all
http_access allow exe_files             exe_allow
http_access deny  exe_files             all

http_access allow nod32                 allow_nod32
http_access allow admins                allow_admins_access

http_access allow job_services allow_job_services
http_access allow true_work all
http_access allow allow_all

http_access deny banner all

http_access allow normal
http_access deny bigfiles all

http_access allow mail_services_url mail_services_adr
http_access deny notwork all
http_access allow work
##################################################################

http_access allow localhost
http_access deny all
icp_access allow all
access_log /usr/local/squid/logs/access.log squid

111.111.111.111 - внутренний адрес нашего маршрутизатора на котором будет работать наш прокси сервер.
Сильно описывать конфиг не буду. Приведен простейший конфиг. Возможностей для донастройки МОРЕ. Использованы правила на основе ACL которые читают айпи адреса из файлов, которые заполняет наш скрипт реконфигурирования.

Включаем
echo 'squid_enable="YES"' >> /etc/rc.conf

создаем кэш
squid -z

fcron
Ставим из портов
cd /usr/ports/sysutils/fcron
make install clean

Правим кронтаб
fcrontab -u root -e
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
@nolog,lavg5(1.5) 5 /usr/libexec/atrun

# Rotate log files every hour, if necessary.
%nolog,hourly * newsyslog
#
# Perform daily/weekly/monthly maintenance.
%daily,serial * * periodic daily
%weekly,serial * * periodic weekly
%monthly,serial * * * periodic monthly
#
# Adjust the time zone if the CMOS clock keeps local time, as opposed to
# UTC time.  See adjkerntz(8) for details.
1,31    0-5     *       *       *       root    adjkerntz -a

*       *       *       *       *       root    /usr/local/bin/pfstat -q -d /var/log/pfstat/pfstat -c /etc/pfstat.conf
*/5     *       *       *       *       root    /usr/local/bin/pfstat -p -d /var/log/pfstat/pfstat -c /etc/pfstat.conf

1       0       *       *       *       root    /var/asut/squid_repare > /dev/null 2>&1

@ 10s /var/asut/reconfigure.php > /dev/null 2>&1

Включаем, выключаем
/etc/rc.d/cron stop
echo 'cron_enable="NO"' >> /etc/rc.conf
echo 'fcron_enable="YES"' >> /etc/rc.conf

pfstat
Небольшая утилитка которая формирует графические отчеты о работе pf
Ставим из портов
cd /usr/ports/sysutils/pfstat
make install clean

правим конфиг /etc/pfstat.conf
collect 1 = interface "iface1" pass bytes in ipv4 diff
collect 2 = interface "iface1" pass bytes out ipv4 diff
collect 3 = interface "iface1" block bytes in ipv4 diff
collect 4 = interface "iface1" block bytes out ipv4 diff

image "/var/asut/www/pfstat/hour_ext.jpg" {
        from 300 minutes to now
        width 980 height 300
        left
                graph 1 bps "in" "bits/s" color 0 192 0 filled,
                graph 2 bps "out" "bits/s" color 0 0 255
        right
                graph 3 "block in" "p/s" color 255 0 0,
                graph 4 "block out" "p/s" color 192 192 0
}
image "/var/asut/www/pfstat/day_ext.jpg" {
        from 1 days to now
        width 980 height 300
        left
                graph 1 bps "in" "bits/s" color 0 192 0 filled,
                graph 2 bps "out" "bits/s" color 0 0 255
        right
                graph 3 "block in" "p/s" color 255 0 0,
                graph 4 "block out" "p/s" color 192 192 0
}

collect  9 = global states inserts  diff
collect 10 = global states removals diff
collect 11 = global states searches diff

image "/var/asut/www/pfstat/pfstat-states.jpg" {
        from 1 days to now
        width 980 height 300
        left
                graph 9 "inserts" "states/s" color 0 192 0 filled,
                graph 10 "removals" "states/s" color 0 0 255
        right
                graph 11 "searches" "states/s" color 255 0 0
}
collect 15 = global counters match          diff
collect 17 = global counters fragment       diff
collect 22 = global counters congestion     diff
collect 23 = global counters ip-option      diff
collect 24 = global counters proto-cksum    diff
collect 25 = global counters state-mismatch diff

image "/var/asut/www/pfstat/pfstat-errors.jpg" {
        from 1 days to now
        width 980 height 300
        left
                graph 17 "frag" "/s" color 192 0 192,
                graph 22 "cong" "/s" color 0 192 192,
                graph 23 "iopt" "/s" color 0 0 255,
                graph 24 "csum" "/s" color 192 192 0,
                graph 25 "mism" "/s" color 255 0 0
        right
                graph 15 "match" "/s" color 0 192 0
}

Где iface1 - внешний интерфейс нашего роутера.

Создаем каталог куда будут писатся логи работы pf
mkdir /var/log/pfstat

nginx
Ставим из портов
cd /usr/ports/www/nginx-devel/
make install clean

Правим конфиг /usr/local/etc/nginx/nginx.conf
user  nobody;
worker_processes  20;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  3000;
    gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/local/www/nginx;
            index  index.php index.html index.htm;
        }

        location /index.php {
            root   /usr/local/www/nginx;
            fastcgi_pass   unix:/tmp/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www/nginx/$fastcgi_script_name;
            include        fastcgi_params;
        }
#=====================================================
# MET SERVER
        location ~* /met/.*\.php$ {
            root   /var/asut;
            fastcgi_pass   unix:/tmp/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/asut/$fastcgi_script_name;
            include        fastcgi_params;
        }

        location ~* /met/ {
                root   /var/asut;
                index  index.php index.html index.htm;
        }
#=====================================================
# WWW ASUT
        location ~* /www/.*\.php$ {
            root   /var/asut;
            fastcgi_pass   unix:/tmp/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/asut/$fastcgi_script_name;
            include        fastcgi_params;
        }

        location ~* /www/ {
                root   /var/asut;
                index  index.php index.html index.htm;
        }
#===================================================
# PHPMYADMIN
        location ~* /phpmyadmin/.*\.php$ {
            root   /usr/local/www;
            fastcgi_pass   unix:/tmp/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/www$fastcgi_script_name;
            include        fastcgi_params;
        }

        location ~* /phpmyadmin/ {
                root   /usr/local/www;
                index  index.php index.html index.htm;
        }
#==============================================
    }

}

Каталог MET используется на одном сервере - если у вас развитая филиальная сеть. В этом каталоге центральная админка с центральной базой пользователей, на серверах филиалов этот каталог НЕ нужен. В ней и нужно заводить новых юзеров и импортировать их в филиалы. Если же сервер всего один оставляем этот каталог и настраиваем импорт всего в 1 филиал.

Опять же - конфиг простейший, на звание гуру по nginx не претендую =), да и задачи у нашей системы не те да и нагрузки не те.

php-fpm
cd /usr/ports/lang
wget http://php-fpm.anight.org/downloads/freebsd-port/php-5.2.8-fpm-0.5.10.tar.gz
tar -xf php-5.2.8-fpm-0.5.10.tar.gz
cd /usr/ports/lang/php5-fpm
make install clean

Качаем порт, ставим порт. Версия старовата (на момент написания статьи автор php-fpm прекратил его поддержку, а жаль проект нужный...), есть попытки коммюнити сделать новый порт под фрю и даже успешные, но нормальной и безглючной сборки под фрю с последней версией php5.2.x (на момент написания статьи) нету

Правим конфиг /usr/local/etc/php-fpm.conf
Находим вот эту строку и меняем ее
<value name="listen_address">/tmp/php-fpm.sock</value>

Раскомментируем параметры пользователя
Unix user of processes
<value name="user">nobody</value>

Unix group of processes
<value name="group">nobody</value>

echo 'php_fpm_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/php-fpm start

php5-extensions
cd /usr/ports/lang/php5-extensions
make install clean

Выбрать нужные расширения:
gd
mysql
mbstring
mcrypt
pdo

Все остальное по дефолту

eaccelerator
cd /usr/ports/www/eaccelerator
make install clean

правим конфиг php (доп. доки) /usr/local/etc/php.ini
добавляем в конец:
zend_extension="/usr/local/lib/php/20060613/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="1800"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator

mysql
выжимка из /etc/make.conf
PORTSDIR?=/usr/ports

.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-server
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITH_CHARSET=utf8
WITH_COLLATION=cp1251_bin
WITH_PROC_SCOPE_PTH=yes
.endif

.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-client
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
.endif

создаем конфиг файл /etc/my.cnf
[client]
socket          = /tmp/mysql.sock
default-character-set=cp1251

[mysqld]
default-character-set=cp1251
init-connect='SET NAMES cp1251'

port            = 3306
socket          = /tmp/mysql.sock
skip-locking

set-variable = max_connections=300
set-variable = max_user_connections=300
set-variable = max_connect_errors=999999

thread_stack = 2M
thread_cache_size = 4
thread_concurrency = 4
skip-federated

key_buffer_size = 64M
max_allowed_packet = 2M
table_cache = 1024
tmp_table_size = 32M
read_rnd_buffer_size = 32M
net_buffer_length = 2M

query-cache-type = 1
query-cache-size = 32M
query_alloc_block_size = 8192
query_cache_min_res_unit = 4096
server-id       = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 32M
sort_buffer_size = 32M
read_buffer = 32M
write_buffer = 32M

[mysqlhotcopy]
interactive-timeout

Опять же на гуру по мускулу не претендую, рад буду выслушать коснтруктивную критику по конфигу. Файл взят с рабочего сервера.

Ставим, запускаем
cd /usr/ports/databases/mysql51-server
make install clean

echo 'mysql_enable="YES"' >> /etc/rc.conf

/usr/local/etc/rc.d/mysql-server start
mysqladmin -u root password 'pass'

phpmyadmin
cd /usr/ports/databases/phpmyadmin
make install clean
mv /usr/local/www/phpMyAdmin /usr/local/www/phpmyadmin

поставили, исправили имя каталога =)

named
Авторизатор всегда соединяется с сервером "master.asut", нам нужно создать зону master.asut на нашем роутере и настроить всех клиентов чтобы они искали через него эту запись
Правим /etc/namedb/named.conf
zone "master.asut" {
        type master;
        file "master/master.asut";
};

Содержимое файла /etc/namedb/master/master.asut
$ORIGIN ASUT.
$TTL 14400      ; 4 hour
MASTER                     IN SOA  ns1.master.asut. ark.ark.su. (
                                2009052201 ; serial
                                600        ; refresh (10 minutes)
                                300        ; retry (5 minutes)
                                2592000    ; expire (4 weeks 2 days)
                                600        ; minimum (10 minutes)
                                )
$ORIGIN MASTER.ASUT.
                        NS      ns1.master.asut.
@                       A       111.111.111.111
wpad                    A       111.111.111.111
NS1                     A       111.111.111.111

Благодаря этому решению наш авторизатор будет работать везде без изменения кода =)
Надо просто чтобы он смог найти адрес master.asut, а по адресу http://master.asut/www/auth.php был скрипт авторизации

настройка базы данных

скрипты

скрипт для сброса кеша /var/asut/squid_repare
#!/bin/sh
/usr/local/etc/rc.d/squid stop
rm -fr /usr/local/squid/cache/
/usr/local/sbin/squid -z
/usr/local/etc/rc.d/squid start

ЭПИЛОГ

статья в процессе написания....



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=18073.

размещено: 2009-05-22,
последнее обновление: 2009-05-22,
автор: arksu



Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 29 чел.
За последние 30 мин было: 90 человек
За сегодня было
3598 показов,
250 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Узнайте какие виды SSL-сертификатов бывают в статье rbc.ua.

Время генерации страницы 0.2475 секунд
Из них PHP: 69%; SQL: 31%; Число SQL-запросов: 76 шт.
Исходный размер: 108996; Сжатая: 20673