Установка FreeBSD 9.0-RELEASE по сети

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

Машинка неплохая, но в ней было привода оптических дисков и IDE-разъемов для его подключения. Только SATA-слоты. SATA-привода у меня, увы, не нашлось, а MP3-плеер в качестве флеш-накопителя для установки использовать я не захотел.

Решил на рабочем компьютере поднять FreeBSD 9.0-RELEASE в VirtualBox’е и сделать из него сервер для установки через сеть.

Читать дальше

BGP и два канала

К одной удаленной точке, которая была доступна только по WiFi, появился 100 Мбит/с канал. Решили сделать так, чтобы при падении 100 Мбит/с канала связь переруливалась на WiFi, а при восстановлении — все переруливалось обратно (т. к. пользователям той удаленной точки мы предоставляем интернет). С обеих сторон стоят циски, есть небольшой пул «белых» IP-адресов.

Первым делом задал два default-маршрута с разной метрикой:
Читать дальше

Восстановление файлов с сыпящегося винта (ОС FreeBSD)

Принесли на днях компьютер, который выполнял ранее роли офисного маршрутизатора, почтового сервера, офисной же файлопомойки и 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+).
Что было предпринято:

  1. Отключено логирование access.log и store.log
  2. Включена директива 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, но мы не хотим чтобы он кешировал — мы и на это обратим внимание.

Читать дальше