Принесли на днях компьютер, который выполнял ранее роли офисного маршрутизатора, почтового сервера, офисной же файлопомойки и VPN-сервера для нескольких внешних подключений.
Проблема заключалась в том, что начал сыпаться винт. К слову, на машинке установлена FreeBSD, которая проработала там довольно солидный срок.
Так вот, в связи с неизбежной гибелью винта, невозможным стал вход в систему даже в single-user режиме.
Естественно, первым делом был скачан LiveCD Frenzy (версия 1.3, если что).
Soekris net4511, GPRS и PPTP
Дано. Интернет, Soekris net4511, флеш-карта на 128 МБайт, PCMCIA GPRS-модем Huawei EG602, карточка от МТС, консольный шнурок, пинок.
Необходимо. Вставить карточку в модем, модем в Soekris, нарулить на эту железяку ОС, которая и карточку подхватит, и на 128 МБайтах поместится, выйдет в Интернет да построит с одним из серваков PPTP-тоннель.
Ограничение скорости по MAC-адресу во FreeBSD
На днях возникла необходимость на FreeBSD маршрутизаторе порезать канал для одной из машин. Поскольку на нем стоит DHCP-сервер без привязки IP-адресов к MAC’ам — пришлось исхитриться, полазить в гугле и понять, как порезать ширину канала, используя только MAC-адрес.
ipfw add <номер_правила> pipe <номер_правила> \ ip from any to any MAC any <MAC-адрес> \ layer 2 in # Входящий трафик ipfw add <номер_правила+5> pipe <номер_правила+5> \ ip from any to any MAC any <MAC-адрес> \ layer 2 out # Исходящий трафик
А теперь указываем ширину канала для каждого направления
ipfw pipe <номер_правила> config bw <ширина_канала> ipfw pipe <номер_правила+5> config bw <ширина_канала>
+5 к правилу добавляю для того, чтобы разделить направления. По желанию, можно или впихнуть все в одно правило. Ширина не обязательно должна быть +5, это так, моя привычка.
Изменение initramfs
Недавно возникла ситуация, когда после аварии системы охлаждения упал сервак. Ремонт сделали, но он упорно не хотел подниматься на том ядре, на котором он должен был. Матерился на то, что модуль ehci-hcd вызывает сбой, который приводит ядро в панику. Поскольку на том сервере нахер не нужен USB я решил не заморачиваться, а просто исключить его из списка загружаемых модулей.
Итак. Копируем куда-нибудь initrd образ и распаковываем его:
cp /boot/initrd-2.6.25.img ~/temp/ mv initrd-2.6.25.img initrd-2.6.25.img.gz gzip -d initrd-2.6.25.img.gz cpio -ic < initrd-2.6.25.img rm initrd-2.6.25.img
Далее комментируем или удаляем строчки (тут приведены для моего случая):
#echo "Loading ehci-hcd.ko module" #insmod /lib/ehci-hcd.ko #echo "Loading ohci-hcd.ko module" #insmod /lib/ohci-hcd.ko #echo "Loading uhci-hcd.ko module" #insmod /lib/uhci-hcd.ko #mount -t usbfs /proc/bus/usb /proc/bus/usb
После этого нам остается упаковать обратно образ и залить его в /boot:
find . -print | cpio -oc | gzip -9 -c > ../initrd.new.img cp initrd.new.img /boot/initrd.new.img
Ну и, естественно, внести изменения в /boot/grub/menu.lst
Тюнинг Squid’а. Отсебятина
Использование рекомендаций, указанных в предыдущем посте позволило уменьшить потребление ресурсов на моем сервере (RHEL 5, ядро 2.6.25.11, Squid-3.0.STABLE24, кол-во клиентов 1500+).
Что было предпринято:
- Отключено логирование access.log и store.log
- Включена директива pipeline_prefetch
В итоге нагрузка на процессор упала с ~60-80% до ~1-15% в «спокойное» время, нагрузка на память с ~90% до ~20-60%. Но, к сожалению, я уделил внимание чтению лога cache.log, в котором было очень много сообщений о том, что закончились свободные файловые дескрипторы. ulimit -Ha показал что у меня их максимум равен 1024. Решение проблемы:
ulimit -HSn 65535 sysctl -w fs.file-max=65535
После этого я решил пересобрать squid:
./configure --with-linux-netfilter --with-large-files --enable-storeio=diskd,ufs --with-filedescriptors=65535 make; make install clean service squid restart
Тюнинг и закалка Squid’а
Автор статьи не я. Это всего лишь мой перевод этой статьи. Некоторые абзацы я пропущу, да простит меня автор статьи. Итак:
Тюнинг и закалка Squid’а является темой данной статьи, где под тюнингом мы будем подразумевать некоторое ускорение работы данного ПО, а под закалкой — обеспечение более безопасной и менее уязвимой работоспособности прокси-сервера. Стандартная установка Squid’а на Debian-сервер имеет множество включенных фич, большинство из которых просто-напросто не используется. Собственно их мы и хотим отключить. Также возможны ситуации, при которых нам нужно использовать Squid, но мы не хотим чтобы он кешировал — мы и на это обратим внимание.