LINUX.ORG.RU

Сообщения iron

 

Squid: referer access

Форум — Admin

Всем привет.

Есть задача: офисному планктону разрешить доступ только к определенному списку сайтов. Остальное запретить.

Пытаюсь решить задачу через squid:

acl mynet src 192.168.0.0/16
acl allowed_sites dstdomain .bloomberg.com
acl allowed_referers referer_regex -i ^https://www.bloomberg.com/.*
http_access allow mynet allowed_sites
http_access allow mynet allowed_referers
http_access deny mynet !allowed_sites
http_access deny mynet !allowed_referers

Каждый сайт за собой тащит кучу статики с других сайтов. Да бы не отслеживать всю статику вручную, решил разрешить обращение к урлам у которых referer разрешенного сайта. Но такая конструкция почему-то не работает. Разрешенный сайт открывается, но статика из других сайтов не грузится, выдает ошибку 403 Forbidden.

ЧЯДНТ?

 

iron ()

FreeBSD iscsi timeout

Форум — Admin

Всем привет!

Имеется ISCSI таргет поднятый на Windows 2012 R2, имеется FreeBSD 10.1-STABLE r277756 к котороая выступает в качестве инициатора. Подключил таргет без проблем, создал там ZFS пул, скорость отличная. Решил сделать имитацию пропадания связи между таргетом и инициатором (под виндой задисейблил сетевое подключение через которое подключается инициатор). После этого, на фре, любая команда которая обращается к /dev/da0 зависает. Даже выполнения reboot не срабатывает и продолжает висеть. Но при этом сервер живой, можно подключиться по ssh. Ничего кроме хард ресета не помогает.

Следующие команды не срабатывают, продолжаюи висеть в консоли в неубивабельном состоянии:

umount -f /iscsi/fl1
zpool iostat 1
zfs umount /iscsi/fl1/
zpool offline fl1 da0p1
reboot

Настройки: cat /etc/iscsi.conf:

fl1 {
	TargetAddress   = 172.16.27.109:3260
	TargetName      = iqn.1991-05.com.microsoft:qnss008-fl1-target
	InitiatorName	= fl1
	AuthMethod      = CHAP
	chapIName       = fl
	chapSecret      = ***********
}

dmesg:

da0 at iscsi0 bus 0 scbus8 target 0 lun 0
da0: <MSFT Virtual HD 6.3> Fixed Direct Access SCSI-5 device 
da0: Serial Number EFA47AB1-0935-4067-88E8-8CCD9D1585B0
da0: 8912648MB (18253103104 512 byte sectors: 255H 63S/T 1136203C)

Через пол часа или час имитации пропадания связи, в dmesg появилось:

(da0:iscsi0:0:0:0): WRITE(10). CDB: 2a 00 00 2e dc 48 00 00 08 00 
(da0:iscsi0:0:0:0): CAM status: CCB request completed with an error
(da0:iscsi0:0:0:0): Retrying command
da0 at iscsi0 bus 0 scbus8 target 0 lun 0
da0: <MSFT Virtual HD 6.3> s/n EFA47AB1-0935-4067-88E8-8CCD9D1585B0 detached
/dev/da0 пропал и я смог перезагрузить сервер. Но сервак так и не перезагрузился. Скорее всего завис на этапе размонтирования.

Собственно 2 вопроса:

1. как размонтировать/перемонтировать/оживить сервер без хард ресета и ситуациях когда пропадает связь с таргетом?

2. как вообще разруливать ситуации когда виндовый сервер нужно перезагрузить? Отключать таргеты на всех серверах не вариант. Пускай даже подключенный таргет будет висеть пока сервак перезагружается. Но как сделать чтоб инициатор восстанавливал соединие когда таргет стал доступен и продолжал I/O операции?

Заранее благодарен за ответы!

 ,

iron ()

FreeBSD pf+altq динамический шейпинг

Форум — Admin

Всем привет.

К офисному серверу подключен инет канал на 10мбит/с. Есть локальная сеть /24 откуда в инет ломится неизвестное количество юзеров (гости с ноутами, мобильники и т.д. через wifi). Нужно равномерно делить всю доступную полосу пропускания канала исходя из количества айпишников которые ломятся в инет. Причем независимо от того, сколько сессий открывает юзер. Так же выставлять приоритеты для трафика. Грубо говоря, если Вася качает торренты, то чтоб у директора Пети войс-колл скайпа не тормозил. С приоритетами все предельно просто. А вот как динамически запихивать все коннекты с айпишника в определенную очередь и ограничивать ее с заимствованием у других очередей(если канал простаивает)? На Линуксе подобная задача уже решена при помощи htb+sfq+tc nfct-dst. А как это реализовать на FreeBSD+pf+altq(или hfsc)? Не создавать же больше двухсот очередей на все возможные айпишники. А если подсеть будет не /24 а /16, тогда вообще повеситься. Во всех нагугленных примерах явно указываются айпишник/группа айпишников при создании очередей, но это не то что мне нужно. Да и в доках/манах по pf ничего подобного не могу найти.

Заранее благодарен за любые идеи!

 , , ,

iron ()

BIND, ответ на все запросы

Форум — Admin

Все привет,

Есть некий сервис, который позволяет подключать к своей системе доменные имена клиентов. При подключении своего домена клиент прописывает A запись своего домена на IP этого сервиса. Но возникла необходимость переезда серверов в другой ДЦ, следовательно IP поменяется и неизвестно сколько еще раз будет меняться. Регистрировать свою AS нет времени. Да и в RIPE IPv4 айпишники вродь закончились(?). Подключенных доменов несколько сотен и дописывать функционал движка для добавления домена в DNS нет времени. Нужно какое-то быстрое и временной решение. Пока что придумал вот что. Настраиваю bind таким образом, чтоб он отвечал на все запросы выдавая нужный IP. А клиенты прописывают NS-ы свой зоны мой DNS-а (ns{1,2}.domain.com).

named.conf:

zone "." in {
        type master;
        file "/var/bind/db.all";
        allow-update { none; };
};

db.all:

