<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nix on Uzix | микроблог</title><link>https://err200.net/tags/nix/</link><description>Recent content in Nix on Uzix | микроблог</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Thu, 06 Dec 2018 14:12:36 +0000</lastBuildDate><atom:link href="https://err200.net/tags/nix/index.xml" rel="self" type="application/rss+xml"/><item><title>Особенность маршрутизации в Linux</title><link>https://err200.net/20181206-routing-rpfilter/</link><pubDate>Thu, 06 Dec 2018 14:12:36 +0000</pubDate><guid>https://err200.net/20181206-routing-rpfilter/</guid><description>&lt;p&gt;Про rp_filter в интернете не писал только ленивый. Но вот о чём редко пишут - rp_filter начисто игнорирует маркер пакета (nfmark, он же fwmark)! Т.е. если у вас настроена policy-based-routing с использованием ip rule fwmark, то обратный маршрут rp_filter будет рассчитывать неверно, что приведёт к тихому дропу пакетов. Что делать? Я вижу пару вариантов:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Отключить rp_filter на интерфейсе и прописать всё что он делает руками;&lt;/li&gt;
&lt;li&gt;Использовать TOS для маркировки пакетов. Минусы - он восьмибитный, и ip rule не умеет применять к значению маску. К тому же нужно помнить, что TOS - не метаинформация внутри ядра, а реальное поле в IP-пакете со всеми вытекающими.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Есть также модуль iptables rpfilter. Он делает то же, что и встроенный в ядро rp_filter, но при этом его можно обвязать любыми (в рамках таблицы raw) правилами iptables. К сожалению, он доступен только для ядер &amp;gt;=3.3.&lt;/p&gt;</description></item><item><title>/dev во freebsd chroot</title><link>https://err200.net/20170302-freebsd-chroot-devfs/</link><pubDate>Thu, 02 Mar 2017 09:59:28 +0000</pubDate><guid>https://err200.net/20170302-freebsd-chroot-devfs/</guid><description>&lt;p&gt;Не нашёл в интернете хорошего решения, поэтому выкладываю тут.&lt;/p&gt;
&lt;p&gt;Т.к. во FreeBSD нельзя сделать просто mknod в произвольном месте фс (вернее можно, но результат работать не будет с ошибкой &amp;ldquo;operation not supported&amp;rdquo;), то для доступа к устройствам внутри chroot приходится немного шаманить - а именно монтировать devfs с нужными нам устройствами.&lt;/p&gt;
&lt;p&gt;Покажу на примере php-fpm. Создаём файл /usr/local/etc/rc.conf.d/php_fpm со следующим содержимым:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mount_devs() {
 for i in $php_fpm_chroots; do
 umount &amp;#34;${i}/dev&amp;#34; 2&amp;gt;/dev/null || true
 devfs_domount &amp;#34;${i}/dev&amp;#34; devfsrules_hide_all
 devfs -m &amp;#34;${i}/dev&amp;#34; rule apply path null unhide
 devfs -m &amp;#34;${i}/dev&amp;#34; rule apply path random unhide
 devfs -m &amp;#34;${i}/dev&amp;#34; rule apply path urandom unhide
 done
}

