Dormestmass: Админ — это состояние души

Борьба с битом DF и черными дырами или как фрагментировать нефрагментируемое

В заголовке IP пакета имеется один интересный флаг —«don't fragment» или сокращенно DF. Назначение сего флага — запретить разбивку пакета на фрагменты. Честно говоря, ситуации, когда встречаются пакеты с этим флагом довольно редки, но они таки бывают и могут надолго испортить настроение администратору/пользователю вот по какой причине.

Различные технологии канального уровня предусматривают различный размер MTU. И вполне естественно, что на пути следования трафика между сервером и клиентом могут попадатся сегменты с разными размерами MTU. На схеме ниже показана ситуация, когда клиент подключен к сети через GRE-туннель, у которого размер MTU на 24 байта меньше, чем у исходящего реального интерфейса.

Клиент хочет произвести некий обмен трафиком с удаленным сервером, а вот сервер выставляет этот самый флаг на свои исходящие пакеты.

Происходит следующая ситуация. Во время установки TCP-сессии клиент и сервер анонсируют свои максимальные размеры сегментов (maximum segment size или MSS), показывая друг другу какие максимальные TCP сегменты они могут принимать. После получения опций MSS устройства вычисляют максимальный размер сегмента, который будет посылатся удаленной стороне (Send Max Segment Size или SMSS). SMSS будет равен размеру меньшего MSS. Процедура установки TCP MSS описана в RFC 879.

В нашем случае как у клиента, так и у сервера максимальный размер сегментов, которые они могут обработать — 1500 байт, ибо подключены они к своим маршрутизаторам по локальной сети. Соответственно SMSS для TCP сессии будет установлен в 1500.

Далее »

Популярность: 10%

Readerone - sony 350 под заказ через сайт.

Небольшие изменения на блоге

Собственно мой мизерный отпуск подошел к концу (сразу ассоциация — «пиво подошло к концу» :) )). С новыми силами взялся за работу и, наверное, за написание постов.

Пока руки дошли только до небольшого изменения в дизайне.

  1. Добавил ссылки на тематические блоги, которые регулярно сам читаю. Надеюсь, что со временем этот список будет только расти.
  2. Зарегистрировался на FeedBurner. Уж дюже захотелось считать читателей :) Соответственно можно подписатся на чтение RSS через этот сервис.

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

Популярность: 1%

Squid: привязка имени пользователя к IP

Согласно последних требований нашей службы информационной безопасности на проксике необходима привязка пользователя к IP адресу. И хотя особого смысла в этом не вижу, однако требования есть требования.

Установить соответствие «имя пользователя — IP» сделать довольно просто. Для этого используется external helper — ip_user_check.

Для начала нужно создать файл соответствия имен и адресов:

root@proxy # cat /etc/squid/ip_user.conf
# Format: IP USER
10.10.10.58 user01
10.10.10.66 rshramko
...

Имя пользователя чувствительно к регистру. Хотя это особой погоды не делает, т.к. как я заметил, что браузеры всё равно преобразуют имя пользователя в нижний регистр.

Дальше подключаем helper к squid:

...
# создаем ACL для проверки соответствия с названием ipcheck
external_acl_type ip_user %SRC %LOGIN /usr/lib/squid/ip_user_check -f /etc/squid/ip_user.conf
acl ipcheck external ip_user
...
# у меня пользователи аутентифицируются из LDAP, ACL называется ldapusers
http_access allow ldapusers ipcheck
...

Даем команду сквиду на перепрочтение файла конфигурации и проверяем работу.

Популярность: 9%

Подземный стук или падения Gimp-a

Графическими редакторами практически не пользуюсь... А вот вчера решил подкоректировать фотки, сделанные цифровиком, да отнести их в печать. И, блин, наткнулся на такие вот грабли:

The program 'gimp' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadWindow (invalid Window parameter)'.

Ошибка сия вылезала неожиданно, при выполнении операции, без которой ну никак нельзя было обойтись.

Для начала обновил дерево портов, попробовал проапдейтить Gimp. Непомогло.

