Небольшая пауза

Привет всем. Может кто и заметил, но бложек (а вместе с ним и weeg.ru, плюс и другие бложики) провалялся почти две недели в дауне. Нет, что-то фатальное с ним не случилось, просто чуток поломались разделы в системе на виртуалочке, коей у меня выступает FreeBSD.

freebsd

Банальный `fsck_ufs -y СЛАЙС` для каждого слайса справился с этим на ура. Собственно, ура, товарищи.

ps. ну и если кто спросит почему так долго не заводил виртуалку, если все так просто, отвечу — некогда и лень.

pps. можно было, думаю, сделать все и одной командой типа:
`fsck_ufs -y /dev/da0s1[a..e]`

Роутинг с помощью PF на FreeBSD

Последнее время занимался не только облаками на Xen Cloud Platform, но и регистрацией своей автономной системы (AS) и приобретением пула адресов (купил /23 сеть). Все бы хорошо, но вышестоящий провайдер — Мультима — что-то тянет время и уже неделю как не может мне предоставить все что надо для установки bgp-сессии и начала анонсирования своей сетки.

Но перед этим прокачал скилл владения фаерволом PF на FreeBSD. Поясню.

Организация сети у меня в организации непростая и я использую двух провайдеров для доступа в интернет. Одна сеть (размером /25) принадлежит одному провайдеру и пускать ее наружу через второго — Мультиму — никто не будет. Однако анонсировать свою новую сеть буду через эту самую Мультиму, поэтому дефаулт шлюз будет именно туда.

Роутить по источнику FreeBSD не умеет, а вот заворачивать трафик умеет PF, поэтому меня спасло вот такие кренделя:

pass out quick on $ext0_if route-to ($tun0_if $tun0_gw) inet proto { tcp, udp, icmp, 41, gre } from $mini_lan to !(self) keep state
pass in quick on $tun0_if reply-to ($tun0_if $tun0_gw)
pass in quick on $ext0_if reply-to ($ext0_if $ext0_gw)

где $ext0_if смотрит в мультиму, $tun0_if — до второго провайдера, о шлюзах догадались уже сами, $mini_lan — та самая маленькая, /25 сетка.

Буду рад, если это кому-нибудь пригодиться.

PS. Все-таки по анализу pftop работает другое правило:

pass in quick on $int0_if route-to ($tun0_if $tun0_gw) inet proto { tcp, udp, icmp, 41, gre } from $mini_lan to !(self) keep state

Программное зеркало RAID1 в FreeBSD

Не ZFS’ом единым живы программные зеркала в FreeBSD. Даже больше — zfs достаточно специфичное решение, которое часто и не требуется, но не смотря на это, требуется сделать RAID1 программными средствами. Штатный инструмент в FreeBSD для этого — gmirror.

Пользоваться проще простого.

# sysctl kern.geom.debugflags=17
# gmirror label -vb round-robin gm0 /dev/ad4
Metadata value stored on /dev/ad4.
Done.
# gmirror load
# echo 'geom_mirror_load="YES"' >> /boot/loader.conf
# ee /etc/fstab

— тут меняем ad4 на gm0
# shutdown -r now
# gmirror insert gm0 /dev/ad8
# gmirror status
Name Status Components
mirror/gm0 DEGRADED ad4
ad8 (92%)

— ждем когда Статус сменится на «COMPLETE» и все — система на програмном зеркале. Даже если умрет один из дисков — все будет не фатально. Меняем мертвый диск и вставляем его в наш массив:

# gmirror forget gm0
# gmirror insert gm0 /dev/ad8

Ну и наблюдаем в ‘gmirror status’ как оно ребилдится.

dnsmasq — dns? dhcp?

Отличная программа — этот ваш dnsmasq. Отличный быстрый кеширующий DNS, простой в настройке DHCP.

Я уже писал об этом замечательном пакете в заметке Настройка dnsmasq. Пришло время немного подытожить опыт моего использования dnsmasq.

Да, я до сих пор использую dnsmasq и дома и в своих проектах, но только как кеширующий dns. От dhcp сервера на его базе я отказался потому что нет гибких настроек для клиентов. Да, настроек dnsmasq не хватило для использования даже у меня дома, но… есть одна сетка, в которой работает и не жужжит 🙂 и большего и не надо. Что же я использую для раздачи настроек по сети? Ответ прост — isc-dhcpd. Отличная вещь и простая, и фунциональная, и конфиг с примерами для новичков.

Показать? Вот мой домашний кофиг:

[mult@hasp.vzletka.net] /home/mult> cat /usr/local/etc/dhcpd.conf
authoritative; # что-то вроде — «я знаю как правильно»
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.99;
default-lease-time 86400;
max-lease-time 86400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.2;
option domain-name «hasp.local»;
}

