<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блог Александра Руденко aka ras. &#187; Администрирование</title>
	<atom:link href="http://ras.pl.ua/category/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/feed/" rel="self" type="application/rss+xml" />
	<link>http://ras.pl.ua</link>
	<description>Заметки о себе, семье, городе, профессиональной деятельности...</description>
	<lastBuildDate>Fri, 30 Mar 2012 08:25:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Установка и настройка transmission-daemon в CentOS 6</title>
		<link>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos_6/</link>
		<comments>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos_6/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 14:30:35 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[transmission]]></category>
		<category><![CDATA[transmission-daemon]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=272</guid>
		<description><![CDATA[По мотивам прошлой статьи &#171;Установка и настройка transmission-daemon в CentOS 5&#187;, решил написать ещё одну статью. CentOS хоть и с большим опозданием от RedHat Enterprise Linux и Scientific Linux, но всё-таки появился, пришлось переустановить дистрибутив, и адаптировать уже работавший софт к новой версии дистрибутива. Transmission, как и раньше, в CentOS с дистрибутива не поставишь&#8230; Сборка [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">По мотивам прошлой статьи &laquo;<a href="/install_and_configure_transmission-daemon_in_centos">Установка и настройка transmission-daemon в CentOS 5</a>&raquo;, решил написать ещё одну статью. CentOS хоть и с большим опозданием от RedHat Enterprise Linux и Scientific Linux, но всё-таки появился, пришлось переустановить дистрибутив, и адаптировать уже работавший софт к новой версии дистрибутива. Transmission, как и раньше, в CentOS с дистрибутива не поставишь&#8230;<span id="more-272"></span></p>
<p><strong>Сборка</strong></p>
<p style="text-align: justify;">Собирать я решил в данном случае rpm-ки из srpm-ки Fedora 14. Процесс описывать не буду, приведу ссылки на оригинал и собранные пакеты для архитектуры x86_64:</p>
<ul>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-2.11-2.fc14.src.rpm">transmission-2.11-2.fc14.src.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-2.11-2.el6.x86_64.rpm">transmission-2.11-2.el6.x86_64.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-cli-2.11-2.el6.x86_64.rpm">transmission-cli-2.11-2.el6.x86_64.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-common-2.11-2.el6.x86_64.rpm">transmission-common-2.11-2.el6.x86_64.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-daemon-2.11-2.el6.x86_64.rpm">transmission-daemon-2.11-2.el6.x86_64.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-gtk-2.11-2.el6.x86_64.rpm">transmission-gtk-2.11-2.el6.x86_64.rpm</a></li>
<li><a href="/pub/linux/centos/6/x86_64/transmission/transmission-qt-2.11-2.el6.x86_64.rpm">transmission-qt-2.11-2.el6.x86_64.rpm</a></li>
</ul>
<p><strong>Установка</strong></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rpm <span style="color: #660033;">-i</span> http:<span style="color: #000000; font-weight: bold;">//</span>ras.pl.ua<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>centos<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6</span><span style="color: #000000; font-weight: bold;">/</span>x86_64<span style="color: #000000; font-weight: bold;">/</span>transmission<span style="color: #000000; font-weight: bold;">/</span>transmission-common-<span style="color: #000000;">2.11</span>-<span style="color: #000000;">2</span>.el6.x86_64.rpm http:<span style="color: #000000; font-weight: bold;">//</span>ras.pl.ua<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>centos<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">6</span><span style="color: #000000; font-weight: bold;">/</span>x86_64<span style="color: #000000; font-weight: bold;">/</span>transmission<span style="color: #000000; font-weight: bold;">/</span>transmission-daemon-<span style="color: #000000;">2.11</span>-<span style="color: #000000;">2</span>.el6.x86_64.rpm</div></div>
<p>Настройка web-интерфейса для httpd, файл <u>/etc/httpd/conf/httpd.conf</u>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Alias /transmission/web /usr/share/transmission/web<br />
RewriteEngine on<br />
RewriteRule /transmission[/]?$ /transmission/web [R=permanent]<br />
ProxyPass /transmission http://127.0.0.1:9091/transmission<br />
ProxyPassReverse /transmission http://127.0.0.1:9091/transmission<br />
&lt;Location /transmission&gt;<br />
&nbsp; Options None<br />
&nbsp; Order allow,deny<br />
&nbsp; Allow from 127.0.0.1<br />
&nbsp; &lt;IfModule expires_module&gt;<br />
&nbsp; &nbsp; ExpiresActive On<br />
&nbsp; &nbsp; ExpiresByType image/gif A43200<br />
&nbsp; &nbsp; ExpiresByType image/png A43200<br />
&nbsp; &nbsp; ExpiresByType application/javascript A43200<br />
&nbsp; &nbsp; ExpiresByType text/css A43200<br />
&nbsp; &lt;/IfModule&gt;<br />
&lt;/Location&gt;</div></div>
<p style="text-align: justify;">В &#171;Allow from&#187; укажите IP, с которого вы хотите получить доступ, в своём случае, я использовал &#171;Authtype Basic&#187;, т. е. захожу по паролю. Перезапуск httpd (если возникли ошибки, смотрим каких модулей не хватает, подправляем файл конфигурации):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">service httpd restart</div></div>
<p>Настройка параметров запуска, файл <u>/etc/sysconfig/transmission-daemon</u>:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">TRANSMISSION_HOME=&quot;/var/lib/transmission&quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
DAEMON_USER=&quot;root&quot; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
DAEMON_ARGS=&quot;--no-auth --allowed 127.0.0.1 --config-dir $TRANSMISSION_HOME/.config/transmission-daemon&quot;</div></div>
<p>Добавление в автозапуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">chkconfig transmission-daemon on</div></div>
<p>Запуск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">service transmission-daemon start</div></div>
<p>Если всё выполнено правильно, демон запущен и работает.</p>
<p><strong>Настройка</strong></p>
<p style="text-align: justify;">Теперь нужно настроить демон, основные настройки доступны с web-интерфейса. Нужно открыть в браузере <u>http://ваш-web-сервер/transmission</u>, слева внизу есть кнопка настроек, выбрать Preferences. Указать путь куда будут сохраняться файлы, номер порта и не забыть открыть его в фаерволле для входящих соединений. На второй вкладке указать ограничение скорости. Всё, можно работать, добавлять torrent-файлы, наблюдать процесс скачивания.</p>
<p style="text-align: justify;">Все настройки сохраняются в каталоге <u>/var/lib/transmission/.config/transmission-daemon</u>. Там же хранятся torrent-файлы и информация о текущих загрузках.</p>
<p><strong>Ссылки</strong></p>
<ul>
<li><a href="http://www.transmissionbt.com/" target="_blank">www.transmissionbt.com</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/install_and_configure_transmission-daemon_in_centos_6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Настройка шейпера HTB на офисном маршрутизаторе на базе Linux при помощи htb.init</title>
		<link>http://ras.pl.ua/howto_configure_htb_init_on_office_router/</link>
		<comments>http://ras.pl.ua/howto_configure_htb_init_on_office_router/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 10:01:51 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[HTB]]></category>
		<category><![CDATA[htb.init]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[tc]]></category>
		<category><![CDATA[шейпер]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=253</guid>
		<description><![CDATA[Решил написать небольшое HOWTO по настройке шейпера HTB на маршрутизаторе (роутере) на базе Linux при помощи скрипта htb.init. Задача следующая: есть офисная сеть, есть подключение к сети Интернет на определённой скорости, в рассмотренном случае это 20 мегабит вход и 5 мегабит исход, скорость нужно поделить равнозначно между офисными компьютерами, но в случае когда канал не [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Решил написать небольшое HOWTO по настройке шейпера <b>HTB</b> на маршрутизаторе (роутере) на базе <b>Linux</b> при помощи скрипта <b>htb.init</b>. Задача следующая: есть офисная сеть, есть подключение к сети Интернет на определённой скорости, в рассмотренном случае это 20 мегабит вход и 5 мегабит исход, скорость нужно поделить равнозначно между офисными компьютерами, но в случае когда канал не загружен &#8212; дать возможность работать на максимальной скорости. В данном HOWTO шейпиться будет не только входящий, но и исходящий трафик, причём подключение к Интернет производится по PPP, что накладывает некоторые нюансы на настройку.</p>
<p><span id="more-253"></span></p>
<p style="text-align: justify;">Настройка приведена на примере дистрибутива <b>CentOS</b> (RHEL, Fedora), для <b>Debian</b> (Ubuntu) будут тоже приведены пояснения, так как некоторые системные утилиты отличаются.</p>
<p style="text-align: justify;">Для начала нужно загрузить и настроить сам скрипт построения правил шейпера, даю пример не на оригинальный скрипт, а на модифицированный мной (исправлено несколько ошибок, добавлено удаление кэша при перезапуске шейпера, т. к. бывает в кэше остаются записи, которых уже нет в конфигурационных файлах, версия 0.8.4):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>sbin<br />
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>ras.pl.ua<span style="color: #000000; font-weight: bold;">/</span>pub<span style="color: #000000; font-weight: bold;">/</span>linux<span style="color: #000000; font-weight: bold;">/</span>htb.init<br />
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #660033;">-f</span> .<span style="color: #000000; font-weight: bold;">/</span>htb.init .<span style="color: #000000; font-weight: bold;">/</span>htb<br />
<span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> .<span style="color: #000000; font-weight: bold;">/</span>htb<br />
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-sf</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>htb <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>htb</div></div>
<p style="text-align: justify;">Скрипт загружен, сделан запускаемым, симлинк помещён куда нужно, теперь нужно включить его в автозагрузку, для CentOS (RHEL, Fedora):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">chkconfig htb on</div></div>
<p style="text-align: justify;">То же для Debian (Ubuntu):</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">update-rc.d htb start <span style="color: #000000;">20</span> <span style="color: #000000;">0</span> <span style="color: #000000;">1</span> <span style="color: #000000;">2</span> <span style="color: #000000;">3</span> <span style="color: #000000;">4</span> <span style="color: #000000;">5</span> .</div></div>
<p style="text-align: justify;">Далее нужно создать каталоги для файлов конфигурации шейпера:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>sysconfig<span style="color: #000000; font-weight: bold;">/</span>htb</div></div>
<p style="text-align: justify;">Теперь можно приступить непосредственно к настройке. Правила шейпера строятся на основе файлов, которые нужно создавать в каталоге <u>/etc/sysconfig/htb</u>, отсюда их будет читать htb.init и строить правила для утилиты <b>tc</b>. Напомню, что канал у нас 20/5 мегабит, примерно 10 компьютеров в сети, исходя из этого ниже будут приведены файлы конфигурации с пояснением что они описывают.</p>
<p style="text-align: justify;">Файл описания интерфейса, eth0 &#8212; интерфейс смотрящий в локальную сеть офиса. Адресация 192.168.0.1/24, маршрутизатор имеет IP 192.168.0.1, следующие за ним &#8212; компьютеры офиса. Указывается класс, которым будет шейпиться трафик, не попавший ни под одно правило шейпера.</p>
<p><u>/etc/sysconfig/htb/eth0</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DEFAULT=9</div></div>
<p style="text-align: justify;">Далее файл описания корневого класса интерфейса, указывается физическая скорость интерфейса, в данном случае это 100 мегабит.</p>
<p><u>/etc/sysconfig/htb/eth0-2.root</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=100Mbit</div></div>
<p style="text-align: justify;">Вначале необходимо нарезать скорость для трафика, исходящего с самого роутера, например если на нём установлен файл-сервер, можно дать скорость большую чем в Интернет, причём эта скорость не повлияет на скорость работы в сети Интернет. 100 &#8212; 20 мегабит, ну и 10 можно оставить на служебные пакеты и т. п., чтобы не образовалась планка (полная загрузка интерфейса), и работа оставалась комфортной, получается 70 мегабит. Скорость с файл-сервера можно тоже равномерно поделить между участниками сети, но в данном примере это опускается.</p>
<p><u>/etc/sysconfig/htb/eth0-2:4.from_router_to_network</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=70Mbit<br />
PRIO=4<br />
LEAF=sfq<br />
RULE=192.168.0.0/24,</div></div>
<p style="text-align: justify;">Теперь очередь описания класса трафика из сети Интернет. Один мегабит останется для трафика не попавшего в правила, 19 мегабит остаётся описывается. Тут приоритет указан больше чем в локальном трафике с роутера, чем он больше, тем обрабатывается позже.</p>
<p><u>/etc/sysconfig/htb/eth0-2:5.to_network</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=19Mbit<br />
PRIO=5</div></div>
<p style="text-align: justify;">Теперь непосредственно сами правила для компьютеров сети. Максимальная скорость на один компьютер 19 мегабит, гарантированная &#8212; один мегабит. Таких файлов нужно создать по кличеству компьютеров в сети, последнее число &#8212; это 1000 + последний октет IP-адреса. И в самом файле в RULE указан IP-адрес компьютера. Входящий трафик на сам роутер не шейпится, это можно сделать, но метод в данном примере не рассматривается.</p>
<p><u>/etc/sysconfig/htb/eth0-2:5:1002</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">CEIL=19Mbit<br />
RATE=1Mbit<br />
PRIO=5<br />
LEAF=sfq<br />
RULE=192.168.0.2</div></div>
<p style="text-align: justify;">Тот трафик, который не попал в предыдущие правила &#8212; шейпится на скорости 1 мегабит.</p>
<p><u>/etc/sysconfig/htb/eth0-2:9.default</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=1Mbit<br />
PRIO=5<br />
LEAF=sfq</div></div>
<p style="text-align: justify;">Теперь исходящий трафик. В принципе то же самое, интерфейс ppp0, скорость 5 мегабит, трафику не попавшему под правила даётся 128 килобит (последний файл), остальным от 512 килобит до 5 мегабит. Трафик с роутера также будет шейпиться.</p>
<p><u>/etc/sysconfig/htb/ppp0</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">DEFAULT=9</div></div>
<p><u>/etc/sysconfig/htb/ppp0-2.root</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=100Mbit</div></div>
<p><u>/etc/sysconfig/htb/ppp0-2:5.from_network</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=5Mbit<br />
PRIO=5</div></div>
<p style="text-align: justify;">Так как исходящий трафик у нас натится (SNAT, MASQUERADE) в один внешний IP-адрес, не получится строить правила на основе IP-адресов. Поэтому будут использованы метки, которые будут ставиться фаерволом (iptables), об этом ниже. Таких правил нужно создать по количеству компьютеров в сети, опять же последняя цифра это 1000 + последний октет IP-адреса, метка (MARK) имеет такое же значение.</p>
<p><u>/etc/sysconfig/htb/ppp0-2:5:1001</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">CEIL=5Mbit<br />
RATE=512Kbit<br />
PRIO=5<br />
LEAF=sfq<br />
MARK=1001</div></div>
<p><u>/etc/sysconfig/htb/ppp0-2:9.default</u></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">RATE=128Kbit<br />
PRIO=5<br />
LEAF=sfq</div></div>
<p style="text-align: justify;">Теперь о метках. В iptables нужно пометить исходящий трафик, делается это следующим правилом в таблице mangle:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">-A PREROUTING -s 192.168.0.1 -j MARK --set-mark 1001</div></div>
<p style="text-align: justify;">Для каждого компьютера &#8212; своё правило. В CentOS (RHEL, Fedora) правила фаерволла обычно находятся в файле <u>/etc/sysconfig/iptables</u>, после правки нужно применить изменения командой:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>iptables restart</div></div>
<p style="text-align: justify;">В Debian (Ubuntu) можно сделать так. Снять текущую конфигурацию в файл:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">iptables-save &gt; /etc/sysconfig/iptables</div></div>
<p style="text-align: justify;">Поправить и применить:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">iptables-restore &lt; /etc/sysconfig/iptables</div></div>
<p style="text-align: justify;">Данные команды работают и в CentOS (RHEL, Fedora), если нужны. Далее. Настройка окончена, теперь нужно проверить правильность нашей конфигурации:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>htb compile</div></div>
<p style="text-align: justify;">Если ошибок нет &#8212; будет видно что же построил скрипт htb.init для системы на основе файлов конфигурации. Теперь можно запустить шейпер:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>htb start</div></div>
<p style="text-align: justify;">Остался один нюанс. Соединение с Интернет в данном примере производится по PPP, в случае если используется непосредственное подключение &#8212; дальше можно не читать. Но интерфейс PPP (ppp0) может падать (переподключение, пропадание связи), при падении интерфейса, все правила шейпера на нём будут сброшены. Следующий скрипт будет проверять наличие PPP-интерфейса и наличие на нём правил, если правил не будет, он перезапустит htb.init.</p>
<p><u>/usr/local/sbin/htb_check</u></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/bash</span><br />
<br />
<span style="color: #666666; font-style: italic;">#################################################################################</span><br />
<span style="color: #666666; font-style: italic;">#</span><br />
<span style="color: #666666; font-style: italic;"># Проверка наличия правил шейпера на интерфейсе, перезапуск htb.init при</span><br />
<span style="color: #666666; font-style: italic;"># необходимости</span><br />
<span style="color: #666666; font-style: italic;">#</span><br />
<span style="color: #666666; font-style: italic;">#################################################################################</span><br />
<br />
<span style="color: #666666; font-style: italic;"># Проверяемый интерфейс</span><br />
<span style="color: #007800;">DEVICE</span>=<span style="color: #ff0000;">'ppp0'</span><br />
<br />
<span style="color: #666666; font-style: italic;"># Проверка наличия интерфейса</span><br />
<span style="color: #007800;">TEST_PPP</span>=<span style="color: #000000; font-weight: bold;">`/</span>sbin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">ip link</span> show dev <span style="color: #007800;">$DEVICE</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null<span style="color: #000000; font-weight: bold;">`</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$TEST_PPP</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #666666; font-style: italic;"># Проверка наличия правил шейпера на интерфейсе</span><br />
&nbsp; <span style="color: #007800;">TEST_HTB</span>=<span style="color: #000000; font-weight: bold;">`/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>tc class show dev <span style="color: #007800;">$DEVICE</span><span style="color: #000000; font-weight: bold;">`</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$TEST_HTB</span>&quot;</span> == <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;"># Если правил шейпера на интерфейсе нет - перезапуск htb.init</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>htb restart<br />
&nbsp; <span style="color: #000000; font-weight: bold;">fi</span><br />
<span style="color: #000000; font-weight: bold;">fi</span></div></div>
<p style="text-align: justify;">Файл нужно сделать запускаемым:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">chmod</span> <span style="color: #000000;">755</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>htb_check</div></div>
<p style="text-align: justify;">Запускаться он будет по cron, каждую минуту, для этого в файле /etc/crontab добавляются следующие строки:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;"># Проверка наличия правил шейпера на интерфейсе, перезапуск htb.init при</span><br />
<span style="color: #666666; font-style: italic;"># необходимости</span><br />
<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> root <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>htb_check <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null</div></div>
<p style="text-align: justify;">На этом всё, надеюсь кому-то данное HOWTO пригодится, предложения, пожелания и замечания готов обсудить в комментариях к статье.</p>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/howto_configure_htb_init_on_office_router/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Ограничение доступа при помощи mod_auth_mysql</title>
		<link>http://ras.pl.ua/mod_auth_mysql/</link>
		<comments>http://ras.pl.ua/mod_auth_mysql/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 12:06:01 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_auth_mysql]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=206</guid>
		<description><![CDATA[Если нужно ограничить доступ к определённому каталогу web-сайта по логину и паролю, причём эти данные нужно хранить в базе данных MySQL, можно использовать модуль web-сервера Apache mod_auth_mysql. В этой статье я покажу простой пример настройки данного модуля, но, я решил немного улучшить защиту, добавив дополнительно к логину и паролю ограничение доступа по IP-адресу, диапазону IP-адресов, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Если нужно ограничить доступ к определённому каталогу web-сайта по логину и паролю, причём эти данные нужно хранить в базе данных <b>MySQL</b>, можно использовать модуль web-сервера <b>Apache</b> <b>mod_auth_mysql</b>. В этой статье я покажу простой пример настройки данного модуля, но, я решил немного улучшить защиту, добавив дополнительно к логину и паролю ограничение доступа по IP-адресу, диапазону IP-адресов, а также будет осуществляться проверка на активность/заблокированность пользователя.<span id="more-206"></span></p>
<p><u>Создание таблицы пользователей, добавление функции:</u></p>
<p style="text-align: justify;">Для начала нужно создать базу данных ползователей (или использовать существующую, в примере используется база test). Я не буду подробно описывать работу с базой данных MySQL, думаю, те кому нужен данный модуль авторизации &#8212; способны изучить документацию к базе данных. Итак, создаём таблицу с пользователями, ввести в консоли базы MySQL (mysql test):</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">TABLE</span> accounts <span style="color: #66cc66;">&#40;</span><br />
&nbsp; login <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">16</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; password <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">64</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span><span style="color: #66cc66;">,</span><br />
&nbsp; active TINYINT<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">NOT</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">DEFAULT</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">,</span><br />
&nbsp; ip_range TEXT<span style="color: #66cc66;">,</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">PRIMARY</span> <span style="color: #993333; font-weight: bold;">KEY</span> <span style="color: #66cc66;">&#40;</span>login<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #66cc66;">&#41;</span>;</div></div>
<p style="text-align: justify;">Пароль будет храниться в зашифрованном виде. Я использовал функцию unix_md5_crypt() из модуля Crypt::PasswdMD5, язык программирования Perl. Структура таблицы простая: имя пользователя, пароль в зашифрованном виде, признак активности (1 или 0), неактивных аторизировать не будем, и ограничение по IP. Если поле ip_range будет пустым, то проверка IP-адреса не будет осуществляться. Ограничения по IP записываются в следующем формате: если ограничений несколько, они разделяются запятой (без пробелов), если нужно ограничить доступ с диапазона IP-адресов, то диапазон записывается через чёрточку (без пробелов). Пример: &#171;192.168.0.1,10.0.0.0-10.255.255.255,172.16.0.1&#8243;. Проверить валидность данного поля можно следующим регулярным выражением:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(-((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))?(,((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(-((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))?)*$</div></div>
<p style="text-align: justify;">Ограничения по IP осуществляются написанной мной хранимой функцией MySQL, ввести с консоли MySQL (mysql test):</p>
<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> ip_in_range;<br />
DELIMITER <span style="color: #66cc66;">//</span><br />
<span style="color: #993333; font-weight: bold;">CREATE</span> <span style="color: #993333; font-weight: bold;">FUNCTION</span> ip_in_range <span style="color: #66cc66;">&#40;</span>test_ip <span style="color: #993333; font-weight: bold;">VARCHAR</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">15</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span> ip_range TEXT<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">RETURNS</span> TINYINT<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #993333; font-weight: bold;">BEGIN</span><br />
&nbsp; <span style="color: #993333; font-weight: bold;">DECLARE</span> temp TEXT;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">DECLARE</span> coma <span style="color: #993333; font-weight: bold;">INT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">DECLARE</span> ip <span style="color: #993333; font-weight: bold;">BIGINT</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip_range <span style="color: #993333; font-weight: bold;">IS</span> <span style="color: #993333; font-weight: bold;">NULL</span> <span style="color: #993333; font-weight: bold;">OR</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip <span style="color: #66cc66;">=</span> INET_ATON<span style="color: #66cc66;">&#40;</span>test_ip<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; REPEAT<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> coma <span style="color: #66cc66;">=</span> LOCATE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">','</span><span style="color: #66cc66;">,</span> ip_range<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> coma <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> temp <span style="color: #66cc66;">=</span> ip_range;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ELSE</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> temp <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">,</span> coma <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> ip_range <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">RIGHT</span><span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">LENGTH</span><span style="color: #66cc66;">&#40;</span>ip_range<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> coma<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">SET</span> coma <span style="color: #66cc66;">=</span> LOCATE<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'-'</span><span style="color: #66cc66;">,</span> temp<span style="color: #66cc66;">&#41;</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> coma <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">0</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip <span style="color: #66cc66;">=</span> INET_ATON<span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">ELSE</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">IF</span> ip <span style="color: #66cc66;">&gt;=</span> INET_ATON<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">LEFT</span><span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">,</span> coma <span style="color: #66cc66;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AND</span> ip <span style="color: #66cc66;">&lt;=</span> INET_ATON<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">RIGHT</span><span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">,</span> <span style="color: #993333; font-weight: bold;">LENGTH</span><span style="color: #66cc66;">&#40;</span>temp<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">-</span> coma<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">THEN</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">1</span>;<br />
&nbsp; &nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; &nbsp; <span style="color: #993333; font-weight: bold;">END</span> <span style="color: #993333; font-weight: bold;">IF</span>;<br />
&nbsp; UNTIL ip_range <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">''</span> <span style="color: #993333; font-weight: bold;">END</span> REPEAT;<br />
&nbsp; <span style="color: #993333; font-weight: bold;">RETURN</span> <span style="color: #cc66cc;">0</span>;<br />
<span style="color: #993333; font-weight: bold;">END</span>;<br />
<span style="color: #66cc66;">//</span><br />
DELIMITER ;</div></div>
<p><u>Настройка web-сервера:</u></p>
<p style="text-align: justify;">Настраиваем httpd.conf, нужно добавить модуль и ограничить доступ к каталогу (в случае с тестируемой системой, Fedora 13, был установлен пакет mod_auth_mysql, и модуль автоматически прописался файлом конфигурации /etc/httpd/conf.d/auth_mysql.conf):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">LoadModule mysql_auth_module modules/mod_auth_mysql.so<br />
<br />
&lt;Directory &quot;/home/user/www&quot;&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; Options FollowSymLinks<br />
&nbsp; AllowOverride All<br />
&nbsp; AuthBasicAuthoritative Off<br />
&nbsp; AuthName &quot;Authentication&quot;<br />
&nbsp; AuthType Basic<br />
&nbsp; AuthMySQLEnable On<br />
&nbsp; AuthMySQLHost localhost<br />
&nbsp; AuthMySQLUser user<br />
&nbsp; AuthMySQLPassword password<br />
&nbsp; AuthMySQLDB test<br />
&nbsp; AuthMySQLUserTable accounts<br />
&nbsp; AuthMySQlNameField login<br />
&nbsp; AuthMySQLPasswordField password<br />
&nbsp; AuthMySQLUserCondition &quot;active AND ip_in_range('%a', ip_range)&quot;<br />
&nbsp; AuthMySQLPwEncryption crypt<br />
&nbsp; AuthUserFile /dev/null<br />
&nbsp; Require valid-user<br />
&lt;/Directory&gt;</div></div>
<p style="text-align: justify;">Тут нужно скорректировать базу данных, если нужно (используется test), ну и ввести нужные имя пользователя с паролем (используется login и password).</p>
<p><u>Заключение:</u></p>
<p style="text-align: justify;">Как видно из статьи, всё просто настраивается, даёт возможность гибко ограничивать доступ пользователей, изменяя данные в базе данных. Плюс мы получаем ограничение доступа блокированных пользователей, а так же получаем защиту от подбора паролей, открывая доступ только с определённых хостов.</p>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/mod_auth_mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Резервирование жёсткого диска при помощи dd поверх ssh</title>
		<link>http://ras.pl.ua/backup_with_dd_over_ssh/</link>
		<comments>http://ras.pl.ua/backup_with_dd_over_ssh/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 07:33:03 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[резервирование]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=195</guid>
		<description><![CDATA[Появилась задача &#8212; снять образ с диска ноутбука, залить его на другой компьютер, чтобы переставить систему на ноутбуке, провести определённые тесты, а затем полностью восстановить жёсткий диск ноутбука в состояние до тестов. Для проведения данной операции, была произведена загрузка на ноутбуке с CD-привода в Fedora Linux 13 rescue, настроена сеть, диски не монтировались. Компьютер, на [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Появилась задача &#8212; снять образ с диска ноутбука, залить его на другой компьютер, чтобы переставить систему на ноутбуке, провести определённые тесты, а затем полностью восстановить жёсткий диск ноутбука в состояние до тестов.<span id="more-195"></span></p>
<p style="text-align: justify;">Для проведения данной операции, была произведена загрузка на ноутбуке с CD-привода в Fedora Linux 13 rescue, настроена сеть, диски не монтировались. Компьютер, на который будет сбрасываться образ диска ноутбука находится в одной сети с ноутбуком, на нём установлен и настроен демон sshd.</p>
<p><u>Резервирование данных:</u></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda&quot;</span></div></div>
<p><u>Восстановление данных:</u></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
<p style="text-align: justify;">Здесь backup-host &#8212; компьютер, на который сохраняется образ, ras &#8212; имя пользователя, book/sda &#8212; каталог и название файла бэкапа, /dev/sda &#8212; устройство-жёсткий диск ноутбука. В моей ситуации был не очень быстрый ноутбук, а компьютер, на который осуществлялось резервирование, обладал объёмным жёстким диском. При резервировании можно применять сжатие, тогда получим меньший образ, меньше трафика передачи по сети, если диск или сеть будут узким местом, но возрастёт нагрузка на процессор резервируемой системы, соответственно увеличится время резервирования. Вариации на эту тему:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda.gz&quot;</span><br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda.gz&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">gzip</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">if</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd of=book/sda.bz2&quot;</span><br />
<span style="color: #c20cb9; font-weight: bold;">ssh</span> ras<span style="color: #000000; font-weight: bold;">@</span>backup-host <span style="color: #ff0000;">&quot;dd if=book/sda.bz2&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bzip2</span> <span style="color: #660033;">-d</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda</div></div>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/backup_with_dd_over_ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перевод дисков после инсталляции Proxmox VE в RAID1 (mirror)</title>
		<link>http://ras.pl.ua/proxmox_raid1_howto/</link>
		<comments>http://ras.pl.ua/proxmox_raid1_howto/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 12:25:40 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[proxmox]]></category>
		<category><![CDATA[proxmox ve]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[зеркало]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=184</guid>
		<description><![CDATA[В повседневной работе появилась привычка резервировать данные. Обязательно RAID 1 (зеркало), резервное копирование. После установки Proxmox VE в дефолтном режиме, но с двумя дисками &#8212; было обнаружено что система разметила и использует только один диск, что неприемлемо. Ниже приведёно краткое руководство по переводу разделов диска в режим RAID 1. Итак, приступим (данное руководство делалось для [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В повседневной работе появилась привычка резервировать данные. Обязательно RAID 1 (зеркало), резервное копирование. После установки <strong>Proxmox VE</strong> в дефолтном режиме, но с двумя дисками &#8212; было обнаружено что система разметила и использует только один диск, что неприемлемо. Ниже приведёно краткое руководство по переводу разделов диска в режим RAID 1.<span id="more-184"></span> Итак, приступим (данное руководство делалось для версии 1.5 со стандартным ядром).</p>
<p style="text-align: justify;">Установить <strong>Proxmox</strong> только на один первый диск (/dev/sda).</p>
<p style="text-align: justify;">Доустановить необходимые пакеты для работы с RAID, создания рамдиска с драйверами:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mdadm initramfs-tools</div></div>
<p style="text-align: justify;">Загрузить модуль raid1:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">modprobe raid1</div></div>
<p style="text-align: justify;">Разметить второй диск (/dev/sdb) примерно так:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp;Device Boot &nbsp; &nbsp; &nbsp;Start &nbsp; &nbsp; &nbsp; &nbsp; End &nbsp; &nbsp; &nbsp;Blocks &nbsp; Id &nbsp;System<br />
/dev/sdb1 &nbsp; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;63 &nbsp; &nbsp; &nbsp;506016 &nbsp; fd &nbsp;Linux raid autodetect<br />
/dev/sdb2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;64 &nbsp; &nbsp; &nbsp; 60801 &nbsp; 487877985 &nbsp; fd &nbsp;Linux raid autodetect</div></div>
<p style="text-align: justify;">Т. е. первый раздел под /boot &#8212; 512 Mb, остальное под второй раздел для LVM (данный раздел не должен быть меньше используемого на первом диске).</p>
<p style="text-align: justify;">Далее создаются RAID-разделы с использованием пока только второго диска:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mdadm <span style="color: #660033;">--create</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #660033;">--level</span>=<span style="color: #000000;">1</span> <span style="color: #660033;">--raid-devices</span>=<span style="color: #000000;">2</span> missing <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb1<br />
mdadm <span style="color: #660033;">--create</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1 <span style="color: #660033;">--level</span>=<span style="color: #000000;">1</span> <span style="color: #660033;">--raid-devices</span>=<span style="color: #000000;">2</span> missing <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb2<br />
mdadm <span style="color: #660033;">--detail</span> <span style="color: #660033;">--scan</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>mdadm<span style="color: #000000; font-weight: bold;">/</span>mdadm.conf</div></div>
<p style="text-align: justify;">Пересоздать initrd:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mkinitramfs <span style="color: #660033;">-o</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>initrd.img-<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uname</span> -r<span style="color: #000000; font-weight: bold;">`</span>-raid1 <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>mapper<span style="color: #000000; font-weight: bold;">/</span>pve-root</div></div>
<p style="text-align: justify;">Отредактировать GRUB, чтобы загрузка производилась с новым initrd:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">title &nbsp;Proxmox Virtual Environment, kernel 2.6.18-2-pve on RAID1<br />
root &nbsp; (hd0,0)<br />
kernel /vmlinuz-2.6.18-2-pve root=/dev/mapper/pve-root ro<br />
initrd /initrd.img-2.6.18-2-pve-raid1</div></div>
<p style="text-align: justify;">Теперь нужно создать LVM-раздел на втором диске, добавить его в группу pve, переместить данные с LVM-раздела первого диска, на RAID-LVM-раздел второго диска, убрать из LVM первый диск:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">pvcreate <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
vgextend pve <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
pvmove <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1<br />
vgreduce pve <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2</div></div>
<p style="text-align: justify;">Теперь нужно подготовить RAID-раздел второго диска, скопировать на него /boot:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mkfs.ext3 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-ax</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/*</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0<br />
<span style="color: #c20cb9; font-weight: bold;">rmdir</span> <span style="color: #000000; font-weight: bold;">/</span>mnt<span style="color: #000000; font-weight: bold;">/</span>md0</div></div>
<p style="text-align: justify;">Исправить /etc/fstab, поменять запись о /boot так, чтобы она указывала на RAID-раздел:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/dev/md0 /boot ext3 defaults 0 1</div></div>
<p style="text-align: justify;">Можно перемонтировать /boot:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">umount</span> <span style="color: #000000; font-weight: bold;">/</span>boot<br />
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #000000; font-weight: bold;">/</span>boot</div></div>
<p style="text-align: justify;">Переразметить первый диск в соответствии со вторым (предварительно нужно удалить все разделы с /dev/sda):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sfdisk -d /dev/sdb | sfdisk /dev/sda</div></div>
<p style="text-align: justify;">Теперь можно добавлять в RAID-массивы разделы первого диска:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mdadm <span style="color: #660033;">--add</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md0 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda1<br />
mdadm <span style="color: #660033;">--add</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1 <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda2</div></div>
<p style="text-align: justify;">Нужно подождать пока RAID синхронизируется, контролировать процесс можно при помощи такой команды:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">watch</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span> <span style="color: #ff0000;">&quot;cat /proc/mdstat&quot;</span></div></div>
<p style="text-align: justify;">Теперь нужно переинсталировать загрузчик (GRUB) на обоих дисках:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">grub<br />
&gt; find /grub/stage1<br />
find /grub/stage1<br />
(hd0,0)<br />
(hd1,0)<br />
&gt; root (hd0,0)<br />
&gt; setup (hd0)<br />
&gt; root (hd1,0)<br />
&gt; setup (hd1)<br />
&gt; quit</div></div>
<p style="text-align: justify;">Всё, система работает на RAID1 (зеркале).</p>
<p><strong>Ссылки:</strong></p>
<ul>
<li><a href="http://pve.proxmox.com/wiki/Downloads" target="_blank">pve.proxmox.com/wiki/Downloads</a> &#8212; сайт загрузки Proxmox VE</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/proxmox_raid1_howto/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Перевод серверов с KOI8-R на UTF-8</title>
		<link>http://ras.pl.ua/koi8-r_to_utf-8/</link>
		<comments>http://ras.pl.ua/koi8-r_to_utf-8/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 08:11:33 +0000</pubDate>
		<dc:creator>ras</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[iconv]]></category>
		<category><![CDATA[KOI8-R]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[перекодировка]]></category>

		<guid isPermaLink="false">http://ras.pl.ua/?p=135</guid>
		<description><![CDATA[Лучше поздно чем никогда, решил перевести пару серверов на UTF-8, в связи с чем возникла проблема перекодировки русских имён файлов и текстовых файлов. Решил поделиться скриптами. Итак, для перекодировки имён файлов с KOI8-R в UTF-8, вот такой скрипт, который перекодирует файлы в текущем каталоге. convert_filenames_from_koi8-r_to_utf-8.sh: #!/bin/bash ls -1 &#124; while read name ; do newname=`echo [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Лучше поздно чем никогда, решил перевести пару серверов на UTF-8, в связи с чем возникла проблема перекодировки русских имён файлов и текстовых файлов. Решил поделиться скриптами. Итак, для перекодировки имён файлов с KOI8-R в UTF-8, вот такой скрипт, который перекодирует файлы в текущем каталоге.<span id="more-135"></span></p>
<p><span style="text-decoration: underline;">convert_filenames_from_koi8-r_to_utf-8.sh:</span></p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">#!/bin/bash</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #c20cb9; font-weight: bold;">read</span> name ; <span style="color: #000000; font-weight: bold;">do</span><br />
<span style="color: #007800;">newname</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$name</span> <span style="color: #000000; font-weight: bold;">|</span> iconv <span style="color: #660033;">-f</span> KOI8-R <span style="color: #660033;">-t</span> UTF-<span style="color: #000000;">8</span><span style="color: #000000; font-weight: bold;">`</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;<span style="color: #007800;">$newname</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> ; <span style="color: #000000; font-weight: bold;">then</span><br />
&nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span> =&gt; <span style="color: #007800;">$newname</span>&quot;</span><br />
&nbsp; <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$name</span>&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$newname</span>&quot;</span><br />
<span style="color: #000000; font-weight: bold;">fi</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<p style="text-align: justify;">Для перекодировки файлов решено было расширить меню Midnight Commander-а (mc) соответствующим пунктом. Т. е. выбираются файлы, которые нужно перекодировать, нажимается кнопка F2, выбирается последний пункт. Для внесения изменений в меню Midnight Commander-а, необходимо добавить в конец файла <span style="text-decoration: underline;">/etc/mc/mc.menu</span> следующие строки:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">= t r<br />
+ ! t t<br />
i       Convert from KOI8-R to UTF-8 current file<br />
&nbsp; &nbsp; &nbsp; &nbsp; cp %f %f.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; iconv -f KOI8-R -t UTF-8 &lt; %f.KOI8-R &gt; %f<br />
&nbsp; &nbsp; &nbsp; &nbsp; rm -f %f.KOI8-R<br />
<br />
+ t t<br />
I       Convert from KOI8-R to UTF-8 tagged files<br />
&nbsp; &nbsp; &nbsp; &nbsp; for i in %t<br />
&nbsp; &nbsp; &nbsp; &nbsp; do<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cp $i $i.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iconv -f KOI8-R -t UTF-8 &lt; $i.KOI8-R &gt; $i<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rm -f $i.KOI8-R<br />
&nbsp; &nbsp; &nbsp; &nbsp; done</div></div>
]]></content:encoded>
			<wfw:commentRss>http://ras.pl.ua/koi8-r_to_utf-8/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