Потом начал грешить на мудреные ключи оптимизации для сборки портов. Поставил банальные -O2 -s -pipe. Пересобрал — те же яйца. :(

Вопсчем бился бы я долго да безуспешно, но, к счастью, на одном из форумов нашел подсказку — предложение проапгрейдить библиотеку x11/libX11. Как оказалось, оно было верным. Кстати, патчик для libX11 patch-src::GetMoEv.c датируется 22 июнем.

Популярность: 1%

Настройка почтового релея на базе sendmail

В данном посте я хочу рассказать о настройке почтового сервера для маршрутизации почты (релея).

Причин для создания такого сервера существует несколько. Например, для доставки почты внутрь разветвленной корпоративной сети. Второй пример — некоторые господа админы в качестве основного почтового сервера предпочитают виндовый софт, типо MDaemon, Kerio и иже с ними, но в инет предпочитают выставлять релей, построенный на nix-ах.

Я расскажу о настройке почтового маршрутизатора на базе sendmail. В качестве ОС используется FreeBSD.

Первое, о чем следует позаботится, это соответствие DNS записей для вашего сервера в прямой и обратной зонах. Для тех, кто не знает что это, поясню на примере. Допустим, имя вашего почтового сервера mail.domain.ua и IP адрес — 195.195.195.195. Так вот, IP адресу 195.195.195.195 должно соответствовать имя mail.domain.com.

srn@mail ~>> host mail.yandex.ru
mail.yandex.ru has address 213.180.204.25
srn@mail ~>> host 213.180.204.25
25.204.180.213.in-addr.arpa domain name pointer mail.yandex.ru.

Далее »

Популярность: 11%

XOrg: отдельная раскладка в каждом окне

Для пользователей, которые перешли с Винды на unix-like desktop несомненное неудобство представляет собой раскладка клавиатуры, которая действует глобально для всех окон. По себе знаю, как иногда раздражает бесконечные переключения с латинницы на кириллицу при смене приложений.

В продвинутых средах KDE и Gnome имеются свои встроенные переключатели раскладок kkbswitch и gswitchit соответственно. Насчет гнома ничего конкретного сказать не могу по причине неюзания его самого, а вот в переключатель в KDE просто отвратный. Может у меня что-то с генами не то, но настроить его нормальную работу у меня так и не получилось.

К счастью, существует третий вариант, который работает без нареканий практически в любом Window-менеджере. И имя ему xxkb.

Далее »

Популярность: 5%

FreeBSD: Перенос рабочей системы

Сегодня в моей жизни свершилось радостное событие. Наконец-то выклянчил себе новехонький системный блок для своего десктопа. И сразу столкнулся с проблемой переноса ОС со старого компутера на новую железку.

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

Итак, первый вариант — прицепить винчестер с нового компа к старому системнику и зазеркалить винчестер.

Дело, в общем-то, нехитрое. Прицепив новый жесткий диск нужно предварительно его разбить. Сама процедура разбивки хорошо описана в хэндбуке.

После того, как на новом винчестере созданы слайсы, создадим временное поддерево в файловой системе и монтируем их туда (в данном случае новый hdd у нас /dev/ad1):

oldhost# mkdir /newhdd
oldhost# mkdir /newhdd/root
oldhost# mkdir /newhdd/usr
oldhost# mkdir /newhdd/var
oldhost# mount /dev/ad1s1a /newhdd/root
oldhost# mount /dev/ad1s1f /newhdd/usr
oldhost# mount /dev/ad1s1d /newhdd/var

Далее осуществляем непосредственный перенос данных:

oldhost# rdump -0f - / (cd /newhdd/root && rrestore -uyrf - )
oldhost# rm /newhdd/root/restoresymtable
oldhost# rdump -0f - /usr (cd /newhdd/usr && rrestore -uyrf - )
oldhost# rm /newhdd/usr/restoresymtable
oldhost# rdump -0f - /var (cd /newhdd/var && rrestore -uyrf - )
oldhost# rm /newhdd/var/restoresymtable

Выключаем систему, цепляем новый винчестер в новый системный блок (или просто отключаем старый, в зависимости от наших целей), и наслаждаемся жизнью.

Второй вариант немного сложнее и продолжительнее по времени. Но в ряде случаев, как-раз он и будет предпочтительным. Например, мы имеем опломбированный системный блок или хотим перенести систему на SCSI-диск, а в старом системнике нет контроллера.

В данном случае нам понадобится предустановленная система на новой железке. Заводим на ней пользователя и поднимаем sshd.
Далее выполняем дамп файловых систем по сети. Предварительно на новом хосте нужно создать файлы, в которые будет писаться дамп.

srn@newhost >> touch root.dump usr.dump var.dump
oldhost# setenv RSH /usr/bin/ssh
oldhost# rdump -0uLB 104857600 -f srn@newhost.domain.com:/home/srn/root.dump /
oldhost# rdump -0uLB 104857600 -f srn@newhost.domain.com:/home/srn/usr.dump /usr
oldhost# rdump -0uLB 104857600 -f srn@newhost.domain.com:/home/srn/var.dump /var

Маленькое замечание. Ключ -B служит для указания размера ленты на удаленном хосте (в килобайтах). В нашем случае необходимо указать размер, заведомо больший, чем файл дампа.

Далее восстанавливаем систему из созданных файлов.

newhost# cd / ; rrestore -uyrf /home/srn/root.dump ; rm /restoresymtable
newhost# cd /usr ; rrestore -uyrf /home/srn/usr.dump ; rm /restoresymtable
newhost# cd /var ; rrestore -uyrf /home/srn/var.dump ; rm /restoresymtable

Если нужно, то корректируем файлы конфигурации системы и перезагружаемся.

Популярность: 4%