start_precmd=&amp;#34;$start_precmd &amp;amp;&amp;amp; mount_devs&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;и в rc.conf дописываем:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;php_fpm_chroots=&amp;#34;/var/www1 /var/www2&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Создаём по нужным путям dev/, делаем рестарт сервиса - и после этого всё должно заработать.&lt;/p&gt;</description></item><item><title>https</title><link>https://err200.net/20170201-https/</link><pubDate>Wed, 01 Feb 2017 12:34:09 +0000</pubDate><guid>https://err200.net/20170201-https/</guid><description>&lt;p&gt;В связи с наметившейся тенденцией всяческого ущемления (понижение позиции в выдаче поисковиков, предупреждения о небезопасности в браузерах) сайтов, доступных только по http, а так же по причине необходимости повышения безопасности передаваемых данных, передо мной возникла задача внедрения https с минимальными материально-техническими затратами на внедрение и сопровождение.&lt;/p&gt;</description></item><item><title>Применение m4 для генерации конфигурации</title><link>https://err200.net/20160605-m4/</link><pubDate>Sun, 05 Jun 2016 14:43:29 +0000</pubDate><guid>https://err200.net/20160605-m4/</guid><description>&lt;p&gt;В данной заметке я хочу рассказать о существовании замечательной утилиты - макропроцессора m4.
&lt;em&gt;Заметка носит ознакомительный характер и не ставит целью описание нюансов m4 (RTFM!).&lt;/em&gt;&lt;/p&gt;</description></item><item><title>ГОСТ шифр</title><link>https://err200.net/20160517-gost-encryption/</link><pubDate>Tue, 17 May 2016 07:06:30 +0000</pubDate><guid>https://err200.net/20160517-gost-encryption/</guid><description>&lt;p&gt;В данной статье решается задача создания защищённого соединения с сервером госзакупок с минимизацией необходимости дальнейшей поддержки решения.&lt;/p&gt;</description></item><item><title>Расширение корневого раздела в LVM в RHEL6</title><link>https://err200.net/20151224-lvm-extend/</link><pubDate>Thu, 24 Dec 2015 07:23:40 +0000</pubDate><guid>https://err200.net/20151224-lvm-extend/</guid><description>&lt;p&gt;Вводная: виртуальная машина с одним диском и корневой фс в lvm.&lt;/p&gt;
&lt;p&gt;Задача: расширить корневую фс без остановки предоставляемого сервиса.&lt;/p&gt;
&lt;p&gt;Решение:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Увеличиваем размер диска средствами системы управления виртуальными машинами. В моём случае это Proxmox:
&lt;code&gt;qm resize 100 virtio0 +5G&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Далее нужно как-то подключить наше новое пространство к VolumeGroup. Вот тут кроется засада. Для RHEL5 можно увеличить размер раздела с PhysicalVolume и обновить таблицу разделов командой &lt;code&gt;partprobe&lt;/code&gt;. Но начиная с RHEL6 она покажет шиш и откажется что-либо делать пока мы всё не остановим и не отмонтируем. Однако есть и обходной путь: создаём на этом же диске ещё один раздел с PhysicalVolume чтобы затем расширить нашу VolumeGroup на неё:
&lt;code&gt;parted /dev/vda mkpart primary ext2 НАЧАЛО_РАЗДЕЛА -1&lt;/code&gt;
&lt;code&gt;parted set НОМЕР_РАЗДЕЛА lvm on&lt;/code&gt;
Затем выполняем потенциально опасную операцию - обновляем наживую таблицу разделов. Существующие разделы при этом остаются на месте (даже если были изменены/удалены), новые же добавляются:
&lt;code&gt;partx -a /dev/vda&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Дальше дело техники - расширяем VolumeGroup:
&lt;code&gt;vgextend VolGroup /dev/vda3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; расширяем LogicalVolume:
&lt;code&gt;lvextend -l +100%FREE VolGroup/lv_root&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&amp;hellip; и, наконец, увеличиваем сам раздел:
&lt;code&gt;resize2fs /dev/VolGroup/lv_root&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Готово.&lt;/p&gt;</description></item><item><title>Секунда координации</title><link>https://err200.net/20150701-leapsecond/</link><pubDate>Wed, 01 Jul 2015 05:45:00 +0000</pubDate><guid>https://err200.net/20150701-leapsecond/</guid><description>&lt;p&gt;Быстрофикс зависших серверов:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/etc/init.d/ntp stop; date; date `date +&amp;#34;%m%d%H%M%C%y.%S&amp;#34;`; date; /etc/init.d/ntp start
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Если долго запускается Wine...</title><link>https://err200.net/20150312-wine-slow/</link><pubDate>Thu, 12 Mar 2015 13:51:57 +0000</pubDate><guid>https://err200.net/20150312-wine-slow/</guid><description>&lt;p&gt;&amp;hellip;то попробуйте сделать так:
&lt;code&gt;mkdir ~/.cups ; echo 'ServerName dev.null' &amp;gt;~/.cups/client.conf&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Проверяем готовность сервера к переходу на зимнее время</title><link>https://err200.net/20140925-server-timezone/</link><pubDate>Thu, 25 Sep 2014 05:56:30 +0000</pubDate><guid>https://err200.net/20140925-server-timezone/</guid><description>&lt;p&gt;Всего месяц остался до перевода стрелок - пора подготавливаться к этому.&lt;/p&gt;</description></item><item><title>Почему Linux катится в тар-тарары</title><link>https://err200.net/20130130-linux/</link><pubDate>Wed, 30 Jan 2013 07:50:15 +0000</pubDate><guid>https://err200.net/20130130-linux/</guid><description>&lt;p&gt;&lt;a href="https://pappp.net/?p=969"&gt;https://pappp.net/?p=969&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Получение информации об IP/домене из командной строки</title><link>https://err200.net/20120808-whois/</link><pubDate>Wed, 08 Aug 2012 13:49:47 +0000</pubDate><guid>https://err200.net/20120808-whois/</guid><description>&lt;p&gt;Заметил что часто люди забывают что информацию о домене можно получить не только на ресурсах, подобных &lt;a href="http://2ip.ru/"&gt;http://2ip.ru/&lt;/a&gt;, но и с помощью командной строки, причём гораздо быстрее и в &amp;ldquo;парсабельной&amp;rdquo; форме.&lt;/p&gt;
&lt;p&gt;Команда №1: &lt;strong&gt;whois&lt;/strong&gt;. Всё элементарно: в качестве аргумента принимает домен (ну или айпишник) и рассказывает нам всё что whois-сервер (его можно задать ключём &lt;em&gt;-h&lt;/em&gt;) знает об этом адресе. С ключём &lt;em&gt;-H&lt;/em&gt; рассказывает немного меньше, пропуская флуд о &amp;ldquo;правах и обязанностях&amp;rdquo; :)&lt;/p&gt;
&lt;p&gt;Команда №2: &lt;strong&gt;geoiplookup&lt;/strong&gt; (из пакета &lt;em&gt;geoip-bin&lt;/em&gt;). Так же принимает ип или имя домена в качестве параметра, после чего сверяет айпишник со своей внутренней базой (пакет &lt;em&gt;geoip-database&lt;/em&gt;) и показывает нам страну. Просто, практично.&lt;/p&gt;</description></item><item><title>Tcpkill</title><link>https://err200.net/20120724-tcpkill/</link><pubDate>Tue, 24 Jul 2012 10:15:53 +0000</pubDate><guid>https://err200.net/20120724-tcpkill/</guid><description>&lt;p&gt;Полезная программа: tcpkill из пакета dsniff. Она позволяет разрывать tcp-соединения, подходящие под заданный фильтр (синтаксис как у tcpdump). Что интересно, программа не просто разово разрывает все подходящие соединения, но и следит за появлением новых.
Примеры использования:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;: разорвать все соединения до хоста с ip-адресом 11.22.33.44 на интерфейсе eth0
tcpkill -i eth0 -9 host 11.22.33.44
: разорвать все соединения на порт 5222 на интерфейсе ppp0
tcpkill -i ppp0 -9 port 2222
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Меню монтирования в OpenBox</title><link>https://err200.net/20110423-openbox-mount/</link><pubDate>Sat, 23 Apr 2011 16:43:00 +0000</pubDate><guid>https://err200.net/20110423-openbox-mount/</guid><description>&lt;p&gt;Буду краток. Давеча, не найдя готового, написал вот такую штуку:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://habreffect.ru/files/704/02466d409/2011-04-23-202627_484x339_scrot.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Итак, код:&lt;/p&gt;</description></item><item><title>Виртуальная веб-камера и микрофон</title><link>https://err200.net/20101027-virtual-webcam/</link><pubDate>Wed, 27 Oct 2010 11:27:00 +0000</pubDate><guid>https://err200.net/20101027-virtual-webcam/</guid><description>&lt;p&gt;Многим знаком софт для Windows, позволяющий накладывать в реальном времени эффекты на изображение с веб камеры, воспроизводить видео &amp;ldquo;как-бы&amp;rdquo; с нее и делать другие непотребности. Под Linux так же есть подобные решения - та же &lt;a href="http://www.youtube.com/watch?v=QoXtcaWwsP0&amp;amp;feature=player_embedded#!"&gt;WebCam Studio&lt;/a&gt;, имеющая в своем арсенале множество нужных и ненужных функций.&lt;/p&gt;
&lt;p&gt;Внимание! Под катом много мутного текста без картинок! :-)&lt;/p&gt;</description></item><item><title>Удобный поиск и каталогизация файлов в консоли</title><link>https://err200.net/20101010-find-files/</link><pubDate>Sun, 10 Oct 2010 09:30:00 +0000</pubDate><guid>https://err200.net/20101010-find-files/</guid><description>&lt;p&gt;Все началось с того, что сегодня утром качалка FatRat сообщила о завершении многонедельной закачки торрента с рипом одного сайта с обоями. Распаковав полторы сотни архивов, удивлению моему предела не было - все 33 тысячи файлов были свалены в одну кучу. О том, чтобы нормально выбрать что-то из нее говорить не приходится. Но зато имена файлов были вполне нормальные, с тегами&amp;hellip; так и родился этот простенький скрипт. Он рекурсивно ищет файлы, имя которых содержит заданную фразу и помещает симлинки на эти файлы в отдельную папочку.&lt;/p&gt;</description></item></channel></rss>