Все просто. Хотите добавить еще одну поддерживаемую подсеть — добавляете subnet. Еще отличная штука — ip helper. Настроив ее на управляемом (L3) комутаторе, можно запрашивать адреса для каждого VLANа. Есть еще привязка по MAC — смотрите в сторону опции hardware ethernet.

Интересно, а какие решения применяют читатели моего блога? Поделитесь?

Память. Что значит что

Заметка для себя.

Есть вот такая строчка в top:

Mem: 86M Active, 77M Inact, 105M Wired, 3980K Cache, 110M Buf, 715M Free

Что это все значит.

86 Мегабайт активной памяти. Может быть выгружена в своп

77 Мегабайт неактивной. Эти данные уже использовались программами, но содержатся в памяти для возможного будущего использования. Практически — свободная память.

105 Мегабайт wired памяти, которая не может быть выгружена в своп.

110 Мегабайт и 3980 Килобайт — Буферы и кэши.

715 Мегабайт свободной для использования оперативной памяти.

К стати, перенес домашний интернетораздаватель обратно на домашний сервачок с FreeBSD и настроил на нем Munin (даже немного помучался, но все обошлось. Напишу об этом заметку чуть позже). Интернеты стали заметно веселее быстрее. Беспроводной роутер D-Link DIR-300 остался в качестве беспроводной точки доступа, потому что нагрузку в качестве роутера совершенно не держит.

Новостей две хорошая и не очень

