Войти через loginza
Закрыть панель

4

Сен

2011

Nginx

Распечатать статью Разместил: spider. Рубрика Linux, WebDesign | 2 коммент. »

В предыдущей статье я затрагивал тему nginx.
А значит нужно его установить.
nginx [engine x] — это HTTP-сервер и почтовый прокси-сервер. Я начал разрабатывать nginx весной 2002 года, а осенью 2004 года вышел первый публично доступный релиз. В декабре 2009 года nginx использовался на 4% самых посещаемых сайтов в мире.
Я буду рассматривать установку в привычной и используемой мной системе Ubuntu Server 10.04 LTS, хотя думаю установка будет мало чем отличаться в любых Ubuntu-подобных системах, и возможно на Debian и его клонах.
Итак поехали.
Установка сводится к банальному
sudo aptitude install nginx
Готово. Теперь нужно немного подкорректировать конфиги , как самого nginx так и apache.
Начнем с apache :
Открываем /etc/apache2/ports.conf

NameVirtualHost *:80
Listen 80

меняем на :

NameVirtualHost *:88
Listen 88

Так как на 80 порту у нас теперь будет nginx.
Если у Вас уже было куча Виртуалхостов смените у них порты с 80 на 88 (хотя и это только для примера, — использовать можете любой).
И теперь коснемся самого nginx.
Редактировать мы будем секцию

http {
upstream backend
{
server 127.0.0.1:88;
}
server {
listen 80;
location ~/\.ht {
deny all;
}
location / {
proxy_pass http://backend/;
proxy_set_header Range "";
proxy_set_header Request-Range "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

Перезапускаем сервисы :

/etc/init.d/apache2 restart
/etc/init.d/nginx restart

 

23

Июн

2011

Хешируемые списки iptables — ipset

Распечатать статью Разместил: spider. Рубрика Linux, сеть |

Давно хотел написать статью по ipset, но все как то руки не доходили.

А тема то для меня довольно интересная.

Да и намучался одно время  я достаточно с этим.

Итак — для чего оно вообще нужно ? И кому ?

Для этого рассмотрим немного теории.

Используется в основном это дело на маршрутизаторах с установленной ОС Linux.

Для того, чтоб выпустить клиента в сеть достаточно добавить в фаерволе всего несколько простых правил.

Например :

/sbin/iptables -t NAT -I POSTROUTING -s $IP_Client -o eth1 -j MASQUERADE
/sbin/iptables -I FORWARD -s $IP_Client -j ACCEPT
/sbin/iptables -I FORWARD -d $IP_Client -j ACCEPT

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

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

Для 1 или 100 клиентов это конечно не много и современные машины вполне спокойно справляются с такой нагрузкой.

Но представьте, что если клиентов 1000 или больше ?

Прежде чем выпустить хоть 1 пакет он должен пробежаться по ВСЕМ 3000 правилам. Почему 3000 — потому что для каждого клиента мы написали по 3 правила.

И чем больше клиентов, тем соответственно пакет не попадет в инет пока не пробежит по всем правилам.

А теперь представьте, что хотя бы половина клиентов использует программы p2p, где создается более 200-300 соединений для 1 клиента.

Вот тут я и понял что основной задачей стоит уменьшение правил фаервола.

Но как их уменьшить-то ?

Вот тут нам на помощь и приходит ipset.

Ipset представляет собой программу для работы с наборами адресов IP (IP set) в ядре Linux. Программа позволяет создавать, изменять и проверять наборы адресов IP, с которыми работает ядро Linux (включая netfilter/iptables). IP set может включать в себя адреса IP, номера портов TCP и UDP, а также дополнительную информацию.

От теории к практике.

Не знаю как на других дистрибутивах, но на Linux Ubuntu Server все ставится достаточно просто :

sudo apt-get install module-assistant
sudo apt-get install ipset-source
/sbin/m-a a-i ipset

вот и все что требуется — модули будут загружены и скомпилированы автоматически.

Что же делать дальше ?

А вот что :

Смотрим наши правила и заменяем их списками :

/sbin/ipset -N FFIN ipmap --network 192.168.0.0/16
/sbin/ipset -N FSNAT ipmap --network 192.168.0.0/16

Создаем 2 цепочки для форварда и для НАТа.

/sbin/iptables -t mangle -I FORWARD -m set --set FFIN src,dst -j ACCEPT
/sbin/iptables -t mangle -I FORWARD -m set --set FFIN dst,src -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING  -m set --set FSNAT src -o $eWAN -j MASQUERADE

И ВСЕ.

Теперь только заполняем списки

/sbin/ipset -A FSNAT $IP_Client
/sbin/ipset -A FFIN $IP_Client

Теперь в фаерволе вместо 3000 правил реально будет только 3. ТРИ. Всего то 3 правила-списка.

Это колоссально снизит нагрузку на процессор.
Более детально про ipset можно почитать тут или

 man ipset
 

15

Янв

2011

Индикатор заряда в UBUNTU 10.04

Распечатать статью Разместил: spider. Рубрика Linux |

Данная заметка скорее напоминание себе, а может и еще кому пригодится.

Предистория :

Установлена свежая версия Ubuntu 10.04 (хотя данный баг был и на предыдущих версиях).

Не работает корректно индикатор батареи. Т.е. он работает, но показывает всегда 100% зарядку батареи даже при половинном заряде от сети.

От батареи более менее работает.

Решение :

идем в /boot/grub/grub.conf

Ищем что-то типа :

menuentry 'Ubuntu, с Linux 2.6.32-27-generic mod' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set a8f444e7-1f6c-4812-9cf8-f01546c2f4f1
linux   /boot/vmlinuz-2.6.32-27-generic root=UUID=a8f444e7-1f6c-4812-9cf8-f01546c2f4f1 ro   quiet splash
initrd  /boot/initrd.img-2.6.32-27-generic
}

И меняем на

menuentry 'Ubuntu, с Linux 2.6.32-27-generic mod' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set a8f444e7-1f6c-4812-9cf8-f01546c2f4f1
linux   /boot/vmlinuz-2.6.32-27-generic root=UUID=a8f444e7-1f6c-4812-9cf8-f01546c2f4f1 ro   quiet splash acpi=noirq pci=noacpi, routeirq
initrd  /boot/initrd.img-2.6.32-27-generic
}

т.е. добавляем :

acpi=noirq pci=noacpi, routeirq

Перегружаемся.

И все.

А Вам нравится варено-копченая колбаса ? Сравните сами.