<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://muff.kiev.ua"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>muff.kiev.ua</title>
 <link>http://muff.kiev.ua</link>
 <description></description>
 <language>ru</language>
<item>
 <title>Top - интерактивный мониторинг</title>
 <link>http://muff.kiev.ua/content/top-interaktivnyi-monitoring</link>
 <description>&lt;p class=&quot;rtejustify&quot;&gt;Утилита &lt;strong&gt;top&lt;/strong&gt;&amp;nbsp;- одна из наиболее удобных в своей линейке утилит, предназначенная для мониторинга состояния сервера. Ее задача - отобразить общую нагрузку на сервер и его отдельные компоненты.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Вывод утилиты делится на две части: в верхней общая информация о системе, а в нижней - список запущенных процессов и информации о них.&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/top_03.png&quot;&gt;&lt;img alt=&quot;Top&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/top_03.png&quot; style=&quot;height:128px; width:200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Рассмотрим верхнюю часть вывода утилиты, тоесть, общую информацию о системе.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Использование процессорного времени (&lt;strong&gt;CPU&lt;/strong&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;user&lt;/strong&gt; -&amp;nbsp;(&lt;strong&gt;User CPU time&lt;/strong&gt;) время, затраченное на работу процессов пользователей.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;nice&lt;/strong&gt; -&amp;nbsp;(&lt;strong&gt;Nice CPU time&lt;/strong&gt;) время, затраченное на работу процессов с измененным приоритетом.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;system&lt;/strong&gt; -&amp;nbsp;(&lt;strong&gt;System CPU time&lt;/strong&gt;) время, затраченное на работу процессов ядра системы.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;interrupt&lt;/strong&gt; -&amp;nbsp;время, затраченное на работу обработку прерываний.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;idle&lt;/strong&gt; -&amp;nbsp;простой процессора.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Использования памяти - значения расписаны в статье о &lt;a href=&quot;http://muff.kiev.ua/content/freebsd-virtualnaya-pamyat&quot;&gt;структуре виртуальной памяти&lt;/a&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Следующее значение -&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;. Это один из важных параметров, поэтому детально его рассмотрим.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Данные&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;выводятся&amp;nbsp;в трёх временных интервалах - данные за 1 минуту, за 5 минут и за 15 минут. Эти числа отображают число блокирующих процессов в очереди на исполнение за определенный временной интервал.&amp;nbsp;В данном случае, блокирующий процесс - это процесс, который ожидает ресурсов для продолжения работы. Как правило, происходит ожидание таких ресурсов, как центральный процессор, дисковая подсистема или сетевая подсистема.&amp;nbsp;Высокие значения показателей&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;говорят о том, что система не справляется с нагрузкой. Но как узнать какое значение&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;является нормальным? Всё зависит от количества ядер.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Рассмотрим ситуацию, когда у нас &lt;strong&gt;CPU&lt;/strong&gt; с одним ядром, отталкиваясь от значений&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;во временных интервалах за 5 и 15 минут.&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color:rgb(204, 204, 204)&quot;&gt;&lt;strong&gt;Load&amp;nbsp;average&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&quot;background-color:rgb(204, 204, 204)&quot;&gt;&lt;strong&gt;Состояние системы&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot; style=&quot;background-color:rgb(102, 255, 0)&quot;&gt;&lt;strong&gt;&amp;lt; 0.7&lt;/strong&gt;&lt;/td&gt;
&lt;td class=&quot;rtejustify&quot;&gt;Все в порядке.&lt;br /&gt;
			Система практически не нагружена&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot; style=&quot;background-color:rgb(255, 255, 0)&quot;&gt;&lt;strong&gt;0.7 - 1&lt;/strong&gt;&lt;/td&gt;
&lt;td class=&quot;rtejustify&quot;&gt;Система нагружена.&lt;br /&gt;
			Следует найти и определить причину нагрузки системы для избежании проблем в дальнейшем.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot; style=&quot;background-color:rgb(255, 153, 0)&quot;&gt;&lt;strong&gt;1-5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Система сильно нагружена.&lt;br /&gt;
			Необходимо в срочном порядке определить причину высокой нагрузки и устранить ее.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot; style=&quot;background-color:rgb(255, 0, 0)&quot;&gt;&lt;strong&gt;&amp;gt; 5&lt;/strong&gt;&lt;/td&gt;
&lt;td class=&quot;rtejustify&quot;&gt;Система критически нагружена.&lt;br /&gt;
			Сервер может подвисать и работать очень медленно, при обработке запросов &amp;quot;торможения&amp;quot;, доступ к серверу затруднён.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Обратите внимание, что высокий показатель&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt; может быть вызван большим количеством процессов, выполняющих в данный момент операции чтения/записи. То есть,&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt; &amp;gt; 1.00&amp;nbsp;на одноядерной машине не всегда говорит о том, что в системе отсутствует запас по загрузке процессора. Требуется более детальный анализ ситуации.&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Также, стоит обратить внимание на тот факт, что максимальная производительность системы достигается при &lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;&amp;gt; 1, тоесть, в отдельных случаях есть смысл держать &lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;повыше, чтобы более эффективно нагрузить &amp;quot;железо&amp;quot;, в ущерб времени обработки отдельного запроса.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Еще один важный аспект. При&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;больше 5, работа системы расценивается как неустойчивая. Некоторые демоны прекращают приём новых запросов&amp;nbsp;при высоких уровнях загрузки (например &lt;strong&gt;Sendmail&lt;/strong&gt; прекращает приём запросов при &lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;равным или больше&amp;nbsp;12). Если загрузка достигает 20-30, то скорей всего система окажется в ситуации, называемой &amp;quot;спираль смерти&amp;quot;, т.е. новые процессы создаются быстрее, чем система может их выполнить. &amp;quot;&lt;strong&gt;Death Spiral&lt;/strong&gt;&amp;quot;&amp;nbsp;- один из редких случаев, когда может понадобится перезагрузить сервер.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Обратите внимание на отображениее&amp;nbsp;&lt;strong&gt;load average&lt;/strong&gt;&amp;nbsp;в мультипроцессорных системах. В мультипроцессорных системах загрузка вычисляется относительно количества доступных процессорных ядер. 100% загрузка обозначается числом 1.00 для одноядерной машины, числом 2.00 для двуядерной, 4.00 для четырехъядерной и т.д.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Продолжим изучение утилиты &lt;strong&gt;top&lt;/strong&gt;. В нижней части вывода, мы можем получить следующую информацию о процессах.&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;PID&lt;/strong&gt;&amp;nbsp;-&amp;nbsp;идентификатор процесса.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;USERNAME&lt;/strong&gt;&amp;nbsp;- пользователь, от которого запущен процесс.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;THR&lt;/strong&gt; - количество потоков, запущенных процессом.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;PRI&lt;/strong&gt;&amp;nbsp;- текущий приоритет процесса.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;NICE&lt;/strong&gt;&amp;nbsp;- приоритет, выставленный командой &lt;strong&gt;nice&lt;/strong&gt;.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;SIZE&lt;/strong&gt; - полный размер процесса (данные, стек и т. д.)&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;RES&lt;/strong&gt;&amp;nbsp;- размер процесса в оперативной памяти.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;STATE&lt;/strong&gt;&amp;nbsp;- текущее состояние процесса: &amp;quot;&lt;strong&gt;START&lt;/strong&gt;&amp;quot;, &amp;quot;&lt;strong&gt;RUN&lt;/strong&gt;&amp;quot;, &amp;quot;&lt;strong&gt;SLEEP&lt;/strong&gt;&amp;quot;, &amp;quot;&lt;strong&gt;STOP&lt;/strong&gt;&amp;quot;, &amp;quot;&lt;strong&gt;ZOMB&lt;/strong&gt;&amp;quot;, &amp;quot;&lt;strong&gt;WAIT&lt;/strong&gt;&amp;quot; или &amp;quot;&lt;strong&gt;LOCK&lt;/strong&gt;&amp;quot;. Текущая нагрузка отображается только в состояниях&amp;nbsp;&amp;quot;&lt;strong&gt;START&lt;/strong&gt;&amp;quot; и &amp;quot;&lt;strong&gt;RUN&lt;/strong&gt;&amp;quot;.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;C&lt;/strong&gt;&amp;nbsp;- номер процессора, на котором идет выполнение (только на SMP системах).&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;TIME&lt;/strong&gt;&amp;nbsp;- время использования процессора (в секундах).&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;WCPU&lt;/strong&gt;&amp;nbsp;- усредненное значение использования &lt;strong&gt;CPU&lt;/strong&gt;.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;COMMAND&lt;/strong&gt;&amp;nbsp;- команда, запустившая процесс.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;При использовании утилиты &lt;strong&gt;top&lt;/strong&gt;, поддерживаются ключи, для работы в интерактивном режиме, которые сортируют, фильтруют или видоизменяют вывод. Рассмотрим некоторые из них&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;a&lt;/strong&gt;&amp;nbsp;- показать абсолютные пути запущенных процессов.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;С&lt;/strong&gt;&amp;nbsp;- переключение между режимами отображения&amp;nbsp;&amp;quot;&lt;strong&gt;raw cpu&lt;/strong&gt;&amp;quot; и&amp;nbsp;&amp;quot;&lt;strong&gt;weighted cpu&lt;/strong&gt;&amp;quot;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;H&lt;/strong&gt;&amp;nbsp;- включает/выключает отображение потоков.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;h&lt;/strong&gt; - отображение окна справки.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;i&lt;/strong&gt;&amp;nbsp;- скрыть/отобразить отображение простаивающих процессов.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;j&lt;/strong&gt;&amp;nbsp;-&amp;nbsp;скрыть/отобразить&amp;nbsp;&lt;strong&gt;jail ID&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;J&lt;/strong&gt; - отображение процессов только указанного &lt;strong&gt;jail&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;k&lt;/strong&gt;&amp;nbsp;- уничтожить процесс (запрашивает&amp;nbsp;&lt;strong&gt;PID&lt;/strong&gt;&amp;nbsp;процесса).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;m&lt;/strong&gt;&amp;nbsp;- переключение между режимами отображения нагрузки (процессор, память) и загрузки системы ввода-вывода.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;n&lt;/strong&gt;&amp;nbsp;- изменить число отображаемых процессов (предлагается ввести число).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;o&lt;/strong&gt;&amp;nbsp;- сортировка по столбцам &lt;strong&gt;pri&lt;/strong&gt;, &lt;strong&gt;size&lt;/strong&gt;, &lt;strong&gt;res&lt;/strong&gt;, &lt;strong&gt;cpu&lt;/strong&gt;, &lt;strong&gt;time&lt;/strong&gt;, &lt;strong&gt;thr&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;P&lt;/strong&gt;&amp;nbsp;- показывать статистику загрузки по каждому процессору отдельно (для&amp;nbsp;&lt;strong&gt;SMP&lt;/strong&gt;&amp;nbsp;систем).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;r&lt;/strong&gt;&amp;nbsp;- изменить приоритет процесса.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;S&lt;/strong&gt;&amp;nbsp;- показать/скрыть системные процессы (по умолчанию они скрыты).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;s&lt;/strong&gt;&amp;nbsp;- установить время обновления вывода информации (в секундах).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;t&lt;/strong&gt; -&amp;nbsp;скрыть/отобразить процесс &lt;strong&gt;top&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;u&lt;/strong&gt;&amp;nbsp;- отфильтровать по имени пользователя (запрос на имя пользователя).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;[Пробел]&lt;/strong&gt; - немедленно обновить содержимое экрана&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;a href=&quot;http://muff.kiev.ua/content/top&quot;&gt;Полезные мелочи при использовании top&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/top-interaktivnyi-monitoring#comments</comments>
 <pubDate>Mon, 17 Jun 2019 15:16:05 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">586 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>FreeBSD - виртуальная память</title>
 <link>http://muff.kiev.ua/content/freebsd-virtualnaya-pamyat</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;FreeBSD Logo&quot; src=&quot;http://muff.kiev.ua/files/FreeBSD.jpg&quot; style=&quot;height:150px; width:150px&quot; /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Active&lt;/strong&gt; - память которая используется в данный момент&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Inactive&lt;/strong&gt; - память, которая была освобождена, но до сих пор в кэше, так как он может быть использована снова. Если требуется больше свободной памяти, эта память может быть очищена и перейти во &lt;strong&gt;Free&lt;/strong&gt;. Эта память не очищается до того момента, пока в этом не возникнет необходимость, чтобы сохранить старые данные на случай, если они понадобятся снова.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Wired&lt;/strong&gt;&amp;nbsp;- память, которую использует ядро.&amp;nbsp;Эта память не может быть выгружена в &lt;strong&gt;Swap&lt;/strong&gt;.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Cache&lt;/strong&gt;&amp;nbsp;- память, которая использовалась под кеш и может быть освобождена в любой момент.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Buffers&lt;/strong&gt;&amp;nbsp;- память, которая отдана под дисковый кеш.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Free&lt;/strong&gt;&amp;nbsp;- память которая полностью свободна и готова к использованию. &lt;strong&gt;Inactive&lt;/strong&gt;, &lt;strong&gt;Cache&lt;/strong&gt; и&amp;nbsp;&lt;strong&gt;Buffers&lt;/strong&gt; могут стать частью &lt;strong&gt;Free&lt;/strong&gt; после полного освобождения.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Res&lt;/strong&gt;&amp;nbsp;- чистая оперативная память, которую потребляет процесс&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Size&lt;/strong&gt;&amp;nbsp;- полная память (&lt;strong&gt;Res&lt;/strong&gt; + &lt;strong&gt;shared&lt;/strong&gt;-библиотеки (&lt;strong&gt;*.so&lt;/strong&gt;) + стек + &lt;strong&gt;shared-memory&lt;/strong&gt; + &lt;strong&gt;swap&lt;/strong&gt;), которую потребляет процесс.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Shared&lt;/strong&gt; - часть памяти, которая может использоваться одновременно несколькими процессами.&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Laundry&lt;/strong&gt;&amp;nbsp;- содержит грязные страницы памяти, прошедшие один раз через неактивную очередь (или память в очереди на &amp;quot;освобождения от грязи&amp;quot;).&lt;/li&gt;
&lt;/ul&gt;
</description>
 <comments>http://muff.kiev.ua/content/freebsd-virtualnaya-pamyat#comments</comments>
 <pubDate>Mon, 17 Jun 2019 15:02:48 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">585 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>FreeBSD - изменение зарезервированного обьема дискового пространства</title>
 <link>http://muff.kiev.ua/content/freebsd-izmenenie-zarezervirovannogo-obema-diskovogo-prostranstva</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;FreeBSD Logo&quot; src=&quot;http://muff.kiev.ua/files/FreeBSD.jpg&quot; style=&quot;height:150px; width:150px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Собирая очередной &lt;a href=&quot;http://muff.kiev.ua/content/graid5-programnyi-raid-5&quot;&gt;програмнный RAID5 на FreeBSD&lt;/a&gt;, решил обратить внимание сообщества на следующий момент:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p class=&quot;rtejustify&quot;&gt;# &lt;strong&gt;df -h&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;rtejustify&quot;&gt;
Filesystem          Size    Used   Avail Capacity  Mounted on
/dev/mirror/gm0a    446G    4,4G    405G     1%    /
devfs               1,0K    1,0K      0B   100%    /dev
/dev/raid5/raid5     &lt;span style=&quot;color:#FF0000&quot;&gt;13T&lt;/span&gt;    8,0K     &lt;span style=&quot;color:#FF0000&quot;&gt;12T&lt;/span&gt;     0%    /raid5&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;quot;Пропал&amp;quot; терабайт доступного дискового пространства... Как это возможно?&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Дело в том, что часть каждого раздела &lt;strong&gt;UFS&lt;/strong&gt; (по умолчанию 8%) зарезервировано для использования операционной системой и пользователем &lt;strong&gt;root&lt;/strong&gt;. Утилита&amp;nbsp;&lt;strong&gt;df&lt;/strong&gt; не учитывает это при подсчёте значения в колонке&amp;nbsp;&lt;strong&gt;Capacity&lt;/strong&gt;, так что оно может превышать 100%. Обратите внимание, что колонка&amp;nbsp;&lt;strong&gt;Blocks&lt;/strong&gt;&amp;nbsp;всегда больше, чем сумма значений в колонках&amp;nbsp;&lt;strong&gt;Used&lt;/strong&gt;&amp;nbsp;и&amp;nbsp;&lt;strong&gt;Avail&lt;/strong&gt;, обычно на 8%.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;В моем случае, поскольку раздел довольно большой, потеря дискового пространства довольно существенная, поэтому изменим размер зарезервированного пространства до 2% (260GB должно быть более чем достаточно...)&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Отмонтируем раздел:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;umount /dev/raid5/raid5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;С помощью утилиты&amp;nbsp;&lt;strong&gt;tunefs&lt;/strong&gt; изменим размер зарезервированного дискового пространства:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;tunefs -m &lt;span style=&quot;color:#FF0000&quot;&gt;2&lt;/span&gt; /dev/raid5/raid5&lt;/strong&gt;&lt;br /&gt;
			tunefs: minimum percentage of free space changes from 8% to 2%&lt;br /&gt;
			tunefs: should optimize for space with minfree &amp;lt; 8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Монтируем раздел:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;mount -t ufs /dev/raid5/raid5 /raid5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Проверяем результат:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;#&amp;nbsp;&lt;strong&gt;df -h&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
Filesystem          Size    Used   Avail Capacity  Mounted on
/dev/mirror/gm0a    446G    4,4G    405G     1%    /
devfs               1,0K    1,0K      0B   100%    /dev
/dev/raid5/raid5     13T    8,0K     13T     0%    /raid5&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Поскольку в даном выводе размер зарезервированного пространства не подсчитать, ознакомимся с&amp;nbsp;выводом утилиты &lt;strong&gt;df&lt;/strong&gt;&amp;nbsp;без ключа &lt;strong&gt;-h&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;# &lt;strong&gt;df&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
Filesystem         1K-blocks    Used       Avail Capacity  Mounted on
/dev/mirror/gm0a   467188468 4627044   425186348     1%    /
devfs                      1       1           0   100%    /dev
/dev/raid5/raid5 14191346200       8 13907519268     0%    /raid5&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Посчитаем процентное соотношение:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;13907519268 х 100 /&amp;nbsp;14191346200 = 97,99&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Получается 98% доступно... Все сходится.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Также стоит обратить внимание еще на такой момент. При уменьшении зарезервированного дисткового пространства до 5% и ниже, FFS отключает алгоритм оптимизации выделения свободных блоков, что приводит к росту фрагментации, росту затрат дискового пространства при расположении файлов (из-за неоптимального расположения, части блоков остаются не занятыми, если файл не занимает его целиком) и, теоретически, к снижению скорости чтения. Здесь стоит подумать и выбирать: оставить зарезервированное пространство, либо отказываться от него и иметь возможность заюзать лишние гигабайты, и получить выше перечисленные проблемы.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;В моем частном случае даный массив будет использоваться только под хранение бекапов, размеры которых десятки гигабайт одним файлом. Поэтому, исходя из сравнительно небольшого суммарного количества файлов, проблему фрагментации можно игнорировать.&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/freebsd-izmenenie-zarezervirovannogo-obema-diskovogo-prostranstva#comments</comments>
 <pubDate>Wed, 11 Jul 2018 14:48:56 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">584 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Nslookup - not found (FreBSD11)</title>
 <link>http://muff.kiev.ua/content/nslookup-not-found-frebsd11</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;FreeBSD Logo&quot; src=&quot;http://muff.kiev.ua/files/FreeBSD.jpg&quot; style=&quot;height:150px; width:150px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Как оказалось, в &lt;strong&gt;FreeBSD 11&lt;/strong&gt; отсутствует утилита&amp;nbsp;&lt;strong&gt;nslookup&lt;/strong&gt;, которая ранее присутствувала в базовой системе (в &lt;strong&gt;FreeBSD 10.3&lt;/strong&gt; даная утилита еще присутствует) ... При попытке использования утилиты получаем ошибку:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;rtejustify&quot;&gt;# &lt;strong&gt;/usr/local/bin/nslookup -q=MX gmail.com&lt;/strong&gt;&lt;br /&gt;
			/usr/local/bin/nslookup: not found
			&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Либо, же, если коректно настроены локации, получаем ошибку на кириллице:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;rtejustify&quot;&gt;# &lt;strong&gt;/usr/local/bin/nslookup -q=MX gmail.com&lt;/strong&gt;&lt;br /&gt;
			/usr/local/bin/nslookup: Команда не найдена.
			&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Исправить ситуацию можно установкой порта&amp;nbsp;&lt;strong&gt;bind-tools&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;rtejustify&quot;&gt;#&amp;nbsp;&lt;strong&gt;cd /usr/ports/dns/bind-tools &amp;amp;&amp;amp; make install clean &amp;amp;&amp;amp; rehash&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;По завершению установки, проверяем работоспособность утилиты:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
# &lt;strong&gt;/usr/local/bin/nslookup -q=MX gmail.com&lt;/strong&gt;

Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
gmail.com       mail exchanger = 5 gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 10 alt1.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 20 alt2.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 30 alt3.gmail-smtp-in.l.google.com.
gmail.com       mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.

Authoritative answers can be found from:

&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Все в порядке, можно пользоваться... Конечно, в&amp;nbsp;базовой системе присутствуют утилиты&amp;nbsp;&lt;strong&gt;drill&lt;/strong&gt; и &lt;strong&gt;host&lt;/strong&gt;, которые&amp;nbsp;могут выполнять аналогичные функции, но иногда проще установить&amp;nbsp;&lt;strong&gt;bind-tools&lt;/strong&gt;, чем переписывать скрипты после обновления системы...&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/nslookup-not-found-frebsd11#comments</comments>
 <pubDate>Tue, 26 Jun 2018 11:34:12 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">583 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>NConf - Cannot open main configuration file</title>
 <link>http://muff.kiev.ua/content/nconf-cannot-open-main-configuration-file</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;NConf&quot; src=&quot;http://muff.kiev.ua/files/nconf-logo.jpg&quot; style=&quot;height:119px; width:140px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;По материалах статьи &amp;quot;&lt;a href=&quot;http://muff.kiev.ua/content/nagios-3x-nconf-nastroika-sistemy-monitoringa-nagios-3x-i-utility-konfigurirovaniya-nconf&quot;&gt;Nagios 3.x + NConf - настройка системы мониторинга Nagios 3.x и утилиты конфигурирования NConf&lt;/a&gt;&amp;quot;...&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Используя &lt;strong&gt;NConf&lt;/strong&gt; в новых инсталяциях, либо же обновив на рабочем сервере &lt;strong&gt;Perl&lt;/strong&gt; до версии 5.24 или выше, получаем такуо ошибку:&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
Reading configuration data...
Error: Cannot open main configuration file &amp;#39;/usr/local/www/nconf/temp/test/Default_collector.cfg&amp;#39; for reading!
Error processing main config file!


Error
Deployment not possible due to errors in configuration.&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Скриншот даной ошибки:&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/nconf_error.png&quot;&gt;&lt;img alt=&quot;Изображение&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/nconf_error.png&quot; style=&quot;height:112px; width:200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Исправить ее можно следующим образом.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;В файле&amp;nbsp;&lt;strong&gt;/usr/local/www/nconf/bin/lib/NConf/ExportNagios.pm&lt;/strong&gt; необходимо найти следующий блок (начало - строка № 1273):&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
foreach my $def_srv_deps_param (keys(%{$srv-&amp;gt;[2]})){
unless($def_srv_deps_param &amp;amp;&amp;amp; %{$srv-&amp;gt;[2]}-&amp;gt;{$def_srv_deps_param}){next}
$fattr = $def_srv_deps_param;
$fval  = %{$srv-&amp;gt;[2]}-&amp;gt;{$def_srv_deps_param};&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;И заменить следующим блоком:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
foreach my $def_srv_deps_param (keys(%{$srv-&amp;gt;[2]})){
unless($def_srv_deps_param &amp;amp;&amp;amp; ${$srv-&amp;gt;[2]}-&amp;gt;{$def_srv_deps_param}){next}
$fattr = $def_srv_deps_param;
$fval = ${$srv-&amp;gt;[2]}-&amp;gt;{$def_srv_deps_param};&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После внесения этих изменений &lt;strong&gt;NConf&lt;/strong&gt; коректно генерирует файлы конфигурации.&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/nconf-cannot-open-main-configuration-file#comments</comments>
 <pubDate>Mon, 18 Jun 2018 20:11:32 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">582 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>GRAID5 - програмный RAID 5</title>
 <link>http://muff.kiev.ua/content/graid5-programnyi-raid-5</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;FreeBSD Logo&quot; src=&quot;http://muff.kiev.ua/files/FreeBSD.jpg&quot; style=&quot;height:150px; width:150px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;В одном из проектов необходимо было реализовать небольшое хранилище с минимальным резервированием (для хранения бекапов). Решение - построение програмного &lt;strong&gt;RAID5&lt;/strong&gt; на &lt;strong&gt;FreeBSD&lt;/strong&gt;. Рассматривать и сравнивать типы &lt;strong&gt;RAID&lt;/strong&gt; не будем, рассмотрим только реализацию даной задачи.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Итак, диски присутствующие в системе:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;sysctl kern.disks&lt;/strong&gt;&lt;br /&gt;
			kern.disks: ada0 aacd3 aacd2 aacd1 aacd0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;ada0&lt;/strong&gt; - диск, на который установлена система (&lt;strong&gt;FreeBSD 11.1 amd64&lt;/strong&gt;)&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;aacd3 aacd2 aacd1 aacd0&lt;/strong&gt; - диски, подключенные через &lt;strong&gt;SAS&lt;/strong&gt;-контроллер, именно из них и будем собирать&amp;nbsp;&lt;strong&gt;RAID5&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;strong&gt;FreeBSD &lt;/strong&gt;поддерживает организацию &lt;strong&gt;RAID5&lt;/strong&gt; двумя менеджерами дискового пространства: &lt;strong&gt;VINUM&lt;/strong&gt; и &lt;strong&gt;GEOM&lt;/strong&gt;. Остановимся на реализации с помощью&amp;nbsp;&lt;strong&gt;GEOM&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Чтобы задействовать функционал&amp;nbsp;&lt;strong&gt;GEOM&amp;nbsp;RAID5&lt;/strong&gt;, необходимо выполнить установку порта&amp;nbsp;&lt;strong&gt;graid5&lt;/strong&gt;. Стоит отметить, что для сборки &lt;strong&gt;graid5&lt;/strong&gt; требуется наличие исходных текстов, поэтому предварительно оновим &lt;strong&gt;src&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;svnlite checkout svn://svn.freebsd.org/base/releng/11.1/ /usr/src&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После этого выполним установку&amp;nbsp;&lt;strong&gt;graid5&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;cd /usr/ports/sysutils/graid5 &lt;strong&gt;&amp;amp;&amp;amp; make install clean &amp;amp;&amp;amp; rehash&lt;/strong&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Создадим директорию, куда в дальнейшем будем монтировать наш&amp;nbsp;&lt;strong&gt;RAID5&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;mkdir /raid5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Создаем сам массив:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;graid5 label -v -s 256k raid5 /dev/aacd0 /dev/aacd1 /dev/aacd2 /dev/aacd3&lt;/strong&gt;&lt;br /&gt;
			Metadata value stored on /dev/aacd0.&lt;br /&gt;
			Metadata value stored on /dev/aacd1.&lt;br /&gt;
			Metadata value stored on /dev/aacd2.&lt;br /&gt;
			Metadata value stored on /dev/aacd3.&lt;br /&gt;
			Wasting 1046528 bytes (&amp;gt;=0GiB).&lt;br /&gt;
			Done.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;256k&lt;/strong&gt;&amp;nbsp;- задаем значение&amp;nbsp;&lt;strong&gt;Stripe Size&lt;/strong&gt; (размер блока данных, записываемый на&amp;nbsp;каждый&amp;nbsp;диск &lt;strong&gt;RAID&lt;/strong&gt;-массива в каждый &lt;strong&gt;stripe&lt;/strong&gt;, тоесть мы будем записывать/читать данные блоками по&amp;nbsp;&lt;strong&gt;256k&lt;/strong&gt;)&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;raid5&lt;/strong&gt;&amp;nbsp;- указываем название массива&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;/dev/aacd0 ...&amp;nbsp;/dev/aacd3&lt;/strong&gt;&amp;nbsp;- перечисляем устройства, которые добавляем в массив&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Создаем файловую систему на созданном устройстве:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;newfs /dev/raid5/raid5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Примонтируем созданный раздел к ранее созданной нами директории:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;mount -t ufs /dev/raid5/raid5 /raid5&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Также добавим запись в &lt;strong&gt;fstab&lt;/strong&gt;, чтобы раздел монтировался при загрузке системы:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;echo&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;&amp;#39;/dev/raid5/raid5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /raid5&amp;nbsp; ufs&amp;nbsp; &amp;nbsp; &amp;nbsp;rw&amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&amp;#39; &amp;gt;&amp;gt;&amp;nbsp;/etc/fstab&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;И добавим загрузку модуля&amp;nbsp;&lt;strong&gt;geom_raid5.ko&lt;/strong&gt; при старте системы:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;echo &amp;#39;geom_raid5_load=&amp;quot;YES&amp;quot;&amp;#39; &amp;gt;&amp;gt; /boot/loader.conf&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;На этом все...&lt;/p&gt;
&lt;p&gt;Проверяем статус массива:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;# &lt;strong&gt;graid5 status&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
       Name          Status  Components
raid5/raid5  &lt;span style=&quot;color:#FF0000&quot;&gt;REBUILDING HOT&lt;/span&gt;  aacd0 (115764101120 / 2% (p:192))
                             aacd1 (115764101120 / 2% (p:192))
                             aacd2 (115764101120 / 2% (p:192))
                             aacd3 (115764101120 / 2% (p:192))&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Идет пересборка... По завершению пересборки статус массива изменится на &lt;strong&gt;COMPLETE&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;#&amp;nbsp;&lt;strong&gt;graid5 status&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;
       Name         Status  Components
raid5/raid5  &lt;span style=&quot;color:#FF0000&quot;&gt;COMPLETE CALM&lt;/span&gt;  aacd0
                            aacd1
                            aacd2
                            aacd3&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Перезагружаем систему, чтобы убедиться, что после старта массив запустится в штатном режиме:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;reboot&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;После перезагрузки массив работает в штатноме режиме, все в порядке. На этом настройка завершена.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Данная комманда&amp;nbsp;может пригодиться в дальнейшем... Чтобы массив начал синхронизироваться после замены диска, необходимо выполнить комманду:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;graid5&amp;nbsp;insert&amp;nbsp;raid5&amp;nbsp;/dev/aacd3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;raid5&lt;/strong&gt; - название нашего массива&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;/dev/aacd3&lt;/strong&gt;&amp;nbsp;- диск, который мы заменили&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ну и фактический результат проверки скорости записи/чтения на массив, выполненый с помощью утилиты &lt;strong&gt;dd&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Проверяем скорость записи:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;dd if=/dev/zero of=/raid5/test_file.zero bs=100M count=100&lt;/strong&gt;&lt;br /&gt;
			100+0 records in&lt;br /&gt;
			100+0 records out&lt;br /&gt;
			10485760000 bytes transferred in 101.761061 secs (103042951 bytes/sec)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Проверяем скорость чтения:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;dd if=/raid5/test_file.zero of=/dev/null&lt;/strong&gt;&lt;br /&gt;
			20480000+0 records in&lt;br /&gt;
			20480000+0 records out&lt;br /&gt;
			10485760000 bytes transferred in 23.882999 secs (439047037 bytes/sec)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/graid5-programnyi-raid-5#comments</comments>
 <pubDate>Sat, 27 Jan 2018 01:29:27 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">581 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>FreeBSD - как работает система портов</title>
 <link>http://muff.kiev.ua/content/freebsd-kak-rabotaet-sistema-portov</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;FreeBSD&quot; src=&quot;http://muff.kiev.ua/files/FreeBSD.jpg&quot; style=&quot;height:150px; width:150px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Используя &lt;strong&gt;FreeBSD&lt;/strong&gt;, софт я устанавливаю именно из системы портов. Дерево портов расположено в каталоге&amp;nbsp;&lt;strong&gt;/usr/ports&lt;/strong&gt;&lt;br /&gt;
В каталоге портов, кроме самого дерева портов, находятся следующие файлы:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;CHANGES&lt;/strong&gt;&amp;nbsp;- перечислены изменения, произведенные в инфраструктуре &amp;quot;портов&amp;quot; &lt;strong&gt;FreeBSD&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;COPYRIGHT&lt;/strong&gt;&amp;nbsp;- содержит информацию о лицензировании для коллекции &amp;quot;портов&amp;quot; в целом&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;GIDs&lt;/strong&gt;&amp;nbsp;- содержит перечень всех числовых групповых идентификаторов (&lt;strong&gt;GID&lt;/strong&gt;), используемых программным обеспечением в коллекции &amp;quot;портов&amp;quot; (чтобы избежать путаницы и порты не использовали одну и туже учетную запись для разных целей)&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;KNOBS&lt;/strong&gt;&amp;nbsp;- содержит перечень всех параметров настройки, доступных в коллекции &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;LEGAL&lt;/strong&gt;&amp;nbsp;- содержит список всех правовых ограничений в программном обеспечении, включенном в коллекцию &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;MOVED&lt;/strong&gt;&amp;nbsp;- содержит список &amp;quot;портов&amp;quot;, которые были перемещены из одной категории в другую&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Makefile&lt;/strong&gt;&amp;nbsp;- содержит высокоуровневые инструкции для всей коллекции &amp;quot;портов&amp;quot; в целом&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;каталог &lt;strong&gt;Mk&lt;/strong&gt;&amp;nbsp;- содержит подробные низкоуровневые инструкции для всей коллекции &amp;quot;портов&amp;quot; в целом&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;README&lt;/strong&gt;&amp;nbsp;- содержит описание верхнего уровня организации коллекции &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;каталог &lt;strong&gt;Templates&lt;/strong&gt; - содержит заготовки файлов, используемые другими разделами коллекции портов&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;каталог &lt;strong&gt;Tools&lt;/strong&gt; - содержит программы, сценарии и другие средства автоматизации, которые в основном используются разработчиками &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;UIDs&lt;/strong&gt;&amp;nbsp;- содержит перечень всех числовых идентификаторов пользователей (&lt;strong&gt;UID&lt;/strong&gt;), используемых программным обеспечением в&amp;nbsp;коллекции &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;UPDATING&lt;/strong&gt;&amp;nbsp;- содержит примечания, используемые при обновлении программного обеспечения&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;каталог &lt;strong&gt;distfiles&lt;/strong&gt; - содержит исходный код программного обеспечения, устанавливаемого из &amp;quot;портов&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;INDEX-&lt;span style=&quot;color:#FF0000&quot;&gt;x&lt;/span&gt;&lt;/strong&gt; - содержит список всех &amp;quot;портов&amp;quot; в алфавитном порядке&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Для загрузки, а также поддержания дерева портов в актуальном состоянии используется утилита &lt;strong&gt;&lt;a href=&quot;http://muff.kiev.ua/content/portsnap-obnovlenie-iskhodnykh-tekstov-portov&quot;&gt;portsnap&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Поиск определенного порта можно выполнить несколькими способами.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Если полностью известно имя порта, можно воспользоваться коммандой&amp;nbsp;&lt;strong&gt;whereis&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;whereis &lt;span style=&quot;color:#FF0000&quot;&gt;apache24&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			apache24: /usr/ports/www/apache24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Более расширенный поиск по портам можно выполнить, находясь в каталоге&amp;nbsp;&lt;strong&gt;/usr/ports&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;#&amp;nbsp;&lt;strong&gt;cd /usr/ports&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;# &lt;strong&gt;make search name=&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;apache24&lt;/span&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;# &lt;strong&gt;make search key=&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;apache24&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Отличие между этими коммандами&amp;nbsp;в том, что &lt;strong&gt;name&lt;/strong&gt; ищет вхождение только в названии порта, а &lt;strong&gt;key&lt;/strong&gt;&amp;nbsp;- в именах портов, комментариях, описаниях и зависимостях.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Можно собрать в один html-файл список всех установленных портов с зависимостями и т.д., ссылки на справочные материалы, etc. Для этого нужно выполнить в каталоге &lt;strong&gt;/usr/ports&lt;/strong&gt;&amp;nbsp;такую комманду:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;make readmes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Чтобы установить определенный порт, мы выполняем в его каталоге комманду&amp;nbsp;&lt;strong&gt;make install clean&lt;/strong&gt;. Однако не все так просто. &lt;strong&gt;FreeBSD&lt;/strong&gt; после этой комманды выполняет последовательно следующие этапы:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make config&lt;/strong&gt; - задание или изменение текущих настроек&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make fetch&lt;/strong&gt; - после настройки &amp;quot;порта&amp;quot; система отыскивает предопределенный список сайтов Интернета, откуда можно получить исходный код и выполняет его загрузку&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make checksum&lt;/strong&gt;&amp;nbsp;- подтверждает, что цифровая подпись файла &lt;strong&gt;distfile&lt;/strong&gt; соответствует подписи из файла &lt;strong&gt;distinfo &amp;quot;&lt;/strong&gt;порта&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make extract&lt;/strong&gt; - разворачивает и извлекает скачанный код&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make patch&lt;/strong&gt; - накладывает на исходный код в рабочем каталоге все патчи, имеющиеся в составе &amp;quot;порта&amp;quot;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make depends&lt;/strong&gt;&amp;nbsp;- проверяется зависимость &amp;quot;порта&amp;quot; от любых других программ&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make configure&lt;/strong&gt;&amp;nbsp;- проверяет необходимость запуска сценария &lt;strong&gt;configure&lt;/strong&gt;. Это отдельный этап, отличный от &lt;strong&gt;make config&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make build&lt;/strong&gt;&amp;nbsp;- происходит компиляция проверенного, извлеченного и исправленного программного кода&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make install&lt;/strong&gt;&amp;nbsp;- устанавливается программа, а ее наличие регистрируется в &lt;strong&gt;/var/db/pkg&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Также могут пригодится следующие опции комманды &lt;strong&gt;make&lt;/strong&gt;, которые необходимо выполнять находять в каталоге порта:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make showconfig&lt;/strong&gt; &amp;mdash; показать текущие опции сборки порта&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make rmconfig&lt;/strong&gt; &amp;mdash; удалить все текущие настройки для порта&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make showconfig-recursive&lt;/strong&gt; &amp;mdash; показать настройки для текущего порта и всех зависимостей&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make config-recursive&lt;/strong&gt; &amp;mdash; задать настройки для текущего порта и всех зависимостей&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make rmconfig-recursive&lt;/strong&gt; &amp;mdash; удалить настройки для текущего порта и всех зависимостей&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make config-conditional&lt;/strong&gt; &amp;mdash; пропустить задание опций для портов, у которых уже были заданы требуемые опции&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make print-index&lt;/strong&gt; &amp;mdash; удобный для чтения индекс&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make deinstall&lt;/strong&gt; - удаление порта&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make reinstall&lt;/strong&gt; - выполняет повторную установку порта&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make clean&lt;/strong&gt; - очистка собранного порта&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;make distclean&lt;/strong&gt; - удалит ненужные &lt;strong&gt;distfiles&lt;/strong&gt; текущего &amp;quot;порта&amp;quot; вместе со всеми зависимостями.&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/freebsd-kak-rabotaet-sistema-portov#comments</comments>
 <pubDate>Tue, 03 Oct 2017 15:24:04 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">580 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Force10 - управление только с разрешенных IP</title>
 <link>http://muff.kiev.ua/content/force10-upravlenie-tolko-s-razreshennykh-ip</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;Force10 logo&quot; src=&quot;http://muff.kiev.ua/files/force10.png&quot; style=&quot;height:24px; width:140px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;По просьбе знакомого, решил разобраться, почему коммутатор &lt;strong&gt;Force10 S4810&lt;/strong&gt; только через нескольких попыток &amp;quot;разрешает&amp;quot; подключиться по &lt;strong&gt;telnet&lt;/strong&gt; или &lt;strong&gt;ssh&lt;/strong&gt; для управления. После подключения никаких &amp;quot;залипаний&amp;quot; и задержек в работе комутатора не замечалось...&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Просматривая логи, обнаруживаем много вхождений ошибочной авторизации с разных IP-адресов. Тоесть, проблема в следующем...&amp;nbsp;&lt;strong&gt;Force10 S4810&lt;/strong&gt;&amp;nbsp;- это&amp;nbsp;&lt;strong&gt;L3 (Layer3)&lt;/strong&gt;&amp;nbsp;коммутатор, который поддерживает маршрутизацию и IP-интерфейсы соответственно. В даном случае на коммутаторе присутствуют маршрутизируемые IP-адреса, доступные из сети &lt;strong&gt;Internet&lt;/strong&gt;.&amp;nbsp;Соответственно, имеем банальный&amp;nbsp;brute force из бот-нетов, которые &amp;quot;долбят&amp;quot; комутатор своими подключениями, занимая все свободные &lt;strong&gt;VTY&lt;/strong&gt; (&lt;strong&gt;VirtualTeletYpe&lt;/strong&gt; - виртуальный интерфейс, который обеспечивает удаленный доступ к устройству). В этой модели коммутатора их десять.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Решением вопроса будет ограничение доступа к &lt;strong&gt;VTY&lt;/strong&gt;&amp;nbsp;коммутатора только с разрешенных IP-адресов. Сделать это не так и сложно.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Подключаемся к коммутатору через &lt;strong&gt;telnet&lt;/strong&gt; или &lt;strong&gt;ssh&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Переходим в режим конфигурирования:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S4810# &lt;strong&gt;configure terminal&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Создаем&amp;nbsp;&lt;strong&gt;access-list&lt;/strong&gt; с разрешенными IP-адресами/сетями. Не забываем, что в &lt;strong&gt;ACL&lt;/strong&gt; политика по умолчанию - запретить все, тоесть в конце&amp;nbsp;любого &lt;strong&gt;ACL&lt;/strong&gt; есть невидимое правило &amp;quot;&lt;strong&gt;deny ip any any&lt;/strong&gt;&amp;quot;. Соответвенно, достаточно добавить в &lt;strong&gt;access-list&lt;/strong&gt;&amp;nbsp;IP-адреса, с которых мы будем подключаться, а все остальные&amp;nbsp;будут блокироваться:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S4810(conf)# &lt;strong&gt;ip access-list standard VTY_ACCESS&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;remark 0 Deny access to switch&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;seq 10 permit &lt;span style=&quot;color:#FF0000&quot;&gt;10.227.206.0/24&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;seq 15 permit &lt;span style=&quot;color:#FF0000&quot;&gt;10.209.139.0/24&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;seq 20 permit &lt;span style=&quot;color:#FF0000&quot;&gt;10.229.67.0/23&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;seq 25 permit &lt;span style=&quot;color:#FF0000&quot;&gt;10.168.207.0/23&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;seq 30 permit &lt;span style=&quot;color:#FF0000&quot;&gt;10.105.41.0/24&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			S4810(config-std-nacl)# &lt;strong&gt;exit&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После создания&amp;nbsp;&lt;strong&gt;access-list&lt;/strong&gt;&amp;nbsp;необходимо &amp;quot;наложить&amp;quot; его на&amp;nbsp;&lt;strong&gt;VTY&lt;/strong&gt;:&amp;nbsp;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S4810(conf)# &lt;strong&gt;line vty 0 9&lt;/strong&gt;&lt;br /&gt;
			S4810(config-line-vty)# &lt;strong&gt;access-class VTY_ACCESS&lt;/strong&gt;&lt;br /&gt;
			S4810(config-line-vty)# &lt;strong&gt;exit&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Выходим из режима конфигурации и сохраняем изменения:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S4810(conf)# &lt;strong&gt;exit&lt;/strong&gt;&lt;br /&gt;
			S4810# &lt;strong&gt;write memory&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/force10-upravlenie-tolko-s-razreshennykh-ip#comments</comments>
 <pubDate>Mon, 25 Sep 2017 20:52:45 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">579 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>MySQL - установка timezone</title>
 <link>http://muff.kiev.ua/content/mysql-ustanovka-timezone</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;MySQL Logo&quot; src=&quot;http://muff.kiev.ua/files/mysql-logo.jpg&quot; style=&quot;height:102px; margin:5px; width:140px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;При установке &lt;strong&gt;MySQL&lt;/strong&gt; не заполняет таблицы&amp;nbsp;&lt;strong&gt;time_zone&lt;/strong&gt;. &amp;nbsp;Этих таблиц в&amp;nbsp;&lt;strong&gt;MySQL&lt;/strong&gt;&amp;nbsp;несколько:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;time_zone&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;time_zone_leap_second&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;time_zone_name&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;time_zone_transition&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;time_zone_transition_type&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Соответственно,&amp;nbsp;данные о символьных временных зонах недоступны. Тоесть, если отпрвить &lt;strong&gt;MySQL&lt;/strong&gt;&amp;nbsp;комманду&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SET GLOBAL time_zone = &amp;quot;Europe/Kiev&amp;quot;;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;получим ошибку, что нету такой зоны... А если необходимо работать&amp;nbsp;с софтом,&amp;nbsp;который&amp;nbsp;будет обращается к этим таблицам в своей работе?&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Эту ошибку довольно легко исправить... Заполнить таблицы временных зон &lt;strong&gt;MySQL&lt;/strong&gt; можно следующей коммандой:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/mysql-ustanovka-timezone#comments</comments>
 <pubDate>Sat, 19 Aug 2017 21:28:02 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">578 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Nagios - проверка времени работы системы (System Uptime)</title>
 <link>http://muff.kiev.ua/content/nagios-proverka-vremeni-raboty-sistemy-system-uptime</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;Nagios Logo&quot; src=&quot;http://muff.kiev.ua/files/nagios-logo.png&quot; style=&quot;height:38px; width:140px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Имея в распоряжении настроенную связку&amp;nbsp;&lt;a href=&quot;http://muff.kiev.ua/content/nastroika-sistemy-monitoringa-nagios-3x-i-utility-konfigurirovaniya-nconf&quot; style=&quot;text-align: justify;&quot;&gt;&lt;strong&gt;Nagios + Nconf&lt;/strong&gt;&lt;/a&gt;, продолжим развивать тему мониторинга разнообразных параметров. Будем мониторить время работы системы с момента загрузки системы. Чтобы &amp;quot;ребуты&amp;quot; оборудования не проходили для нас незаметно...&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Проверку будем выполнять с используя расширение&amp;nbsp;&lt;strong&gt;check_snmp&lt;/strong&gt;. Синтаксис использования&amp;nbsp;&lt;strong&gt;check_snmp&amp;nbsp;&lt;/strong&gt;следующий:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;
Usage:
check_snmp -H &amp;lt;ip_address&amp;gt; -o &amp;lt;OID&amp;gt; [-w warn_range] [-c crit_range]
[-C community] [-s string] [-r regex] [-R regexi] [-t timeout] [-e retries]
[-l label] [-u units] [-p port-number] [-d delimiter] [-D output-delimiter]
[-m miblist] [-P snmp version] [-N context] [-L seclevel] [-U secname]
[-a authproto] [-A authpasswd] [-x privproto] [-X privpasswd] [-4|6]&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Будем использовать следующие переменные:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;10.50.10.50&lt;/strong&gt;&lt;/span&gt; - IP-адрес оборудования&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;public&lt;/strong&gt;&lt;/span&gt; - &lt;strong&gt;SNMP community&lt;/strong&gt;&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;2c&lt;/strong&gt;&lt;/span&gt; - версия &lt;strong&gt;SNMP&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Используя&amp;nbsp;&lt;strong&gt;SNMP&lt;/strong&gt;, состояние порта можно получить через&amp;nbsp;&lt;strong&gt;OID&amp;nbsp;sysUpTime.0&lt;/strong&gt;. Пример такого запроса и ответа:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;snmpwalk -v &lt;span style=&quot;color:#FF0000&quot;&gt;2c&lt;/span&gt; -c &lt;span style=&quot;color:#FF0000&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color:#FF0000&quot;&gt;10.50.10.50&lt;/span&gt; sysUpTime.0&lt;/strong&gt;&lt;br /&gt;
			DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (4043391272) 467 days, 23:38:32.72&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Теперь получим эту же информацию, используя&amp;nbsp;&lt;strong&gt;check_snmp&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;/usr/local/libexec/nagios/check_snmp -H &lt;span style=&quot;color:#FF0000&quot;&gt;10.50.10.50&lt;/span&gt; -o sysUpTime.0 -P &lt;span style=&quot;color:#FF0000&quot;&gt;2c&lt;/span&gt; -C &lt;span style=&quot;color:#FF0000&quot;&gt;public&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			SNMP OK - Timeticks: (4043420333) 467 days, 23:43:23.33 |&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Последний штрих - укажем в комманде проверки&amp;nbsp;дополнительные ключи, чтобы ограничить временные рамки, согласно которых получаем статус&amp;nbsp;&lt;strong&gt;CRITICAL&lt;/strong&gt;&amp;nbsp;и &lt;strong&gt;WARNING&lt;/strong&gt;. Если&amp;nbsp;&lt;strong&gt;UpTime&lt;/strong&gt;&amp;nbsp;оборудования меньше 3 часов - статус&amp;nbsp;&lt;strong&gt;CRITICAL&lt;/strong&gt;, если&amp;nbsp;&lt;strong&gt;UpTime&lt;/strong&gt;&amp;nbsp;меньше суток - статус&amp;nbsp;&lt;strong&gt;WARNING&lt;/strong&gt;. Итак:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3 часа&lt;/strong&gt; - это &lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;10800&lt;/strong&gt;&lt;/span&gt; секунд&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;24 часа&lt;/strong&gt; - это &lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;86400&lt;/strong&gt;&lt;/span&gt; секунд&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;SNMP&lt;/strong&gt; возвращает нам значение &lt;strong&gt;sysUpTime.0&lt;/strong&gt;, в формате &lt;strong&gt;timeticks&lt;/strong&gt;. &lt;strong&gt;Timetick&lt;/strong&gt;&amp;nbsp;- это 0.01 секунды. Соответственно, необходимо перевести наше время в секундах в формат&amp;nbsp;&lt;strong&gt;timeticks&lt;/strong&gt;. Для этого умножаем время в секундах на 100, и получаем значение в&amp;nbsp;&lt;strong&gt;timeticks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Тестируем работоспособность комманды проверки:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;#&amp;nbsp;&lt;strong&gt;/usr/local/libexec/nagios/check_snmp&amp;nbsp;-H &lt;span style=&quot;color:#FF0000&quot;&gt;10.50.10.50&lt;/span&gt; -o sysUpTime.0 -P&amp;nbsp;&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;2c&lt;/span&gt;&amp;nbsp;-C &lt;span style=&quot;color:#FF0000&quot;&gt;public&lt;/span&gt; -c 1080000:0 -w 8640000:0&lt;/strong&gt;&lt;br /&gt;
			SNMP CRITICAL - *290700* | DISMAN-EVENT-MIB::sysUpTimeInstance=290700;8640000:0;1080000:0;8640000;1080000;&lt;br /&gt;
			#&amp;nbsp;&lt;strong&gt;/usr/local/libexec/nagios/check_snmp&amp;nbsp;-H &lt;span style=&quot;color:#FF0000&quot;&gt;10.50.10.50&lt;/span&gt; -o sysUpTime.0 -P&amp;nbsp;&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;2c&lt;/span&gt;&amp;nbsp;-C &lt;span style=&quot;color:#FF0000&quot;&gt;public&lt;/span&gt; -c 1080000:0 -w 8640000:0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SNMP WARNING - *8179000* | DISMAN-EVENT-MIB::sysUpTimeInstance=8179000;8640000:0;1080000:0;8640000;1080000;&lt;br /&gt;
			#&amp;nbsp;&lt;strong&gt;/usr/local/libexec/nagios/check_snmp&amp;nbsp;-H &lt;span style=&quot;color:#FF0000&quot;&gt;10.50.10.50&lt;/span&gt; -o sysUpTime.0 -P&amp;nbsp;&lt;span style=&quot;color:rgb(255, 0, 0)&quot;&gt;2c&lt;/span&gt;&amp;nbsp;-C &lt;span style=&quot;color:#FF0000&quot;&gt;public&lt;/span&gt;&amp;nbsp;-c 1080000:0 -w 8640000:0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SNMP OK - 4049137283 | DISMAN-EVENT-MIB::sysUpTimeInstance=4049137283;8640000:0;1080000:0;8640000;1080000;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Теперь, используя эту информацию, создадим в&amp;nbsp;&lt;strong&gt;Nconf&lt;/strong&gt;&amp;nbsp;новую&amp;nbsp;&amp;quot;&lt;strong&gt;Checkcommand&lt;/strong&gt;&amp;quot; - &amp;quot;&lt;strong&gt;check_snmp_uptime&lt;/strong&gt;&amp;quot;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Для этого в меню &amp;quot;&lt;strong&gt;Additional Items&lt;/strong&gt;&amp;quot;, пункт &amp;quot;&lt;strong&gt;Checkcommands&lt;/strong&gt;&amp;quot; жмем кнопку &amp;quot;&lt;strong&gt;Add&lt;/strong&gt;&amp;quot; и заполняем форму следующим образом:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;check command name&lt;/td&gt;
&lt;td&gt;check_snmp_uptime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;default service name&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;check command line&lt;/td&gt;
&lt;td&gt;$USER1$/check_snmp -H $HOSTADDRESS$ -o sysUpTime.0 -P $ARG1$ -C $ARG2$ -c $ARG3$ -w $ARG4$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;default command params&lt;/td&gt;
&lt;td&gt;!2c!public!1080000:0!8640000:0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;params description&lt;/td&gt;
&lt;td&gt;ARG1=SNMP version,ARG2=SNMP community,ARG3=Warn level,ARG4=Critical Level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;amount of params&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После создания команды проверки&amp;nbsp;&lt;strong&gt;check_snmp_uptime&lt;/strong&gt;, добавляем этот сервис в команды проверки устройств, не забыв изменить необходимые переменные. Генерируем конфигурационные файлы и ожидаем проверки наших сервисов.&lt;/p&gt;
&lt;p&gt;Результаты наших усилий:&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/Nagios_SNMP_Uptime_01.png&quot;&gt;&lt;img alt=&quot;Nagios SNMP Uptime&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/Nagios_SNMP_Uptime_01.png&quot; style=&quot;height:112px; width:200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/Nagios_SNMP_Uptime_02.png&quot;&gt;&lt;img alt=&quot;Nagios SNMP Uptime&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/Nagios_SNMP_Uptime_02.png&quot; style=&quot;height:112px; width:200px&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/Nagios_SNMP_Uptime_03.png&quot;&gt;&lt;img alt=&quot;Nagios SNMP Uptime&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/Nagios_SNMP_Uptime_03.png&quot; style=&quot;height:112px; width:200px&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/Nagios_SNMP_Uptime_04.png&quot;&gt;&lt;img alt=&quot;Nagios SNMP Uptime&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/Nagios_SNMP_Uptime_04.png&quot; style=&quot;height:112px; width:200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/nagios-proverka-vremeni-raboty-sistemy-system-uptime#comments</comments>
 <pubDate>Wed, 16 Aug 2017 23:04:03 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">577 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Ftpd - запуск штатного FTP-сервера</title>
 <link>http://muff.kiev.ua/content/ftpd-zapusk-shtatnogo-ftp-servera</link>
 <description>&lt;p class=&quot;rtejustify&quot;&gt;Иногда бывают ситуации, когда необходимо быстро поднять &lt;strong&gt;FTP&lt;/strong&gt;-сервер, а громоздкие решения, такие как &lt;strong&gt;Proftpd&lt;/strong&gt; и&amp;nbsp;&lt;strong&gt;Pure-ftpd&lt;/strong&gt; - излишни. Попробуем разобраться со штатным &lt;strong&gt;FTP&lt;/strong&gt;-сервером, который идет вместе с &lt;strong&gt;FreeBSD&lt;/strong&gt; - &lt;strong&gt;ftpd&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Создадим системного пользователя, домашним каталогом которого укажем директорию, куда необходимо попадать &lt;strong&gt;FTP&lt;/strong&gt;-пользователю:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;pw useradd -n &lt;span style=&quot;color:#FF0000&quot;&gt;ftpuser1&lt;/span&gt; -g ftp -c FTP\ user -d &lt;span style=&quot;color:#FF0000&quot;&gt;/ftp&lt;/span&gt; -s /bin/sh&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;где&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;ftpuser1&lt;/strong&gt; - имя пользователя&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;/ftp&lt;/strong&gt; - домашний каталог&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Создадим домашний каталог и установим владельцем даного каталога созданного пользователя:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;mkdir &lt;span style=&quot;color:#FF0000&quot;&gt;/ftp&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
			# &lt;strong&gt;chown&amp;nbsp;&lt;span style=&quot;color:#FF0000&quot;&gt;ftpuser1&lt;/span&gt;:ftp&amp;nbsp;&lt;span style=&quot;color:#FF0000&quot;&gt;/ftp&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Установим пароль для пользователя:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;passwd&amp;nbsp;&lt;span style=&quot;color:#FF0000&quot;&gt;ftpuser1&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Добавим в &lt;strong&gt;rc.conf&lt;/strong&gt; запись о старте &lt;strong&gt;FTP&lt;/strong&gt;-демона вместе со стартом системы:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;# &lt;strong&gt;echo &amp;#39;# FTP Server&amp;#39; &amp;gt;&amp;gt;&amp;nbsp;/etc/rc.conf&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;# &lt;strong&gt;echo &amp;#39;ftpd_enable=&amp;quot;YES&amp;quot;&amp;#39;&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;/etc/rc.conf&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Запустим FTP-сервер:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;sh /etc/rc.d/ftpd start&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Вот и все... &lt;strong&gt;FTP&lt;/strong&gt;-сервер готов. Обратите внимание, что не всем системным пользователям разрешен &lt;strong&gt;FTP&lt;/strong&gt;-доступ. Список пользователей, которым запрещен&amp;nbsp;&lt;strong&gt;FTP&lt;/strong&gt;-доступ перечислен в файле&amp;nbsp;&lt;strong&gt;/etc/ftpusers&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Подключаемся, проверяем, тестируем, etc.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Ну и финальный штрих... Если данный системный пользователь создавался только для работы по &lt;strong&gt;FTP&lt;/strong&gt;, стоит запретить ему подключение по &lt;strong&gt;ssh&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;# &lt;strong&gt;echo &amp;#39;DenyUsers &lt;span style=&quot;color:#FF0000&quot;&gt;ftpuser1&lt;/span&gt;&amp;#39; &amp;gt;&amp;gt; /etc/ssh/sshd_config&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;#&amp;nbsp;&lt;strong&gt;sh /etc/rc.d/sshd restart&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/ftpd-zapusk-shtatnogo-ftp-servera#comments</comments>
 <pubDate>Sat, 01 Apr 2017 01:18:45 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">575 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Juniper mx80 - обновление ПО</title>
 <link>http://muff.kiev.ua/content/juniper-mx80-obnovlenie-po</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;Juniper logo&quot; src=&quot;http://muff.kiev.ua/files/juniper_rgb_blue_1800x600.png&quot; style=&quot;height:47px; width:140px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Как я уже &lt;a href=&quot;http://muff.kiev.ua/content/juniper-mx80-prichiny-poyavlenie-rpdcore-failov&quot;&gt;писал ранее&lt;/a&gt;, &lt;a href=&quot;http://muff.kiev.ua/content/juniper-mx80-filesystem-full&quot;&gt;проблема нехватки свободного дискового пространства на маршрутизаторах &lt;strong&gt;Juniper&lt;/strong&gt; серии MX&lt;/a&gt;&amp;nbsp;- софтварная, соответственно, решается обновлением програмного обеспечения до более новой версии. Однако, сам процес обновления ПО не описал. Попробуем исправить даную оплошность...&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Итак, исходные данные: маршрутизатор &lt;strong&gt;Juniper&lt;/strong&gt; серии &lt;strong&gt;MX&lt;/strong&gt;, версия ПО&amp;nbsp;12.3R3.4:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;nbsp;&lt;strong&gt;show&amp;nbsp;version&lt;/strong&gt;&lt;br /&gt;
			Hostname:&amp;nbsp;jun.domain.com&lt;br /&gt;
			Model:&amp;nbsp;mx80-t&lt;br /&gt;
			JUNOS&amp;nbsp;Base&amp;nbsp;OS&amp;nbsp;boot&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Base&amp;nbsp;OS&amp;nbsp;Software&amp;nbsp;Suite&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Kernel&amp;nbsp;Software&amp;nbsp;Suite&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Crypto&amp;nbsp;Software&amp;nbsp;Suite&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Packet&amp;nbsp;Forwarding&amp;nbsp;Engine&amp;nbsp;Support&amp;nbsp;(MX80)&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Online&amp;nbsp;Documentation&amp;nbsp;[12.3R3.4]&lt;br /&gt;
			JUNOS&amp;nbsp;Routing&amp;nbsp;Software&amp;nbsp;Suite&amp;nbsp;[12.3R3.4]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;На момент обновления ПО, рекомендуемая версия ПО была&amp;nbsp;13.3R8.7. Именно до такой версии и будем обновляться. Для обновления имеем следующий файл ПО:&amp;nbsp;&lt;strong&gt;jinstall-ppc-13.3R8.7-domestic-signed.tgz&lt;/strong&gt;. Попробуем разобраться, какое именно ПО имеем в своем распоряжении. Итак, &lt;strong&gt;JUNOS&lt;/strong&gt; бывает трех типов, которые отличаются лицензией:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JUNOS Canada and U.S.&lt;/strong&gt;&lt;/em&gt; (более известная как &amp;quot;&lt;strong&gt;do&lt;/strong&gt;&lt;strong&gt;mestic version&lt;/strong&gt;&amp;quot;) - ранее не предназначалась для экспорта в другие страны кроме&amp;nbsp;США&amp;nbsp;и&amp;nbsp;Канады, но в настоящее время, в рамках контракта на поддержку, эту редакцию можно получить по дополнительному запросу в службу поддержки. Единственным условием использования является соглашение о том, что полученная копия не будет использована на территории стран из определенного списка, публикуемого&amp;nbsp;государственным департаментом&amp;nbsp;США.&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JUNOS Worldwide&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;(более известная как &amp;quot;export version&amp;quot; или &amp;quot;limited version&amp;quot; - поставляется вместе с оборудованием &lt;strong&gt;Juniper Networks&lt;/strong&gt;. Лицензия данной редакции позволяет использовать &lt;strong&gt;JUNOS&lt;/strong&gt; в любой стране, но имеет существенные ограничения на применение&amp;nbsp;криптографических&amp;nbsp;алгоритмов&amp;nbsp;(например, отсутствует поддержка&amp;nbsp;&lt;strong&gt;SSH&lt;/strong&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;JUNOS-FIPS&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;&amp;mdash; редакция, соответствующая&amp;nbsp;федеральным стандартам обработки информации&amp;nbsp;США.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Буквы в названии релиза имеют следующие значения:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;R&lt;/strong&gt; - релиз в котором исправлены ошибки&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F&lt;/strong&gt; - релиз в который добавлен новый функционал&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Теперь несколько слов о архитектуре MX-сов... На борту имеется два&amp;nbsp;имеют &lt;strong&gt;2&amp;nbsp;NAND Flash&lt;/strong&gt; (основная и резервная соответственно), которые монтируются как&amp;nbsp;&lt;strong&gt;da0&lt;/strong&gt; и &lt;strong&gt;da1&lt;/strong&gt;. По умолчанию, порядок загрузки маршрутизатора следующий:&amp;nbsp;&lt;strong&gt;USB -&amp;gt; Nand0 -&amp;gt; Nand1&lt;/strong&gt;. Если маршрутизатор не может загрузить ядро с носителя, он переходит к следующему и тд. Порядок загрузки можно изменить. Актуальный порядок загрузки можно просмотреть, выполнив в &lt;strong&gt;shell&lt;/strong&gt; комманду&amp;nbsp;&lt;strong&gt;sysctl machdep.bootdevs&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;% &lt;strong&gt;sysctl machdep.bootdevs&lt;/strong&gt;&lt;br /&gt;
			machdep.bootdevs: usb,nand-flash0,nand-flash1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Если по определенным причинам &lt;strong&gt;Juniper&lt;/strong&gt; загрузился с резервной &lt;strong&gt;NAND Flash&lt;/strong&gt;, во время загрузки отобразится следующее сообщение: &amp;quot;&lt;strong&gt;Junos booted from&amp;nbsp;alternate media&lt;/strong&gt;&amp;quot;. Устранить даную проблему можно попытаться простой перезагрузкой маршрутизатора и проверкой, с какой флешки загрузился маршрутизатор в даный момент. Для этого пригодятся следующие комманды&amp;nbsp;&lt;strong&gt;shell&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;sysctl machdep.currbootdev&lt;/strong&gt; - текущий носитель, с которого загрузился маршрутизатор&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;&lt;strong&gt;sysctl machdep.bootdevs&lt;/strong&gt; - текущий порядок загрузки маршрутизатора&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Если маршрутизатор повторно загрузился с резервного носителя, необходимо в &lt;strong&gt;CLI&lt;/strong&gt; выполнить комманду&amp;nbsp;&lt;strong&gt;request system snapshot&lt;/strong&gt;, которая скопирует активный&amp;nbsp;&lt;strong&gt;NAND Flash&lt;/strong&gt;&amp;nbsp;на альтернативный.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Если все ok, приступаем к процедуре обновления.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Предварительно делаем &lt;strong&gt;snapshot&lt;/strong&gt; рабочей системы на альтернативный носитель:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; &lt;strong&gt;request system snapshot&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Чистим систему от &amp;quot;мусора&amp;quot; и ненужных файлов (можно предварительно просмотреть список удаляемых файлов, воспользовавшись коммандой&amp;nbsp;&lt;strong&gt;request system storage cleanup dry-run&lt;/strong&gt;). Если этого не сделать, возможна ситуация, когда не флеше не хватит свободного места для коректного обновления.&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; &lt;strong&gt;request system storage cleanup&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После чистки системы, загружаем любым доступным (&lt;strong&gt;SFTP&lt;/strong&gt;, &lt;strong&gt;SCP&lt;/strong&gt;, &lt;strong&gt;fetch&lt;/strong&gt;, etc) на маршрутизатор образ &lt;strong&gt;JunOS&lt;/strong&gt; в формате&amp;nbsp;&lt;strong&gt;tgz&lt;/strong&gt;&amp;nbsp;(в моем частном случае, это &lt;strong&gt;jinstall-ppc-13.3R8.7-domestic-signed.tgz&lt;/strong&gt;) и размещаем его в каталог &lt;strong&gt;/var/tmp&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;После загрузки проверяем целостность файла, получив его контрольную сумму и сравнив с оригиналом:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; &lt;strong&gt;file checksum md5 /var/tmp/jinstall-ppc-13.3R8.7-domestic-signed.tgz&lt;/strong&gt;&lt;br /&gt;
			MD5 (/var/tmp/jinstall-ppc-13.3R8.7-domestic-signed.tgz) = &lt;span style=&quot;color:#FF0000&quot;&gt;bd9d4960243c26445d23a38a782a2336&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Если контрольные суммы совпадают, даем комманду обновления:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;nbsp;&lt;strong&gt;request system software add /var/tmp/jinstall-ppc-13.3R8.7-domestic-signed.tgz force no-validate reboot&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Процедура обновления занимает около 5 минут, по завершению которой, маршрутизатор выполняет перезагрузку и грузится уже с новой версией ПО. Проверяем версию ПО после обновления:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; &lt;strong&gt;show version&lt;/strong&gt;&lt;br /&gt;
			Hostname: jun.domain.com&lt;br /&gt;
			Model: mx80-t&lt;br /&gt;
			Junos: 13.3R8.7&lt;br /&gt;
			JUNOS Base OS boot [13.3R8.7]&lt;br /&gt;
			JUNOS Base OS Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Kernel Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Crypto Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Packet Forwarding Engine Support (MX80) [13.3R8.7]&lt;br /&gt;
			JUNOS Online Documentation [13.3R8.7]&lt;br /&gt;
			JUNOS Services Application Level Gateways [13.3R8.7]&lt;br /&gt;
			JUNOS Services Jflow Container package [13.3R8.7]&lt;br /&gt;
			JUNOS Services Stateful Firewall [13.3R8.7]&lt;br /&gt;
			JUNOS Services NAT [13.3R8.7]&lt;br /&gt;
			JUNOS Services RPM [13.3R8.7]&lt;br /&gt;
			JUNOS Services Crypto [13.3R8.7]&lt;br /&gt;
			JUNOS Services SSL [13.3R8.7]&lt;br /&gt;
			JUNOS Services IPSec [13.3R8.7]&lt;br /&gt;
			JUNOS Routing Software Suite [13.3R8.7]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Работаем неделю-вторую на новом ПО. Если все в порядке и не появились сбои в работе, выполняем копирование активного&amp;nbsp;&lt;strong&gt;NAND Flash&lt;/strong&gt;&amp;nbsp;на альтернативный:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;&amp;nbsp;&lt;strong&gt;request system snapshot&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;P.S. Можно побаловаться незадокументированой функцией и вместе с просмотром информации о версии ПО развлечься прочтением хайку:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&amp;gt; &lt;strong&gt;show version and haiku&lt;/strong&gt;&lt;br /&gt;
			Hostname: jun.domain.com&lt;br /&gt;
			Model: mx80-t&lt;br /&gt;
			Junos: 13.3R8.7&lt;br /&gt;
			JUNOS Base OS boot [13.3R8.7]&lt;br /&gt;
			JUNOS Base OS Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Kernel Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Crypto Software Suite [13.3R8.7]&lt;br /&gt;
			JUNOS Packet Forwarding Engine Support (MX80) [13.3R8.7]&lt;br /&gt;
			JUNOS Online Documentation [13.3R8.7]&lt;br /&gt;
			JUNOS Services Application Level Gateways [13.3R8.7]&lt;br /&gt;
			JUNOS Services Jflow Container package [13.3R8.7]&lt;br /&gt;
			JUNOS Services Stateful Firewall [13.3R8.7]&lt;br /&gt;
			JUNOS Services NAT [13.3R8.7]&lt;br /&gt;
			JUNOS Services RPM [13.3R8.7]&lt;br /&gt;
			JUNOS Services Crypto [13.3R8.7]&lt;br /&gt;
			JUNOS Services SSL [13.3R8.7]&lt;br /&gt;
			JUNOS Services IPSec [13.3R8.7]&lt;br /&gt;
			JUNOS Routing Software Suite [13.3R8.7]&lt;/p&gt;
&lt;p&gt;
			&lt;span style=&quot;color:#FF0000&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; No icons; no mouse&lt;br /&gt;
			&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; No drop down menus or fonts&lt;br /&gt;
			&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CLIs are cool&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/juniper-mx80-obnovlenie-po#comments</comments>
 <pubDate>Wed, 25 Jan 2017 01:00:06 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">572 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>NoDeny - недоступность определенного года</title>
 <link>http://muff.kiev.ua/content/nodeny-nedostupnost-opredelennogo-goda</link>
 <description>&lt;p class=&quot;rtejustify&quot;&gt;При работе с &lt;strong&gt;NoDeny&lt;/strong&gt; версий 49.x и 50.x иногда возникает проблема с ограничениями на выбор доступных дат. В исходном коде по умолчанию разрешена работа в промежутке дат 2004...2010 года, что на данный момент уже неактуально. В некоторых случаях, после внесения изменений все равно, со временем, можно &amp;quot;упереться&amp;quot; в данное ограничение. Например, как в следующем случае:&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;NoDeny проблема дат&quot; src=&quot;http://muff.kiev.ua/files/nodeny_years.png&quot; style=&quot;height:191px; width:260px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;quot;На дворе&amp;quot; уже 2017 год, а в админке мы ограничены 2016-тым годом. Тоесть, когда-то уже изменялся доступный диапазон, но и он со временем стал неактуальный.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Решением даной проблемы будет внесение следующих правок в файл&amp;nbsp;&lt;strong&gt;payshow.pl&lt;/strong&gt;, который находится в каталоге&amp;nbsp;&lt;strong&gt;/usr/local/nodeny/web&lt;/strong&gt;. Редактируем строку номер&amp;nbsp;772, которая в моем случае имеет следующее значение:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$h1.=&amp;quot;&amp;lt;option value=$_&amp;gt;&amp;quot;.($_+1900).&amp;#39;&amp;lt;/option&amp;gt;&amp;#39; foreach (&lt;span style=&quot;color:#FF0000&quot;&gt;108..116&lt;/span&gt;);&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Даной строкой имеем значения 2008-2016 (добавляя&amp;nbsp;1900).&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Решением даного вопроса будет модификация даной строки к следующему состоянию:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$h1.=&amp;quot;&amp;lt;option value=$_&amp;gt;&amp;quot;.($_+1900).&amp;#39;&amp;lt;/option&amp;gt;&amp;#39; foreach (&lt;span style=&quot;color:#FF0000&quot;&gt;$year_now-5..$year_now&lt;/span&gt;);&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;В этом случае имеем &amp;quot;гибкое&amp;quot; решение, когда доступный диапазон будет зависеть от текущего года. Тоесть, доступным будет текущий год и пять предыдущих лет.&lt;/p&gt;
&lt;p&gt;Также изменения необходимо внести в файл&amp;nbsp;&lt;strong&gt;calls.pl&lt;/strong&gt;. Необходимо внести изменения в строку 666. Предыдущее значение:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$hyear.=&amp;quot;&amp;lt;option value=$_&amp;gt;&amp;quot;.($_+1900).&amp;quot;&amp;lt;/option&amp;gt;&amp;quot; for (&lt;span style=&quot;color:#FF0000&quot;&gt;108..116&lt;/span&gt;);&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Редактируем до следующего состояния:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$hyear.=&amp;quot;&amp;lt;option value=$_&amp;gt;&amp;quot;.($_+1900).&amp;quot;&amp;lt;/option&amp;gt;&amp;quot; for (&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;span style=&quot;background-color:rgb(236, 237, 243); font-family:verdana,sans-serif; font-size:small&quot;&gt;$year_now-5..$year_now&lt;/span&gt;&lt;/span&gt;);&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/nodeny-nedostupnost-opredelennogo-goda#comments</comments>
 <pubDate>Tue, 03 Jan 2017 18:23:06 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">574 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Dovecot - настройка ACL доступа для IMAP (доступ только на чтение)</title>
 <link>http://muff.kiev.ua/content/dovecot-nastroika-acl-dostupa-dlya-imap-dostup-tolko-na-chtenie</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;Dovecot Logo&quot; src=&quot;http://muff.kiev.ua/files/dovecot.gif&quot; style=&quot;height:60px; width:125px&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Довольно часто, при работе с почтой, используется протокол &lt;strong&gt;IMAP&lt;/strong&gt; (&lt;strong&gt;Interim Mail Access Protocol&lt;/strong&gt;). Удобность этого протокола заключается в синхронизации, в отличии от&amp;nbsp;протокола &lt;strong&gt;POP3&lt;/strong&gt; (&lt;strong&gt;Post Office Protocol - Version 3&lt;/strong&gt;).&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Однако, если доступ ящику имеет несколько человек (например менеджеры компании), то могут возникнуть проблемы, как случайные, так и умышленные. Самая частая: удаление сообщений на одном клиенте влечёт за собой синхронное удаление на всех активных клиентах (в том числе и на сервере).&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Попытаемся избежать возможных неприятностей, если есть вероятность даной ситуации... Отталкиваемся от того, что в качестве &lt;strong&gt;MDA&lt;/strong&gt; (&lt;strong&gt;Mail delivery agent&lt;/strong&gt;) используем &lt;strong&gt;&lt;a href=&quot;http://muff.kiev.ua/content/dovecot-vygrebaem-pochtu-iz-pochtovogo-yashchika&quot;&gt;Dovecot&lt;/a&gt;&lt;/strong&gt;. Воспользуемся возможностями плагина&amp;nbsp;&lt;strong&gt;ACL&lt;/strong&gt; (&lt;strong&gt;Access Control Lists&lt;/strong&gt;).&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Для подключения плагина необходимо внести изменения в конфигурационный файл&amp;nbsp;&lt;strong&gt;dovecot.conf&lt;/strong&gt;. Изменения касаются следующих пунктов файла конфигурации:&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;rtejustify&quot;&gt;protocol imap&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;protocol lda&lt;/li&gt;
&lt;li class=&quot;rtejustify&quot;&gt;plugin&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Даные пункты необходимо будет отредактировать до следующего состояния (или дополнить, в случае необходимости):&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color:rgb(51, 51, 51)&quot;&gt;
&lt;pre&gt;
&lt;strong&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;protocol imap {
&lt;/span&gt;&lt;span style=&quot;color:#00FF00&quot;&gt;# список плагинов (сепаратор - пробел)&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
mail_plugins = &lt;/span&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;acl imap_acl&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
}
&lt;/span&gt;
&lt;span style=&quot;color:#00FFFF&quot;&gt;protocol lda {
&lt;/span&gt;&lt;span style=&quot;color:#00FF00&quot;&gt;# список плагинов (сепаратор - пробел)&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
mail_plugins = &lt;/span&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;acl&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
}
&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
plugin {
&lt;/span&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;acl = vfile&lt;/span&gt;&lt;span style=&quot;color:#00FFFF&quot;&gt;
}&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Чтобы изменения вступили в силу, необходимо перезапустить&amp;nbsp;&lt;strong&gt;dovecot&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;sh /usr/local/etc/rc.d/dovecot restart&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Плагин активирован... Следующий шаг - создание &lt;strong&gt;acl&lt;/strong&gt; для ящика, права которого необходимо изменить. Для этого необходимо в корневом каталоге этого ящика создать файл&amp;nbsp;&lt;strong&gt;dovecot-acl&lt;/strong&gt;. Тоесть, если путь к ящику&amp;nbsp;&lt;strong&gt;/var/exim/domain/user&lt;/strong&gt;, то путь к &lt;strong&gt;acl&lt;/strong&gt; будет&amp;nbsp;&lt;strong&gt;/var/exim/domain/user/dovecot-acl&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Синтаксис файла&amp;nbsp;&lt;strong&gt;dovecot-acl&lt;/strong&gt; следующий:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;identifier&amp;gt; &amp;lt;ACLs&amp;gt; [:&amp;lt;named ACLs&amp;gt;]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Тоесть, чтобы разрешить доступ к ящику только на чтение, достаточно создать файл&amp;nbsp;&lt;strong&gt;dovecot-acl&lt;/strong&gt; следующего содержания:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;owner lr&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Пример многострочного файла &lt;strong&gt;dovecot-acl&lt;/strong&gt;:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;owner lrwstipekxa&lt;br /&gt;
			anyone lr&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Чтобы полностью разобраться с даным вопросом, разместим следующую информацию&amp;nbsp;- допустимые значения идентификаторов и допустимые значения флагов.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;strong&gt;Таблица идентификаторов&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;group-override=group name&lt;/li&gt;
&lt;li&gt;user=user name&lt;/li&gt;
&lt;li&gt;owner&lt;/li&gt;
&lt;li&gt;group=group name&lt;/li&gt;
&lt;li&gt;authenticated&lt;/li&gt;
&lt;li&gt;anyone (или anonymous, что равнозначно anyone)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Таблица флагов&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;l&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;lookup&lt;/td&gt;
&lt;td&gt;Ящик виден в списке&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;r&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;read&lt;/td&gt;
&lt;td&gt;Ящик может быть открыт на чтение&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;w&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;write&lt;/td&gt;
&lt;td&gt;Флаги и ключевые слова сообщения могут быть изменены, за исключением &amp;laquo;Просмотрено&amp;raquo; и &amp;laquo;Удалено&amp;raquo;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;s&lt;/td&gt;
&lt;td&gt;
&lt;p class=&quot;rtecenter&quot;&gt;write-seen&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;Флаг сообщения &amp;laquo;Просмотрено&amp;raquo; (\Seen) может быть изменён&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;t&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;write-deleted&lt;/td&gt;
&lt;td&gt;Флаг сообщения &amp;laquo;Удалён&amp;raquo; (\Deleted) может быть изменён&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;i&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;insert&lt;/td&gt;
&lt;td&gt;Сообщения могут быть записаны или скопированы в ящик&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;p&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;post&lt;/td&gt;
&lt;td&gt;Сообщения могут быть размещены через LDA, например через Sieve&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;e&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;expunge&lt;/td&gt;
&lt;td&gt;Сообщения могут быть исключены&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;k&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;create&lt;/td&gt;
&lt;td&gt;Ящики могут быть созданы или переименованы под управлением этого ящика (переименование требует прав на удаление)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;x&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;delete&lt;/td&gt;
&lt;td&gt;Ящик может быть удалён&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;rtecenter&quot;&gt;a&lt;/td&gt;
&lt;td class=&quot;rtecenter&quot;&gt;admin&lt;/td&gt;
&lt;td&gt;Административные права на ящик (изменение списков ACL)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;Примечание&lt;/strong&gt;&lt;/span&gt;:&amp;nbsp;Кроме файла &lt;strong&gt;dovecot-acl&lt;/strong&gt;, в каталоге&amp;nbsp;может находится кэш-файл d&lt;strong&gt;ovecot-acl-list&lt;/strong&gt;, его нужно удалить после внесения изменений в файле &lt;strong&gt;dovecot-acl&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Проверяем работоспособность правил... Для ящика разрешен доступ только на чтение. При попытке удалить письмо (используя web-интерфейс &lt;strong&gt;Roundсube&lt;/strong&gt;), получаем ошибку:&lt;/p&gt;
&lt;p class=&quot;rtecenter&quot;&gt;&lt;a class=&quot;thickbox&quot; href=&quot;/files/imagepicker/1/roundcube_dovecot_acl.png&quot;&gt;&lt;img alt=&quot;Roundсube - ошибка &amp;amp;amp;quot;Доступ только на чтение&amp;amp;amp;quot;&quot; class=&quot;imgp_img&quot; src=&quot;/files/imagepicker/1/thumbs/roundcube_dovecot_acl.png&quot; style=&quot;height:61px; width:200px&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/dovecot-nastroika-acl-dostupa-dlya-imap-dostup-tolko-na-chtenie#comments</comments>
 <pubDate>Fri, 19 Aug 2016 15:59:38 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">573 at http://muff.kiev.ua</guid>
</item>
<item>
 <title>Ioncube - установка ionCube Loader на FreeBSD</title>
 <link>http://muff.kiev.ua/content/ioncube-ustanovka-ioncube-loader-na-freebsd</link>
 <description>&lt;p class=&quot;rtecenter&quot;&gt;&lt;img alt=&quot;Ioncube logo&quot; src=&quot;http://muff.kiev.ua/files/ioncube_logo.png&quot; /&gt;&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;strong&gt;ionCube&lt;/strong&gt;&amp;nbsp;&amp;mdash; это популярный способ шифрования &lt;strong&gt;php&lt;/strong&gt;-файлов.&amp;nbsp;&lt;strong&gt;ionCube &lt;/strong&gt;был создан в 2002 как инструмент для защиты программного обеспечения (написанном на &lt;strong&gt;PHP&lt;/strong&gt;) от просмотра, изменения или запуска на компьютерах, без требуемой лицензии. Сама технология кодирования выросла из проекта &lt;strong&gt;PHP Accelerator&lt;/strong&gt; и изначально запускалась в составе сервиса, в котором &lt;strong&gt;PHP&lt;/strong&gt;-скрипты загружались, раскодировались и возвращались обратно в командную оболочку.&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Попробуем установить&amp;nbsp;&lt;strong&gt;ionCube&lt;/strong&gt;&amp;nbsp;на сервере под управлением &lt;strong&gt;FreeBSD&lt;/strong&gt;. Исходные данные следующие:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;uname -srm&lt;/strong&gt;&lt;br /&gt;
			FreeBSD 10.3-RELEASE amd64&lt;br /&gt;
			#&amp;nbsp;&lt;strong&gt;php -v&lt;/strong&gt;&lt;br /&gt;
			PHP 5.5.37 (cli) (built: Jun 30 2016 01:19:54)&lt;br /&gt;
			Copyright (c) 1997-2015 The PHP Group&lt;br /&gt;
			Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Виполним установку&amp;nbsp;&lt;strong&gt;ionCube&lt;/strong&gt;&amp;nbsp;из системы портов:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;cd /usr/ports/devel/ioncube &amp;amp;&amp;amp; make install clean &amp;amp;&amp;amp; rehash&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;После установки порта получаем инструкции, которые необходимо выполнить:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;Edit /usr/local/etc/php.ini or /usr/local/etc/php/extensions.ini&lt;br /&gt;
			and add this three lines:&lt;/p&gt;
&lt;p&gt;--------------------------------------------------------------------------------&lt;br /&gt;
			[Zend]&lt;br /&gt;
			zend_extension=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader.so&amp;quot;&lt;br /&gt;
			zend_extension_ts=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader_ts.so&amp;quot;&lt;br /&gt;
			--------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;NOTE: If you have any Zend Extension already installed - you need put this before&lt;br /&gt;
			existing zend_extension lines.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Добавим в php.ini следующие строки:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[Zend]&lt;br /&gt;
			zend_extension=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader.so&amp;quot;&lt;br /&gt;
			zend_extension_ts=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader_ts.so&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;&lt;span style=&quot;color:#FF0000&quot;&gt;&lt;strong&gt;ВАЖНО!&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;Если&amp;nbsp;уже установлены какие-либо &lt;strong&gt;Zend Extension&lt;/strong&gt;, то необходимо добавить эти строки ДО присутствующих строк &lt;strong&gt;zend_extension&lt;/strong&gt;!&lt;/p&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Проверяем, подгрузился ли модуль:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;php -v&lt;/strong&gt;&lt;br /&gt;
			Failed loading /usr/local/lib/php/20121212-zts/ioncube/ioncube_loader.so: &amp;nbsp;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader.so: Undefined symbol &amp;quot;executor_globals&amp;quot;&lt;br /&gt;
			PHP 5.5.37 (cli) (built: Jun 30 2016 01:19:54)&lt;br /&gt;
			Copyright (c) 1997-2015 The PHP Group&lt;br /&gt;
			Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ошибка! Решаем ее следующим образом. Удаляем&amp;nbsp;строку:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;zend_extension=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader.so&amp;quot;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;А &lt;strong&gt;zend_extension_ts&lt;/strong&gt; изменим в&amp;nbsp;&lt;strong&gt;zend_extension&lt;/strong&gt;.&amp;nbsp;Тоесть, после всех редактирований &lt;strong&gt;php.ini&lt;/strong&gt; получаем следующие добавленные&amp;nbsp;строки:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[Zend]&lt;br /&gt;
			zend_extension=&amp;quot;/usr/local/lib/php/20121212-zts/ioncube/ioncube_loader_ts.so&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Проверяем:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;# &lt;strong&gt;php -v&lt;/strong&gt;&lt;br /&gt;
			PHP 5.5.37 (cli) (built: Jun 30 2016 01:19:54)&lt;br /&gt;
			Copyright (c) 1997-2015 The PHP Group&lt;br /&gt;
			Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies&lt;br /&gt;
			&amp;nbsp; &amp;nbsp; with the ionCube PHP Loader v5.0.21, Copyright (c) 2002-2016, by ionCube Ltd.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p class=&quot;rtejustify&quot;&gt;Все в порядке,&amp;nbsp;&lt;strong&gt;ionCube PHP Loader&lt;/strong&gt; подгружен. Ну и последний штрих...&amp;nbsp;Чтобы модуль был доступен веб-серверу &lt;strong&gt;Apache&lt;/strong&gt;, его необходимо будет перезапустить:&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width:100%&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&amp;nbsp;&lt;strong&gt;sh /usr/local/etc/rc.d/apache24 restart&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
 <comments>http://muff.kiev.ua/content/ioncube-ustanovka-ioncube-loader-na-freebsd#comments</comments>
 <pubDate>Sat, 02 Jul 2016 18:14:34 +0000</pubDate>
 <dc:creator>muff</dc:creator>
 <guid isPermaLink="false">570 at http://muff.kiev.ua</guid>
</item>
</channel>
</rss>