Начну с хорошей. Играем с женой в Starcraft. Я уже писал ранее о своих попытках запустить Starcraft под FreeBSD. Решение получилось простое как топор. Паоставил Вторую ОС — Windows XP и гружусь в нее, когда хчется поиграть. а это случается с 10 до часу ночи (-; потому как именно в это время мы завели привычку играть «в бамбёжку», хыхы. Но, если вдруг, найду способ таки запустить…или клона совместимого с батлнет, то откажусь от венды на машине, ибо не хорошо это.

Теперь новость нехорошая. Верней, просто неприятная. Апдейт ТИЦ Yandex‘a. Прошлый АП принес мне +10 в пузомерку, чем порадовал меня. Немного, но приятно. Этот тиц забрал эти десять, чем опечалил меня. Ну ничего страшного, не тицем единым жив мой блог.

И еще одно замечание. Что-то не очень любит мой блог Яша, в отличие от Google, ктоорый меня быстро индексирует, который одарил меня PR3 (-; С Гугла мне приходят раз в пятьбольше народу, чем с Яши. И процент отказов на три процента меньше, чем с Гугла. Странно, но вот так есть.

Разные уровни владения

Странный заголовок, ага. Но на него меня навели мои последние эксперименты дома. А именно, установка почтового серера — сначала это был Postfix, потом — Exim. Сейчас работает exim. Он мне понравился больше, да и возни с ним было меньше. Собирать почту мне понравилось последнее время по протоколу IMAP. Это приколно, как сказали бы в одной рекламе пельменей (-: Да, нагрузка на канал больше, но удобство на лицо.

Ну так вот, разбираясь со связкой exim + courier-imap, поймал себяна мысли, что года три назад, когда я впервые устанавливал почтовый сервер MDaemonPro под MS Windows, я вообще особо не вникал как, что и куда оно работает. Не так уж много настроек, несколько щелчков мыши, пару консультаций у гуру, и все — заработало. Надо POP3 — щелкнул галочкой — enable, нада IMAP — тоже не проблема. И вовсе не заморачивался тем, как работают эти протоколы, как бы их поточнее настроить, что куда и из чего получается.

А тут же… Чтобы настроить — надо уже вникнуть. Надо знать, чего, собственно ты настраиваеш, и что получится если расскоментировать эту строчку в конфиг-файле. Никоем разом не хочу обвинить в некомпетентности Win-админов. Просто порог вхождения в эту отрасль гораздо ниже, нежели администраторов unix-систем. То же самое и с пользователями. Использовать тот же Linux дома, обязывает к тому, что придется чему-то учиться. Настройка сети, установка программ, обновление…

А сейчас вот поймал себя на мысли — ведь я на все это происходящее смотрю глазами пользователя, начавшего компьютерное образование именно с платформы Windows. А идеология систем ох какая различная и я могу рассуждать о проблемах именно потому, что пришлось переучиваться и получать дополнительные знания, которые, будь я изначально пользователем UNIX, усвоил бы в самом начале.

Надо бы подвести итог, но, он будет какой-то скукоженый. Стать WIndows-админом, так же как и Windows-пользователем проще, нежели в все тоже самое, но в мире UNIX.

Почему я использую FreeBSD

В пятницу, собираясь на учебу, задумался об этом. А вопрос возник потому что нас, студентов-шестикурсников очно-заочной формы обучения, хотели научить устанавливать эту замечательную опрационную систему. Но, увы, не удалось, ибо в аудитории не было ни одного сидирома. Хотел было спросить преподавателя, а мол, на кой хер этим девочкам-програмистам, которые и програмировать не научились еще раздавать диски с прошлогодней Ubuntoo Linux, зачем им знать как выглядит консольный псевдографический инсталлятор FreeBSD? НУ и сам задумался, а зачем оно все мне? Зачем я уже скоро года три как живу под этой UNIX-like системой?

FreeBSD — Стабильность.

FreeBSD — Управляемость.

FreeBSD — Простота.

FreeBSD — Логичность.

FreeBSD — Скорость.

FreeBSD — Функционал.

И все.

Конечно, всем этим можно пользоваться, приобретя некий багаж знаний. Причем не только в области unix-систем, но и принципы работы сети, прикладного ПО. Чтение мануалов, сотни мег поискового кэша Google, консультации с юникс-гуру… Но, надеюсь, что то время и тот трафик, который я потратил на это — мне пригодятся, что знания не будут у меня пылиться в голове лет через пять (-:

Скоро, наверное, напишу пост про то, как у меня начиналось знакомство с unix-системами. А началось все это с дистрибутива RedHat Linux 6.2

Perl и многопоточность. Возвращение к програмированию

Да-да. Я снова начал програмировать на Perl. Хочу написать небольшой поисковичек по локальным ftp-ресурсам моей домашней сети. А прежде всего столкнулся с проблемой сканирования сети на предмет доступных ftp-серверов с разрешеным доступом для анонимуса. Набросав небольшой скриптец, запустив его — понял, что для сканирования сети 10/10 потребуется 5*255*255*63 = 20482875 секунд или больше 250 дней (-; и тогда я подумал: «к черту! а зачем придумали многопоточность?» к тому же моя домашняя FreeBSD 7.0 с двуядерным Xeon E3110 достаточно хорошо должна стправиться с такими приложениями. И я начал копать в эту сторону.

Для начала надо было пересобрать Perl с поддержкой многопоточности. Сделано.

Можно создавать потоки как с контролем за жизнью, так и без контроля (типа запустил и забыл).

В первом случае используем:

threads->create(&mySub,$param)->join;

А во втором:

threads->create(&mySub,$param)->detach;

Ежели нам надо запустить кучу тредов и не дать основному скрипту закончить работу до окончания работы потоков, можно использовать такую конструкцию:

foreach (1..$numThreads) {
threads->create(&mySub,$param);
};

foreach (threads->list) { $_->join; };

list — возвращает список потоков, для которых еще не применили join или detach.

Ну вот и основное, что я пользую нынче в многопоточных приложениях на Perl. Надеюсь, не последний пост на эту тему (-;

____

И еще:

Интересный SEO-блог Дмитриева Романа.

Дракасмит сделал RE: дизайн, а у Креативного кота глючит CuteFTP

Немного о роутинге у меня дома

Перенос поста вот отсюда.

Пришла пора рассказать, а как же маршрутизируется мой трафик у меня дома, на моем роутере из старенького железа с FreeBSD на борту.

Некоторые подробности:
ОС: FreeBSD 7.0
vpn-client: mpd5
firewall: PacketFilter (pf)

У моего провайдера, Vzletka.net, две подсети адресов: 10/10 и 89.105.128/22. Запомним это.

Сетевой адрес выдается по dhcp с привязкой к mac-адресу сетевой платы. Мы же умные, один разок получили настройки и прописали их статически.

У себя я прописал два статичных роута в /etc/rc.conf:

static_routes=”lan10 lan89″
route_lan10=”-net 10.0.0.0/10 10.17.95.1″
route_lan89=”-net 89.105.128.0/22 10.17.95.1″

Чтобы небыло никаких инсинуаций. Чтобы при сбитом default gateway трафик внутри локалки бегал нормально.

Еще добавил вручную несколько dns-серверов. А именно:

domain vzletka.net
nameserver 80.255.136.201
nameserver 208.67.222.222
nameserver 217.117.184.25
nameserver 89.105.128.67

Там и dns-сервера vzletka.net, и проекта OpenDNS. На всякий случай. Последний — dns-сервер отдающий внутренние взлетковские адреса вида login.ether.vzletka.net.

Собственно и вот. Настройки mpd5, так же как и фаервола, напишу в одном из следующих постов. Скажу лишь, что при поднятии впн, впн-сервер становится шлюзом по умолчанию, но локальный трафик к сети 89.105.128/22 продолжает топать через локальный шлюз. Это избавляет от проблем типа сидишь в ирце, подключил интернет, отвалился, и приконнектился с адресом *.pptp.vzletka.net. Или локальный форум предлагает ввести заново логин и пароль, ибо твой адрес сменился и надо обновить сессию. Да и нагрузка на впн-сервер провайдера меньше.

Добавив в /etc/rc.conf строчки

mpd_enable=»YES»

заставим mpd5 стартовать при загрузке системы автоматически.