Сливание прошивки с древней железяки

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

RS-232 кабелем подсоединился к железке и начал подбирать нужный baud rate (прошивка, как и загрузчик, к слову, не оригинальные, которые идут в поставке).

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

Обновление IOS через tftp

Привезли маршрутизатор Cisco 2811 и дали указание залить более новый IOS. Ок, сделаем. Поднял на ноутбуке (стоит xubuntu 11.04) tftp-сервер:

sudo apt-get install tftpd-hpa

Потом привел /etc/default/tftpd-hpa в такой вид:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="10.0.1.195:69"
TFTP_OPTIONS="-p -v -v -v -c -s"

Дальше перезапустил tftpd:

sudo /etc/init.d/tftpd-hpa restart

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

Подвисшие PPtP-сессии в mpd5

После перезагрузки сервера, на котором установлены mpd5 и FreeRADIUS, клиентам, которые коннектятся по PPtP начала вылетать ошибка 691, при том, что логин/пароль и параметры безопасности были введены правильно. В radius.log’е была куча таких сообщений:

Tue Jul 24 10:34:33 2012 : Auth: Multiple logins (max 1) [MPP attempt]: [vpnlogin/] (from client localhost port 4 cli )

Похоже, подвисли сессии. Решилось просто: командой radwho получил список сессий, а командой radzap их прибил. После этого все стало хорошо 🙂

Передача BGP-префиксов на Cisco

Дано: два апстрима, от одного из которых я принимаю full-view (World), от второго только украинские префиксы (UA).
Задача: отдать default route и, отдельно, украинские префиксы пиру Target и принять и проанонсить его префиксы аплинкам. Украинский трафик, естественно, должен ходить через UA, остальной через World.

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

Ограничение скорости внутри VLAN на Cisco

mls qos
class-map match-any CustomerVLAN
 match access-group name customer-policy_inbound
 match access-group name customer-policy_outbound
!
policy-map VLAN-policy
 class CustomerVLAN
  police 1000000000 conform-action transmit exceed-action drop violate-action drop
!
interface Vlan10
 description Customer
 ip address x.x.x.x x.x.x.x
 mls qos bridged
 service-policy input VLAN-policy
 service-policy output VLAN-policy
!
interface TenGigabitEthernet4/1
 description Trunk
 switchport
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 10
 switchport mode trunk
 mls qos vlan-based
!

 

BGP и два канала

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

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

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