$TTL 1W
@       IN      SOA     ns1.domain.com. root.localhost.  (
                                      2008122601 ; Serial
                                      60      ; Refresh
                                      60      ; Retry
                                      60     ; Expire - 1 week
                                      60 )    ; Minimum
                IN      NS      ns1.domain.com.
                IN      NS      ns2.domain.com.
                IN      A       1.1.1.1
*               IN      A       1.1.1.1

 # dig @2.2.2.2 example.com

; <<>> DiG 9.9.3-P2 <<>> @2.2.2.2 example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1080
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		604800	IN	A	1.1.1.1

;; AUTHORITY SECTION:
.			604800	IN	NS	ns1.domain.com.
.			604800	IN	NS	ns2.domain.com.

;; ADDITIONAL SECTION:
ns1.domain.com.	604800	IN	A	1.1.1.1
ns2.domain.com.	604800	IN	A	1.1.1.1

;; Query time: 1 msec
;; SERVER: 2.2.2.2#53(2.2.2.2)
;; WHEN: Tue Dec 24 16:54:11 EET 2013
;; MSG SIZE  rcvd: 130

Как видим выше, при выполнении запроса A запись выдается. А вот на запрос NS записей ответа нет:

# host -t ns example.com 2.2.2.2
Using domain server:
Name: 2.2.2.2
Address: 2.2.2.2#53
Aliases: 

example.com has no NS record

Поскольку на запрос NS записей ответа нет, многие клиенты не могут поменять у себя NS записи домена. К примеру на godaddy при попытке поменять NS-ы домена говорит: You must enter a registered nameserver.

Можно как-то решить проблему? Да и вообще, возможно выше описанную задачу можно решить каким-то другим способом? Цель - управлять A записями подключенных доменов. А позже можно будет привязать DNS к движку сервиса.

Заранее благодарен за ответы!

iron ()

Сравнение производительности php: FreeBSD vs Gentoo Linux

Форум — Admin

Доброго времени суток,

Имеется два идентичных сервера: Xeon E3-1270v2, 32Gb RAM, RAID10. На одном из них стоит Gentoo Linux запиленная под железо, на другом FreeBSD 10-STABLE. Стало интересно сравнить производительность фри c Linux-ом на типичных серверных задачах: nginx+uwsgi_php55, mariadb-galera, redis. Все кроме php работает замечательно. По результатам теста, php под FreeBSD жрет на 30% больше проца и при этом существенно проигрывает в скорости по сравнению с Linux-ом. Сразу скажу, что на обеих ОСях php собран одной версией компилятора, одинаковыми модулями и с теми же CFLAGS. Прослойка uwsgi никакого влияния не оказывает, пробовал php-fpm - результат тот же. В сетевом стеке или nginx затыка тоже нет (настройки nginx одинаковые). Для уверенности в этом, результат выполнения скрипта клал в htm файл и тащил по сети в 16 потоков, трафик забил гигобитный линк до отказа. Скорость отдачи статики через nginx практически одинаковые на обеих серверах. В итоге получилось, что на Linux php скрипт (банальный phpinfo()) выполнился за 1 msec, а на фре примерно за 8 msec. Ниже трейсы с временными метками.

Gentoo Linux:

12:46:32.578393 accept4(6, {sa_family=AF_INET, sin_port=htons(59528), sin_addr=inet_addr("192.168.3.7")}, [16], SOCK_NONBLOCK) = 10
12:46:32.578527 read(10, "\0167\2\0\17\0SCRIPT_FILENAME+\0/home/htt"..., 4100) = 574
12:46:32.578678 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.578779 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.578917 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.578966 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.579035 lstat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579078 stat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579124 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.579161 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.579177 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.579225 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.579261 lstat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579296 lstat("/home/httpd/www/system/web/info.php", {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
12:46:32.579321 stat("/home/httpd/www/system/web/info.php", {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
12:46:32.579373 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={60, 0}}, NULL) = 0
12:46:32.579417 rt_sigaction(SIGPROF, {0x7f67b9b1a0b0, [PROF], SA_RESTORER|SA_RESTART, 0x3654634d10}, {0x7f67b9b1a0b0, [PROF], SA_RESTORER|SA_RESTART, 0x3654634d10}, 8) = 0
12:46:32.579464 rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
12:46:32.579517 lstat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579535 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.579565 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.579588 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.579608 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.579627 stat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579647 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
12:46:32.579662 lstat("/home/httpd/www/system/web/info.php", {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
12:46:32.579679 lstat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579698 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.579715 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.579731 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.579772 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.579800 stat("/home/httpd/www/system/web/info.php", {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
12:46:32.579816 lstat("/home/httpd/www/system/web/info.php", {st_mode=S_IFREG|0644, st_size=20, ...}) = 0
12:46:32.579831 lstat("/home/httpd/www/system/web", {st_mode=S_IFDIR|0755, st_size=440, ...}) = 0
12:46:32.579864 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.579882 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.579899 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.579917 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.579944 uname({sys="Linux", node="node1", ...}) = 0
12:46:32.581114 write(10, "HTTP/1.1 200 OK\r\nContent-type: t"..., 44) = 44
12:46:32.581141 write(10, "<!DOCTYPE html PUBLIC \"-//W3C//D"..., 95544) = 95544
12:46:32.581178 lstat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.581195 lstat("/home/httpd/www", {st_mode=S_IFDIR|0755, st_size=120, ...}) = 0
12:46:32.581213 lstat("/home/httpd", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0
12:46:32.581232 lstat("/home", {st_mode=S_IFDIR|0755, st_size=256, ...}) = 0
12:46:32.581249 stat("/home/httpd/www/system", {st_mode=S_IFDIR|0755, st_size=208, ...}) = 0
12:46:32.581268 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
12:46:32.581298 setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
12:46:32.581313 open("/proc/self/stat", O_RDONLY) = 13
12:46:32.581333 fstat(13, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
12:46:32.581369 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f67b87bf000
12:46:32.581390 read(13, "5295 (uwsgi) R 5292 5291 5291 0 "..., 1024) = 309
12:46:32.581415 close(13)               = 0
12:46:32.581435 munmap(0x7f67b87bf000, 4096) = 0
12:46:32.581452 close(10)               = 0
12:46:32.581475 writev(2, [{"{address space usage: 313401344 "..., 78}, {"[pid: 5295|app: -1|req: -1/20] 1"..., 207}], 2) = 285
12:46:32.581516 epoll_wait(8, ^CProcess 5295 detached
 <detached ...>

FreeBSD:

13518: 4.569934535 4.569699769 kevent(7,0x0,0,{0x6,EVFILT_READ,0x0,0,0x1,0x0},1,0x0) = 1 (0x1)
13518: 4.570825352 0.000052122 accept(6,{ AF_INET 192.168.3.8:27225 },0x800751104) = 9 (0x9)
13518: 4.571227700 0.000080451 read(9,"\^N7\^B\0\^O\0SCRIPT_FILENAME+\0"...,4100) = 574 (0x23e)
13518: 4.572505836 0.000127551 lstat("/home",{ mode=drwxr-xr-x ,inode=4,size=6,blksize=4096 }) = 0 (0x0)
13518: 4.572865713 0.000085512 lstat("/home/httpd",{ mode=drwxr-xr-x ,inode=8,size=3,blksize=4096 }) = 0 (0x0)
13518: 4.573190386 0.000084730 lstat("/home/httpd/www",{ mode=drwxr-xr-x ,inode=11,size=7,blksize=4096 }) = 0 (0x0)
13518: 4.573510820 0.000085387 lstat("/home/httpd/www/system",{ mode=drwxr-xr-x ,inode=14,size=8,blksize=4096 }) = 0 (0x0)
13518: 4.573830457 0.000086490 lstat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.574463050 0.000112191 stat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.574776573 0.000074341 lstat("/home",{ mode=drwxr-xr-x ,inode=4,size=6,blksize=4096 }) = 0 (0x0)
13518: 4.575283320 0.000147897 lstat("/home/httpd",{ mode=drwxr-xr-x ,inode=8,size=3,blksize=4096 }) = 0 (0x0)
13518: 4.575610283 0.000083883 lstat("/home/httpd/www",{ mode=drwxr-xr-x ,inode=11,size=7,blksize=4096 }) = 0 (0x0)
13518: 4.575931248 0.000084239 lstat("/home/httpd/www/system",{ mode=drwxr-xr-x ,inode=14,size=8,blksize=4096 }) = 0 (0x0)
13518: 4.576285572 0.000108849 lstat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.576609324 0.000111585 lstat("/home/httpd/www/system/web/info.php",{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.576934252 0.000087095 stat("/home/httpd/www/system/web/info.php",{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.578137551 0.000044300 setitimer(2,{0.000000, 60.000000 },0x0) = 0 (0x0)
13518: 4.578890119 0.000065843 sigprocmask(SIG_SETMASK,SIGHUP|SIGINT|SIGQUIT|SIGILL|SIGTRAP|SIGABRT|SIGEMT|SIGFPE|SIGKILL|SIGBUS|SIGSEGV|SIGSYS|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
13518: 4.579187695 0.000043938 sigaction(SIGPROF,{ 0x8008c4f10 SA_RESTART|SA_SIGINFO ss_t },{ SIG_DFL SA_RESTART ss_t }) = 0 (0x0)
13518: 4.579462247 0.000041825 sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
13518: 4.579911068 0.000042550 sigprocmask(SIG_UNBLOCK,SIGPROF,0x0) = 0 (0x0)
13518: 4.590744228 0.000042902 getpid()		 = 13518 (0x34ce)
13518: 4.591336110 0.000120646 lstat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.591654258 0.000083637 lstat("/home/httpd/www/system",{ mode=drwxr-xr-x ,inode=14,size=8,blksize=4096 }) = 0 (0x0)
13518: 4.591972362 0.000081378 lstat("/home/httpd/www",{ mode=drwxr-xr-x ,inode=11,size=7,blksize=4096 }) = 0 (0x0)
13518: 4.592261019 0.000077203 lstat("/home/httpd",{ mode=drwxr-xr-x ,inode=8,size=3,blksize=4096 }) = 0 (0x0)
13518: 4.592546414 0.000053455 lstat("/home",{ mode=drwxr-xr-x ,inode=4,size=6,blksize=4096 }) = 0 (0x0)
13518: 4.593027172 0.000087156 stat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.593343938 0.000042315 setitimer(2,{0.000000, 30.000000 },0x0) = 0 (0x0)
13518: 4.593741569 0.000111314 lstat("/home/httpd/www/system/web/info.php",{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.594713138 0.000122570 open("/home/httpd/www/system/web/info.php",O_RDONLY,00) = 11 (0xb)
13518: 4.595143348 0.000071575 fstat(11,{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.595421016 0.000066014 lseek(11,0x0,SEEK_CUR) = 0 (0x0)
13518: 4.595870293 0.000074647 read(11,"<?php\nphpinfo();\n?>\n",8192) = 20 (0x14)
13518: 4.596238890 0.000046159 read(11,0x7dc8e8,8192) = 0 (0x0)
13518: 4.596512268 0.000044300 read(11,0x7dc8e8,8192) = 0 (0x0)
13518: 4.596948686 0.000071119 close(11)	 = 0 (0x0)
13518: 4.600002706 0.000046740 break(0xd44000)	 = 0 (0x0)
13518: 4.604407899 0.000144809 open("/home/httpd/www/system/web/info.php",O_RDONLY,00) = 11 (0xb)
13518: 4.604657610 0.000047382 fstat(11,{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.604905881 0.000046504 __sysctl(0x7fffffffb380,0x2,0x7fffffffb37c,0x7fffffffb388,0x0,0x0) = 0 (0x0)
13518: 4.605218127 0.000046154 fstat(11,{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.605494952 0.000044314 fstat(11,{ mode=-rw-r--r-- ,inode=102419,size=20,blksize=4096 }) = 0 (0x0)
13518: 4.605771958 0.000076125 mmap(0x0,20,PROT_READ,MAP_SHARED,11,0x0) = 34367475712 (0x800761000)
13518: 4.607110165 0.000039308 getpid()		 = 13518 (0x34ce)
13518: 4.609585731 0.000076692 munmap(0x800761000,20) = 0 (0x0)
13518: 4.609831733 0.000072562 close(11)	 = 0 (0x0)
13518: 4.610278029 0.000047472 __sysctl(0x7fffffffbfe0,0x2,0x7fffffffc130,0x7fffffffbfd8,0x0,0x0) = 0 (0x0)
13518: 4.610554860 0.000044264 __sysctl(0x7fffffffbfe0,0x2,0x7fffffffc230,0x7fffffffbfd8,0x0,0x0) = 0 (0x0)
13518: 4.610830052 0.000066649 __sysctl(0x7fffffffbfe0,0x2,0x7fffffffc330,0x7fffffffbfd8,0x0,0x0) = 0 (0x0)
13518: 4.611107379 0.000067807 __sysctl(0x7fffffffbfe0,0x2,0x7fffffffc430,0x7fffffffbfd8,0x0,0x0) = 0 (0x0)
13518: 4.611396603 0.000042516 __sysctl(0x7fffffffbfe0,0x2,0x7fffffffc530,0x7fffffffbfd8,0x0,0x0) = 0 (0x0)
13518: 4.616492616 0.000155860 open("/usr/share/locale/en_US.UTF-8/LC_CTYPE",O_CLOEXEC,0666) = 11 (0xb)
13518: 4.616764816 0.000070753 fstat(11,{ mode=-r--r--r-- ,inode=132288,size=76132,blksize=65536 }) = 0 (0x0)
13518: 4.617088612 0.000069731 fstat(11,{ mode=-r--r--r-- ,inode=132288,size=76132,blksize=65536 }) = 0 (0x0)
13518: 4.617405293 0.000064435 lseek(11,0x0,SEEK_CUR) = 0 (0x0)
13518: 4.617650067 0.000043323 lseek(11,0x0,SEEK_SET) = 0 (0x0)
13518: 4.618217554 0.000365490 read(11,"RuneMag1UTF-8\0\0\0\0\0\0\0\0\0"...,65536) = 65536 (0x10000)
13518: 4.619179546 0.000082154 read(11,"@\^D\b\0@\^D\b\0@\^D\b\0@\^D\b\0"...,65536) = 10596 (0x2964)
13518: 4.620830499 0.000050112 close(11)	 = 0 (0x0)
13518: 4.624148825 0.000068403 break(0xe44000)	 = 0 (0x0)
13518: 4.630655933 0.000126919 open("/usr/share/locale/en_US.UTF-8/LC_CTYPE",O_CLOEXEC,0666) = 11 (0xb)
13518: 4.630926550 0.000070057 fstat(11,{ mode=-r--r--r-- ,inode=132288,size=76132,blksize=65536 }) = 0 (0x0)
13518: 4.631176742 0.000045122 fstat(11,{ mode=-r--r--r-- ,inode=132288,size=76132,blksize=65536 }) = 0 (0x0)
13518: 4.631422162 0.000043784 lseek(11,0x0,SEEK_CUR) = 0 (0x0)
13518: 4.631664936 0.000042445 lseek(11,0x0,SEEK_SET) = 0 (0x0)
13518: 4.632011403 0.000119448 read(11,"RuneMag1UTF-8\0\0\0\0\0\0\0\0\0"...,65536) = 65536 (0x10000)
13518: 4.632747574 0.000079103 read(11,"@\^D\b\0@\^D\b\0@\^D\b\0@\^D\b\0"...,65536) = 10596 (0x2964)
13518: 4.633894601 0.000069425 close(11)	 = 0 (0x0)
13518: 4.638873827 0.000109916 write(9,"HTTP/1.1 200 OK\r\nContent-type:"...,44) = 44 (0x2c)
13518: 4.639321908 0.000170057 write(9,"<!DOCTYPE html PUBLIC "-//W3C//D"...,85600) = 81616 (0x13ed0)
13518: 4.640090226 0.000052438 poll({9/POLLOUT},1,4000) = 1 (0x1)
13518: 4.640748743 0.000099664 write(9,"ance, Johann Hanne, Boris Lytoch"...,3984) = 3984 (0xf90)
13518: 4.641393844 0.000129956 stat("/home/httpd/www/system/web",{ mode=drwxr-xr-x ,inode=110568,size=15,blksize=4096 }) = 0 (0x0)
13518: 4.641877614 0.000042891 setitimer(2,{0.000000, 0.000000 },0x0) = 0 (0x0)
13518: 4.642830145 0.000041974 getpid()		 = 13518 (0x34ce)
13518: 4.643472691 0.000042961 setitimer(2,{0.000000, 0.000000 },0x0) = 0 (0x0)
13518: 4.644000590 0.000077829 __sysctl(0x7fffffffd3d8,0x2,0x8027e0db0,0x7fffffffd3e0,0x0,0x0) = 0 (0x0)
13518: 4.644593565 0.000113284 open("/dev/null",O_CLOEXEC,00) = 11 (0xb)
13518: 4.645078362 0.000070653 fstat(11,{ mode=crw-rw-rw- ,inode=25,size=0,blksize=4096 }) = 0 (0x0)
13518: 4.645558775 0.000077133 open("/dev/null",O_CLOEXEC,00) = 12 (0xc)
13518: 4.645971445 0.000092082 __sysctl(0x7fffffffd470,0x4,0x0,0x7fffffffd460,0x0,0x0) = 0 (0x0)
13518: 4.646439044 0.000119022 __sysctl(0x7fffffffd470,0x4,0x7e9900,0x7fffffffd460,0x0,0x0) = 0 (0x0)
13518: 4.646921601 0.000071426 close(11)	 = 0 (0x0)
13518: 4.647215820 0.000041939 close(12)	 = 0 (0x0)
13518: 4.647561215 0.000079659 close(9)		 = 0 (0x0)
13518: 4.648209339 0.000112332 writev(0x2,0x7fffffffb470,0x2,0x8ad8d7b1a524b1c9,0x7fffffb93526,0x8025b0de0) = 286 (0x11e)
Не совсем понятно зачем php под фрей запрашивает кучу sysctl да еще и зачем-то в /dev/null лезет. Можно ли это как-то выпилить?

Подскажите пожалуйста куда копать. Если нужна доп. инфа о настройках FreeBSD - пишите.

Заранее благодарен!

 

iron ()

Организация своего мини CDN

Форум — Admin

Доброго времени суток, ув. ЛОРовчане.

Есть веб-сервис, который в перспективе будет иметь свыше миллиона уникальных посетителей в день(по крайней мере так ставится задача). Если взглянуть на него админским взглядом, то это несколько тысяч виртуальных хостов и насколько миллионов файлов мелкой статики (jpg, png, css. js). Возникла необходимость организовать что-то типа своего мини CDN куда и вынести всю статику из веб-приложения, генерить ссылки на статику типа static.domain.com и резолвить айпишник этого сабдомена в зависимости от гео-позиционирования клиента. С этим, в принципе, все просто и ясно. Возникает вопрос лишь в том, как хранить сами файлы. Единственное что приходит на ум - хранить сами файлы в MongoDB (GridFS) и дергать их враппером отдавая nginx-ом. Даже есть идея написать простенький модуль для nginx, который бы это реализовывал. Сами базы реплецировать между серверами в мульти-мастер режиме. Для оказания высокой доступности серверов со статикой со стороны приложений планируется применять haproxy в режиме TCP балансирования. Добавлений файла будет не так много, так что латентность подключения веб-приложения к БД со статикой не сильно важна.
Есть еще вариант построить кластер на базе Ceph. Но я не думаю, что для такой узко-специализированной задачи это является оптимальным решением.
Цель всего этого:
- организовать максимальную скорость доступа к статическим файлам
- высокую доступность
- высокую надежность хранения
- оптимальное использование серверных ресурсов

Если кто-то сталкивался с подобного рода задачами либо просто имеет идеи относительно данного ТЗ, просьба поделиться своим мнением.

P.S: услуги существующих CDN не предлагать. Трафика будет много, так что это решение заведомо не выгодно нашей компании. К тому же нужно будет иметь возможность обрабатывать файлы прямо на сервере.

Заранее очень благодарен.

iron ()

qemu-1.4.0 и -cpu опция

Форум — Admin

Всем привет!

Кто-нить подскажет куда подевался "-cpu host" из 1.4.0 версии qemu? Если выполнить «qemu-kvm -cpu ?», можно получить список доступных процессоров для эмуляции. Но там нету моего i7-3770 на ядре Ivy Bridge. Тем более, нафига мне эмулировать, если я хочу весь проц во всей его красе отдать виртуалке. В итоге с какими бы я опциями -cpu не запустил, все равно возникают жуткие тормоза. Виртуалка работает раза в 3 медленее чем при qemu-1.2.2. Можно каким-то образом это побороть?

Заранее благодарен за ответы!

 

iron ()

Хак Joomla 1.0.x

Форум — Security

Доброго времени суток всем!

Так уж получилось, что приходится админить сайт который крутится на глючтой и дырявой Joomla 1.0.X. Сегодня сайт упал. Когда выполняются запросы мускула, почему-то запросы остаются со статусом Sleep и при этом загрузка страницы висит.

+-----+----------+-----------------+----------+---------+------+-------+------------------+----------+
| Id  | User     | Host            | db       | Command | Time | State | Info             | Progress |
+-----+----------+-----------------+----------+---------+------+-------+------------------+----------+
| 136 | sound_sm | localhost:52183 | xxxxxxxx | Sleep   | 8    |       |                  | 0.000    |
| 137 | sound_sm | localhost:52185 | xxxxxxxx | Sleep   | 6    |       |                  | 0.000    |
| 138 | sound_sm | localhost:52187 | xxxxxxxx | Sleep   | 6    |       |                  | 0.000    |
| 140 | sound_sm | localhost:52191 | xxxxxxxx | Sleep   | 5    |       |                  | 0.000    |
| 141 | sound_sm | localhost:52193 | xxxxxxxx | Sleep   | 3    |       |                  | 0.000    |
Запрет в php.ini «mysql.allow_persistent = Off» ни к чему не привел, как и «wait_timeout = 10» в my.cnf. Запросы так и продолжают висеть пока таймаут не прибьет. Поначалу думал что проблема в системе. Пробовал пересобирать MySQL и php, менять версии, но безрезультатно. Пробовал курить доку, но тоже безрезультатно. Так же обнаружил у себя очень интересный файл в папке с картинками. Просьба php знатоков взглянуть на него и поведать что он делает.

Каковы могут быть причины подобного завиcания запросов?

Заранеее очень благодарен за ответы!

iron ()

Переключение раскладки

Форум — Desktop

Всем привет!

Имеется Gentoo Linux. Поставил E17 из оверлея enlightenment.
Настроил переключение раскладки клавиатуры в два клика. Но в упор не могу найти где настроить, чтоб раскладка переключалась «для окна» или «для приложения». Очень неудобно работать в консоли в английской раскладке и каждый раз переключаться на русский когда нужно написать мессагу в месенджере. Кроме этого, на радость все работает идеально. Если удастся победить эту багу, наконец-то слезу с LXDE.

Заранее благодарен за ответы!

 ,

iron ()

Создание кластера (теория)

Форум — Admin

Доброго времени суток, уважаемые

Дано:
Есть сайт с постоянно растущей нагрузкой. Время от времени трафикообменные ресурсы не равномерно отдают трафик. К примеру бывает такое, что суточную норму переходов они отдают за пол часа. В итоге на сайт наваливаются посетители, которых иногда в 20 раз больше обычного количества.
Имеется выделенный сервер в Украине (Xeon X3430/8G RAM) и сервер в Голландии (Xeon X3440/4G RAM).
Задача: сделать чтоб сайт был доступен всегда. Для этого один и тот же сайт должен быть на двух серверах одновременно.
Мои размышления по этому поводу:
Наверно придется держать на каждом сервере по копии сайта. Для этого нам придется в реальном времени реплицировать базу данных и статические файлы (изображение, видео).
С базой данных, наверно, все просто. Думаю применить MYSQL репликацию master<>master (по другому наверно же никак?). А вот с файлами возникла дилемма... Файлы добавляются редко. Совместного доступа на запись к файлам нет. Изначально думал использовать DRBD + OCFS2... но на практике стало ясно, что DRBD работает прекрасно в режиме master<>master только тогда, когда сервера соединены кросовым кабелем. В моем же случае, при довольно частых пропаданиях связи между серверами, одна из нод DRBD иногда падает слейв, отваливается демон OCFS2 из за чего отмонтируется файловая система, и файлы бьются. Но самое главное то, что приходится ручками все это дело поднимать.DRBD можно допилить чтоб он автоматом синкался и поднимался в Prymary<>Prymary автоматом. Но вот как быть с OCFS2? Писать велосипед который будет проверять состояние DRBD и принимать решения что и как запускать - не хочется. Жаль что heartbeat не умеет работать с DRBD master<>master.
Сейчас настраиваю glusterfs. Как у нее обстоят дела с прерыванием связи между нодами? Подтягивает ли те файлы, которые были записаны в момент прерывания связи между нодами?
Балансировка нагрузки:
1) Проверять через GeoIP откуда пришел пользователь. Если не из Украины - отправляем на голландский сервер.
2) Если количество посетителей превышает некий лимит, то с украинского сервера перебрасываем на ww2.domain.com который на голландском сервере. Для поисковых систем прописать ww2 как зеркало.

Как, по Вашему мнению, лучше всего организовать файловую репликацию?

Заранее благодарен за ответ!

iron ()

SFQ hash nfct-dst - вешает интерфейс

Форум — Admin

В продолжение этой темы.

Проблема заключается в том, что при попытке сделать равномерное распределение трафика не по потокам а по айпишникам через SFQ, интерфейс на котором это делается «зависает» (т.е. перестает проходить какой либо трафик). раньше я использовал ESFQ, но он уже не поддерживается, и его функционал был перенесен в SFQ который есть в ванильном ядре. Вот текст скрипта:

TC="/sbin/tc"
$TC qdisc del dev eth0 root &> /dev/null
$TC filter del dev eth0 &> /dev/null
$TC class del dev eth0 &> /dev/null

$TC qdisc add dev eth0 root handle 1: htb default 20 r2q 10
$TC class add dev eth0 parent 1: classid 1:1 htb rate 1024mbit

$TC class add dev eth0 parent 1:1 classid 1:10 htb rate 100mbit burst 6k prio 0

$TC class add dev eth0 parent 1:10 classid 1:110 htb rate 256kbit ceil 100mbit prio 0 burst 6k
$TC class add dev eth0 parent 1:10 classid 1:120 htb rate 128kbit ceil 900kbit prio 7 burst 6k

$TC class add dev eth0 parent 1:1 classid 1:20 htb rate 1000mbit prio 2

$TC qdisc add dev eth0 parent 1:110 handle 110 sfq perturb 5
$TC qdisc add dev eth0 parent 1:120 handle 120: sfq perturb 5
$TC qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 5

# после добавления ниже перечисленных строк, полностью прекращается прохождения трафика через eth0
$TC filter add dev eth0 parent 110: protocol ip handle 1 flow hash keys nfct-dst divisor 256 baseclass 1:110
$TC filter add dev eth0 parent 120: protocol ip handle 1 flow hash keys nfct-dst divisor 256 baseclass 1:120
$TC filter add dev eth0 parent 20: protocol ip handle 1 flow hash keys nfct-dst divisor 256 baseclass 1:20

Подскажите пожалуйста где проблема.

Заранее благодарен!

iron ()

PHP4 extensions to PHP5

Форум — Admin

Доброго времени суток!

Так случилось, что нужно было перейти с php4 на php5. Но проблема заключается в том, что на сервере крутится компилиная софтина, и к ней веб-морда с php-шным модулем. А он не хочет работать с php5. В логах:

[Mon Feb 23 12:43:44 2009] [error] [client xxx.xxx.xxx.xxx] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/lib/php/extensions/xxxxx.so' - /usr/lib/php5/lib/php/extensions/xxxxx.so: undefined symbol: compiler_globals in Unknown on line 0, referer: http://xxxxxx.com/info.php

Связаться с девелоперами очень сложно. Можно ли каким-то образом заставить его работать в php5?

iron ()

[печаль] HDTV 1080i

Форум — Клуб

Доброго времени суток уважаемые форумчане.

Заранее хочу извинится что пишу в этой теме. Просто хочется услышать мысли знающих людей обитающих в этой ветке.

Уже два дня мучаюсь с проигрыванием HD видео под своим Gentoo Linux. И скажу честно, очень разочаровался в возможностях линукса по работе с HD видео.

Скачал вот этот фильм: http://torrents.ru/forum/viewtopic.php?t=968744 . Пробую его посмотреть посредством Mplayer:

mplayer -nobps -ni -forceidx -mc 0 -vo sdl -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all:threads=2 Cube.1997.1080i.HDTV.H.264.Rus.ts

В консоли появляется ошибки:

[h264 @ 0xab95c0]number of reference frames exceeds max (probably corrupt input), discarding one
[h264 @ 0xab95c0]number of reference frames exceeds max (probably corrupt input), discarding one
[h264 @ 0xab95c0]number of reference frames exceeds max (probably corrupt input), discarding one
[h264 @ 0xab95c0]mmco: unref short failure
[h264 @ 0xab95c0]mmco: unref short failure 2/ 2 ??% ??% ??,?% 0 0

Через секунд 5-10 появляются в консоли:

A: 741.0 V: 736.8 A-V: 4.255 ct: 2.970 1005/1005 55% 3% 2.6% 0 0
Слишком много (106 в 8440370 байтах) видеопакетов в буфере!
Возможно Вы проигрываете 'неслоёный' поток/файл или неудачный кодек?
Для AVI файлов попробуйте форсировать 'неслоёный' режим опцией -ni.

...и при этом начинает тормозить видео, отставая от звука. Опция -ni ничего не изменила.

Пробовал менять -vo sdl,xv,x11,gl,gl2, пробовал -nocache и -cache 1048576 (максимальный размер), пробовал -framedrop и даже -hardframedrop - но в консоли выдаются все те же ошибки, и все так же тормозит видео. Даже пробовал другие фильмы. результат тот же.

Пробовал соберать mplayer из SVN, пробовал бинарную сборку - тоже самое. Собрал vlc и xine. Так они вообще при попытке просмотреть этот файл сегфолтятся.

Самое интересное то, что под WindowsXP x64 этот файл отлично проигрывается посредством Media Player Classic. Где-то читал, что в K-Lite Codec Pack, а именно в кодеке этого формата, применяется во первых много поточности декодирования, а во вторых опережающее декодирование, что позволят просматривать без тормозов HD видео на не очень мощных компьютерах.

Аппаратно-программная часть:

CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ (2200Mz каждое ядро)
RAM: 3G
Video: NVIDIA GeForce 6600 GT
Video Driver: nvidia-drivers-177.80
Sound: Creative Labs SB Live!
MotherBoard: Asus A8N-SLI Premium
Kernel: 2.6.26.6
Mplayer: mplayer-1.0_rc2_p27725-r1
Mplayer USE flags: 3dnow 3dnowext X a52 aac alsa dga dv dvd enca ftp gif gtk iconv jpeg mad mmx mmxext mp2 mp3 opengl oss quicktime samba sdl srt sse sse2 ssse3 theora truetype unicode vorbis x264 xscreensaver xv xvid xvmc

При проигрывании mplayer форкается на 2 процесса. При просмотре, из 2-х ядер CPU, грузится лишь одно на 50%. Видимо декорер не поддерживает много поточность.

Буду рад услышать любые мысли по этому поводу, уважаемые.

Неужели в линуксе все настолько печально с H.264?

iron ()

quotacheck & quotaon

Форум — Admin

Доброго времени суток, уважаемые.

Продолжая тему http://www.linux.org.ru/view-message.jsp?msgid=3122701#3126639 автором которой являюсь я.

На обеих серверах Gentoo.

У меня почему-то с квотами творится какая-то мистика... На одном сервере при загрузке автоматически включаются квоты. Даже не выполняя команду quotaon. Причем на DRBD разделе. А вот на другом сервере, квоты почему-то слетают при каждой перезагрузке. Причем /etc/init.d/quota запускается автоматически(с которого также вызывается quotacheck).

# rc-update -s | grep quota
quota | boot

По поводу quotacheck. Насколько я понимаю, он нужен для проверки целостности квот. А о какой целостности говорится - не понятно. Елинственное что приходит на ум - это отправка юзерам warnquota мессаг. Но зачем рекомендуют его выполнять в crontab - тоже не понятно. Тем более, если его запускать при смонтированном разделе, то возможно повреждение данных. Тогда, получается, нужно по крону отмантировать раздел, и запускать его? Но зачем он вообще нужен, если мне не нужно отсылать юзерам уведомление.

Вопросы:
1) Каким образом могут автоматически включатся квоты без quotaon? Может это особенность 2-й версии quota?
2) Все таки для чего нужен quotacheck? Зачем его запускать при загрузке системы и по крону?

Заранее благодарен за ответы!

iron ()

Инет-радио

Форум — Desktop

Всем привет.

Уже давно слушаю инет радио на работе. Но время от времени возникает роблема. Когда сбоит соединение с сервером, то радио постоянно прерывается, из за чего его слшать просто невозможно. :(

Написал скрипт, который при обрыве соединения, переподключается к следующему серверу в соответствии с плей-листом.

#!/bin/bash

while [ 1 ]; do
for i in http://scfire-dll0l-1.stream.aol.com:80/stream/1048 http://scfire-chi0l-1.stream.aol.com:80/stream/1048 http://scfire-nyk0l-1.stream.aol.com:80/stream/1048 http://scfire-dll0l-2.stream.aol.com:80/stream/1048 http://scfire-nyk0l-2.stream.aol.com:80/stream/1048 http://scfire-chi0l-2.stream.aol.com:80/stream/1048 http://scfire-ntc0l-1.stream.aol.com:80/stream/1048 http://scfire-ntc0l-2.stream.aol.com:80/stream/1048 http://207.200.96.226:8048 http://radioparadise.steadyhost.com:8060 http://radioparadise.steadyhost.com:8050 http://64.236.34.97:80/stream/1048;do
mplayer -cache 2000 $i
done
done

Но к сожалению параметр -cache никаким образом не спасает от глюков при проигрывании. Даже когда я ставлю большой размер кеша, то при глюке соединения, всеравно радио прерывается.

Внимание вопрос: Каким образом можно слушать радио без прерываний. Не обязательно mplayer-ом. Можно и другой прогой, только лишь бы работало нормально.

Заранее благодарен!

iron ()

Сложный вопрос про htb и Squid

Форум — Admin

Всем привет.

Заранее хочу извинится за длинный текст.

Прошу помочь разобраться с маркировкой пакетов перед отправкой в определённый класс шейпинга.
Дано: сервер под управлением Gentoo со Squid-ом на борту. Два канала инета по 4М мира и 100М украины, по которым сервер равномерно распределяет нагрузку. До сих пор все шейпились в одном классе с максимальной скоростью 6000kbit (собственно исходя из толщины мирового канала) и при помощи esfq и hash dst равномерно распределялось по всем айпишникам (а не по потокам как в sfq). Но как показала практика, это не совсем оптимальное использование каналов. Посему возникла необходимость по Украине пускать с полной скоростью 100M, а мир как и раньше загонять с 6000kbit-ный класс как и раньше.

Вот как я все это реализовал:
Есть корневой класс 1: который я поделил на 1:10 со скоростью 6000kbit и приоритетом 0 (чтоб качающие по украине были в приоритете ниже чем по миру), и 1:20 со скоростью 200М (учитывая что два канала по 100М).

Вот как заворачиваю трафик в 1:10:
IPT -t mangle -A POSTROUTING -d 192.168.0.0/16 -o eth0 -j CLASSIFY --set-class 1:10

Вот как проверяю и заворачиваю в 1:20 (UA-IX):
$IPT -t mangle -N UA-IX
for i in `cat /etc/conf.d/ua-list.txt`; do \
$IPT -A UA-IX -t mangle -s $i -j CLASSIFY --set-class 1:20
done
$IPT -A POSTROUTING -t mangle -d 192.168.0.0/16 -o eth0 -j UA-IX

В чем собственно проблема:
Поскольку у меня еще и Squid работающий в прозрачном режиме, то пакеты выползающие с eth0 и идущие в локалку прекрасно захватываются правилом -t mangle -A POSTROUTING -d 192.168.0.0/16, поскольку мы проверяем адрес получателя а не источника. А вот правило, которым нужно проверять по источнику -A UA-IX -t mangle -s <UA-IX net> не срабатывают, так как пакеты не проходят через цеполчку POSTROUTING, потому, что они выходят с Squid-а а не роутятся с инета. Я пробовал -n mangle -A OUTPUT, но результат тот же. Без Сквида, понятное дело, что все работает.

Внимание вопросы:
1) Можно ли каким-то образом маркировать пакеты выходящие из Сквида в локалку по адресу источника?
2) Можно ли маркировать только пакеты с установленным SYN флагом, чтоб не прогонять весь трафик через всю цепочку UA-IX? Знаю, что можно юзая CONNMARK, но проблема в том, что у меня уже маркируются таким образом соединения при балансировке нагрузки каналов:
$IPT -A POSTROUTING -t mangle -j MARK --set-mark 0x200 -m state --state NEW -o $IF1
$IPT -A POSTROUTING -t mangle -j MARK --set-mark 0x100 -m state --state NEW -o $IF2
$IPT -A POSTROUTING -t mangle -j CONNMARK --save-mark -m state --state NEW
Тогда каким образом делать CONNMARK, чтоб одно не мешало другому?

Заранее благодарен за ответы!

>>>

iron ()

User Quota

Форум — Admin

Всем привет.

Почему-то не работают квоты для пользовтелей, у которых в имени содержется точка. То есть команда..

setquota -u test.test 256000 286720 0 0 /dev/md3

...молча выполняется, но при этом квота не выставляется :(.

# quota test.test Disk quotas for user test.test (uid 1568): none

При выполнении repquota -a, вообще не показывает юзера, в логине которого есть точка. Хотя пользователь существует:

# id test.test uid=1568(test.test) gid=1568(test.test) groups=1568(test.test)

Ребята, можно ли как-то решить эту проблему? Заранее благодарен за любые мысли по этому поводу.

>>>

iron ()

exim квоты

Форум — Admin

Доброго времени суток, товарищи.

Не подскажет ли великий All как настроить проверку квот exim-ом перед получением почтового сообщения? Гугл выдал ссылки на настройку exim с проверкой квот которые хранятся в LDAP или MySql. Но мне этот метод не подходит, так как пользователь имеет личные файлы которые находятся на этом же разделе, что и папка с mailbox-ами. То есть приходится применять квоты на уровне файловой системы. И нужно проверять суммарную квоту, по всем файлам пользователя, которые хранятся на этом разделе. Тогда возникает вопрос: что прописать в "quota = " в exim.conf для проверки квоты файловой системы?

Может можно как-то в строке "quota = " прописать выполнения перлового скрипта, который будет проверять квоту для юзера (выполняя shell команду quota -u <user>), и выдавать инфу exim-у в нужном виде.

Заранее благодарен!

>>>

iron ()

LDAP репликация

Форум — Admin

Доброго времени суток уважаемый All!

не могу настроить репликацию :(.
Система Gentoo. Openldap собран с вот такими USE флагами:

[ebuild R ] net-nds/openldap-2.3.41 USE="berkdb crypt gdbm overlays perl samba slp ssl -debug -ipv6 -kerberos -minimal -odbc -sasl (-selinux) -smbkrb5passwd -tcpd"

Настройки /etc/opeldap/slapd.conf MASTER:
replogfile /var/lib/ldap/replog
replica uri="ldap://192.168.0.250:389" bindmethod=simple binddn="cn=replicator,dc=domain,dc=ua" credentials=pass

Настройки /etc/opeldap/slapd.conf SLAVE:
updatedn cn=replicator,dc=domain,dc=ua
updateref ldap://192.168.0.249:389
access to * by dn="cn=replicator,dc=domain,dc=ua" write

На МАСТЕРЕ запускаю slurpd в отладочном режиме: /usr/lib/openldap/slurpd -d 65535 -f /etc/openldap/slapd.conf
Последнее что вижу:
Config: (index cn,mail,surname,givenname eq,subinitial)
Config: ** configuration file successfully read and parsed
begin replication thread for 192.168.0.250:389
...и все. При любых изменениях на мастер-лдапе slurpd вообще не реагирует.

Перечитал уже валом док, но так и не понял почему slurpd не хочет реплицировать на СЛЕЙВ лдап :(

где я ошибся?

Заранее благодарен!

>>>

iron ()

MySql запрос

Форум — Web-development

Привет ребята.

Есть поле ip таблицы ranges с типом varchar(100), в котором находится примерно такие данные: 192.168.0.1-100
Мне нужно запросом проверить входит ли конкретным айпишник: 192.168.0.99 в тот диапазон, который указан в таблице. Если входит, то вывест запись. Делаю вот так:

SELECT * FROM ranges WHERE ip REGEXP '192.168.0.[выражение]';

Помогите пожалуйста написать регуляр(или может как-то подругому), который проверял бы соответствует ли последняя цифра айпишника (99) какому-то из диапазонов поля ip.
Мускуль 4.1.22

Зарание очень благодарен.

>>>

iron ()

RSS подписка на новые темы