<?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>Reborn &#187; web</title>
	<atom:link href="http://www.getoto.net/tag/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.getoto.net</link>
	<description>And from the ashes the Phoenix rose reborn</description>
	<lastBuildDate>Wed, 04 Jan 2012 22:47:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Backup with rsnapshot and ssh</title>
		<link>http://www.getoto.net/2010/10/22/backup-with-rsnapshot-and-ssh/</link>
		<comments>http://www.getoto.net/2010/10/22/backup-with-rsnapshot-and-ssh/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 14:51:17 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[rsnapshot]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[scp]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=181</guid>
		<description><![CDATA[Disclaimer: Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ. История 08.11.2007 &#8211; Първа версия Мотивация [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Disclaimer:</strong> Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.<br />
<strong>История</strong></p>
<ul>
<li>08.11.2007 &#8211; Първа версия</li>
</ul>
</blockquote>
<p><strong>Мотивация</strong><br />
По темата за архивирането на данни има няколко мнения и всички те са вярни в определена степен и светлина. Най често споменаваните са:</p>
<ul>
<li>Архивирайте често и редовно</li>
<li>Архивирайте когато е нужно и имайте свестен план за възстановяване</li>
<li>Real men don&#8217;t do backups! They let the internet mirror it!</li>
</ul>
<p>Е за радост или съжаление аз съм от хората които са по първият начин. Държа данните ми да са на сигурно място. И за целта трябва да имам стратегия. Днес ще ви разкажа как този сайт се архивира. Какво се използва и как е навързано.<br />
Трябва да се отбележи че системата не е от най-добрите но е достатъчно добра че да работи и да не ми създава проблеми.<br />
<strong>Цел</strong><br />
Целта ни днес е да реализираме напълно автоматизирана система за архивиране на данните. Допълнителни цели са скорост, минимален обем на прехвърляните данни, лесно възстановяване на данните от архива, сигурност.<br />
<strong>Съставките</strong><br />
Като цяло нищо странно или екзотично. Дебиан базирана система (и хостът и машината която архивира), <a href="http://rsnapshot.org/">rsnapshot</a>, ssh, rsync, diff, cp, du, perl.<br />
Основата на системата се върти около rsync, rsnapshot е обвивка която предлага доста възможности но всичко е постижимо с нормален rsync. Допълнително са ни необходими cron и известно количество познания за начина на работа и методите за сигурност около SSH.<br />
Най-голямо внимание трябва да се обърне на подсигуряването на системата, тоест настройката на ssh<br />
<strong>Настройване на rsnapshot</strong><br />
Това като цяло е най-лесната част от цялото занимание. Избрал съм rsnapshot поради факта че информацията се предава посредством rsync тоест само разликите, използва схема за ротиране на архивните копия и може би едно от най-важните неща &#8211; използва твърди връзки между непроменените файлове от различните стартове на архивирането и по този начин пести място.<br />
След инсталацията му трябва да се редактира конфигурационният му файл в който трябва да се дефинират времеви периоди (не са точно времеви, но за това след малко), точки за архивиране и някои команди.<br />
<strong>/etc/rsnapshot.conf</strong></p>
<pre class="brush: bash; title: ; notranslate"># дефинираме къде ще съхраняваме архивите
snapshot_root   /home/webbackup/
# дефиниране на някои команди които ще са ни необходими
cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
# за съжаление тук не могат да се добавят допълнителни опции
cmd_ssh         /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff
# дефинираме си период (по-точно име и брой архиви)
interval        whgeto  10
# малко логове и т.н.
verbose         2
loglevel        3
logfile         /var/log/rsnapshot.log
lockfile        /var/run/rsnapshot.pid
# някои от данните не искаме да ги синхронизираме
exclude log/*
exclude phptmp/*
# и най накрая точките които ще архивираме
backup  root @ getoto.net:/var/www/       getoto.net/web/
backup  root @ getoto.net:/var/lib/mysql/ getoto.net/sql/</pre>
<p>След като вече сме дефинирали какво и как да архивираме е време да си настроим периодична задачка която реално извършва архивирането. Това се постига чрез добавяне на запис в системата на cron.</p>
<pre class="brush: plain; title: ; notranslate">0 */6   * * *   webbackup    /usr/bin/rsnapshot whgeto</pre>
<p>Това се превежда като … на всеки 6 часа изпълнявай като потребител webbackup командата …<br />
С това настройката на rsnapshot завършва. Но сега следва да си подсигурим достъпа до машината и да го ограничим до използването само на строго определени команди.</p>
<p><strong>Настройване на SSH</strong><br />
След като системата ни е настроена да извършва регулярно архивиране на нашите данни е време да подсигурим достъпа. Искаме да получим следната ситуация. Вход без парола (с ключ), възможен само от определен адрес, който да може да изпълнява само строго определени команди.</p>
<p>Цялото това нещо се постига по следният начин:</p>
<ul>
<li>Генериране на ключ който ще се използва за операциите &#8211; самият ключ е без парола. Избираме ключа да не е особенно голям за да пестим време, а и освен това ще е бъде доста ограничен.
<pre class="brush: bash; title: ; notranslate">ssh-keygen -t rsa -b 1024 -f ~/keys/backup &amp;&amp; chmod 600 ~/keys/backup</pre>
<p>По този начин в папка ~/keys ще си генерираме РСА ключ с големина 1024 байта и ще променим правата му така че само ние да можем да го четем и променяме. Последната стъпка е много важна тъй като ако правата не са коректни ключа няма да бъде използван.</li>
<li>Добавяме публичната част от ключа в списъка с упълномощените ключове на машината която ще архивираме. Напълно достатъчно е публичната част от ключа да бъде копирана във файла /root/.ssh/authorized_keys</li>
<li>Влизаме един път със този ключ в целевият сървър (машина която ще архивираме). Целта на това е ръчно да приемем подписа на целевата машина като валиден. Ако тази стъпка се пропусне цялата операция по архивирането ще пропадне.</li>
<li>Редактираме файлът ~/.ssh/config &#8211; това е файл в който могат да се конфигурират множество аспекти на поведението на клиенат ssh на базата на това с кой хост се опитваме да се свържем. В моят случай файлът е със следното съдържание:
<pre class="brush: bash; title: ; notranslate"># За кой хост говорим
Host getoto.net
  # ще използваме само IPv4 (v6 не поддържаме)
  AddressFamily inet
  # ще използваме пакетен режим (неинтерактивен)
  BatchMode yes
  # ще използваме този файл за ключ
  IdentityFile /home/webbackup/keys/backup
  # и изискваме задължително версия 2
  Protocol 2</pre>
<p>По този начин принуждаваме ssh клиента да използва нашият ключ (специално създаден) когато се свързва към машината.<br />
С това приключва конфигурацията на хоста който извършва архивирането.</li>
<li>Редактиране на файлът /root/.ssh/authorized_keys &#8211; тук се извършва ограничаването на възможностите на нашият ключ. В този файл ще ограничим ключът ни за архивиране да може да се използва от едно място и да може да изпълнява само определени команди.<br />
<strong>/root/.ssh/authorized_keys</strong></p>
<pre class="brush: plain; title: ; notranslate">command=&quot;/root/.ssh/authprogs.pl&quot;,from=&quot;11.22.33.44&quot; ssh-rsa AAAAB3NzaC1 ...</pre>
<p>По този начин ограничаваме ключът да може да се използва само от машина с адрес 11.22.33.44 и единствената команда която може да изпълни (без да може да изпълни нещо друго) е /root/.ssh/authprogs.pl<br />
Програмата <a href="http://www.hackinglinuxexposed.com/tools/authprogs">authprogs.pl</a> е скрипт взет от <a href="http://www.hackinglinuxexposed.com/">http://www.hackinglinuxexposed.com/</a>. Неговата цел е да предостави възможност за изпълняване на няколко различни команди. Причината е че чрез възможностите на ssh можем да зададем само една задължителна команда.<br />
Самият срипт има нужда от прост конфигурационен файл</p>
<pre class="brush: plain; title: ; notranslate"># хост
[11.22.33.44]
# команди които може да изпълнява
# Backups
rsync --server --sender -logDtprR --numeric-ids . /var/www
rsync --server --sender -logDtprR --numeric-ids . /var/lib/mysql</pre>
<p>По този начин ефективно прескочихме ограниченията на ssh</li>
<li>Тестване &#8211; пуснете ръчно rsnapshot с интервала който сме си дефинирали. Ще повиси малко и в последствие ще имате вече архиви в точката която сте дефинирали като архивна.
<pre class="brush: bash; title: ; notranslate">garota:~# ls -l /home/webbackup/
drwxr-xr-x 3 1005 1005 4096 2007-11-08 12:00 whgeto.0
drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:39 whgeto.1
drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:07 whgeto.2
garota:~# ls -l /home/webbackup/whgeto.1
drwxr-xr-x 4 1005 1005 4096 2007-11-08 11:36 getoto.net
garota:~# ls -l /home/webbackup/whgeto.1/getoto.net/
drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:36 sql
drwxr-xr-x 3 1005 1005 4096 2007-11-08 11:10 web</pre>
</li>
</ul>
<p><strong>Заключение</strong><br />
Е надявам се това да ви е помогнало поне малко. Вече би трябвало да имате изградена система за напълно автоматизиран и подсигурен бекъп. Поне на мен ми върши добра работа.</p>
<p>Полезни Връзки</p>
<ul>
<li><a href="http://www.hackinglinuxexposed.com/tools/authprogs">authprogs.pl</a></li>
<li><a href="http://www.snailbook.com/faq/restricted-scp.auto.html">http://www.snailbook.com/faq/restricted-scp.auto.html</a></li>
<li><a href="http://www.hackinglinuxexposed.com/articles/20030115.html">http://www.hackinglinuxexposed.com/articles/20030115.html</a></li>
<li><a href="http://pkeck.myweb.uga.edu/ssh/">http://pkeck.myweb.uga.edu/ssh/</a></li>
<li><a href="http://sial.org/howto/openssh/">http://sial.org/howto/openssh/</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2010/10/22/backup-with-rsnapshot-and-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Perfect SOHO router &#8211; Part 5</title>
		<link>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/</link>
		<comments>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 17:59:19 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[Head]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[iproute]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ping]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[soho]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web swap]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=41</guid>
		<description><![CDATA[Винаги е полезно да знаем в какво състояние е нашият рутер и то да можем да достигнем до тази информация бързо.

Тук демонстрираме една много проста и елементарна система която дава полезна информация с един поглед.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Това е петата част от серия от статии в които ще обясня как да създадем перфектният SOHO рутер. Държа да отбележа че това е моята идея за рутер със всичките и предимства и недостатъци.</p>
<p>Серията се състои от следните статии:</p>
<ul>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-1/">Общи насоки, идеи, нужни услуги и размисли</a> &#8211; тук ще се постарая аргументирано да обоснова защо съм избрал този комплект от софтуер и услуги</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-2/">Инсталация на базовата система </a>- ще опиша методът по който ще инсталираме и минимизираме нашата система</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-3/">Конфигуриране на DNS и DHCP услугите</a> &#8211; тук ще опиша обосновано конфигурациите които смятам за оптимални</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/">Конфигуриране на рутирането</a> &#8211; като цяло тук е сърцето на нашият рутер. Ще предложа някои трикове за улесняване на живота, както и насоки към по-специфични задачи</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/">Конфигуриране на елементарна система за наблюдение и статистика</a></li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/">Разширяване възможностите на нашият рутер</a> &#8211; ще опиша някои дреболии които могат да направят живота ни много по лесен, удобен и приятен</li>
</ul>
</blockquote>
<p>В тази част ще изградим една много проста система за наблюдение и диагностика на нашият рутер.<br />
<strong>Защо</strong><br />
За да знаем какво се случва с нашият рутер. Винаги е полезно да знаем в какво състояние е нашият рутер и то да можем да достигнем до тази информация бързо.</p>
<p><strong>Какво ще има</strong><br />
Личното ми предложение за елементарна система е както следва:</p>
<ul>
<li>Web базирана &#8211; за лесен достъп от всякъде</li>
<li>Проверка на състоянието на интернет свързаността &#8211; за да може с един поглед да се каже дали имаме връзка и дали проблема е някъде при нашият доставчик</li>
<li>Проверка на състоянието на мрежовите карти &#8211; дали са включени, да не би кабелчето да е избягало и т.н.</li>
<li>Проверка на използването на паметта &#8211; да не би случайно да сме влезнали в swap зоната и харда да траши</li>
<li>Проверка броя активни сесии &#8211; за да видим до къде е стигнало използването</li>
<li>Трафик статистика с помощта на mrtg</li>
<li>Пълна системна информация от phpsysinfo</li>
</ul>
<p><strong>Скрипт за проверка на състоянието на интернет свързаността</strong><br />
Това е един много прост скрипт който ще се опита да направи няколко пинг-а до определен адрес който сме сигурни че е винаги на линия. Използваме ип адрес а не име за да избегнем проблема с пропаднал DNS.<br />
За да работи коректно този скрипт е необходимо да имаме <strong>ping, tail, cut, php</strong></p>
<pre class="brush: php; title: ; notranslate">&lt;?php
// simple checking of connectivity
// vvitkov
// 02.11.2006
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Connection check&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link REL=StyleSheet HREF=&quot;style.css&quot; TYPE=&quot;text/css&quot; MEDIA=screen&gt;
&lt;/link&gt;&lt;/head&gt;
&lt;body&gt;
&lt;?php include &quot;header.php&quot;; ?&gt;
&lt;center&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Checking Conection with
&lt;?php
$target=&quot;194.145.63.12&quot;;
if (isset($_REQUEST['t'])){
        $target=$_REQUEST['t'];
}
echo &quot;&lt;font color=#000000&gt;&quot; . $target . &quot;&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;&quot;;
$OK=&quot;&lt;div class=ok&gt;CONNECTION IS UP&lt;/div&gt;&quot;;
$NO=&quot;&lt;div class=no&gt;CONNECTION DOWN&lt;/div&gt;&quot;;

$status=exec(&quot;ping -q -c3 $target | tail -n 1 | cut -d' ' -f1&quot;);

if ($status == &quot;rtt&quot;) { echo $OK; } else { echo $NO; }
?&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div class=sub&gt;&lt;a href=&quot;?t=www.abv.bg&quot;&gt;Check with abv.bg&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;?t=www.google.com&quot;&gt;Check with Google&lt;/a&gt;&lt;/div&gt;

&lt;?php include &quot;footer.php&quot;; ?&gt;&lt;/center&gt;</pre>
<p>Самият скрипт изобщо не е красив а да не говорим и че не е много сигурен но върши работа. Ето примерен изглед на успешна и неуспешна проверка.<br />
<a href="http://www.getoto.net/wp-content/uploads/2009/12/pingcheck-ok.png"><img src="http://www.getoto.net/wp-content/uploads/2009/12/pingcheck-ok.png" alt="pingcheck-ok" title="pingcheck-ok" width="520" height="215" class="aligncenter size-full wp-image-42" /></a><br />
<a href="http://www.getoto.net/wp-content/uploads/2009/12/pingcheck-no.png"><img src="http://www.getoto.net/wp-content/uploads/2009/12/pingcheck-no.png" alt="pingcheck-no" title="pingcheck-no" width="499" height="221" class="aligncenter size-full wp-image-43" /></a><br />
както забелязвате ако подадем хост който не съществува за проверка ще ни върне отговор че нямаме интернет, което може да не е вярно. Поради тази причина освен проверка с ip са сложени два популярни сайта които се очаква че са винаги на линия.</p>
<p><strong>Скрипт за проверка на състоянието на мрежовите карти</strong><br />
Идеята на този скрипт е да установи дали имаме физическа свързаност. Не винаги е полезен но върши работа.<br />
За да работи скрипта имаме нужда от <strong>sudo, mii-tool</strong>.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
// simple checking of network cards
// vvitkov
// 02.11.2006
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;NIC check&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link REL=StyleSheet HREF=&quot;style.css&quot; TYPE=&quot;text/css&quot; MEDIA=screen&gt;
&lt;/link&gt;&lt;/head&gt;
&lt;body&gt;
&lt;?php include &quot;header.php&quot;; ?&gt;
&lt;center&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Checking Network Cards&lt;/h2&gt;&lt;br /&gt;
&lt;?php
$status=exec(&quot;sudo /sbin/mii-tool eth0 | md5sum | cut -d' ' -f1&quot;);
if ($status === '011d899f145c89793888771019335049'){
        echo &quot;&lt;div class=ok&gt;External network is UP&quot;;
} else {
        echo &quot;&lt;div class=no&gt;External network is DOWN&lt;br /&gt;Please check Cable (eth0)&lt;/div&gt;&quot;;
}
$status=exec(&quot;sudo /sbin/mii-tool eth1 | md5sum | cut -d' ' -f1&quot;);
if ($status === 'e413ff927a35f4df4c8bdecd70111902'){
        echo &quot;&lt;div class=ok&gt;Internal network is UP&lt;/div&gt;&quot;;
} else {
        echo &quot;&lt;div class=no&gt;Internal network is DOWN&lt;br /&gt;Please check Cable (eth1)&lt;/div&gt;&quot;;
}
?&gt;
&lt;/center&gt;

&lt;?php include &quot;footer.php&quot;; ?&gt;</pre>
<p>Проверката на картите не е универсална поради използваните md5 суми, но това може да се коригира особенно лесно. Напълно достатъчно е да се търси в изхода на командата <strong>mii-tool</strong> стринга <strong>link ok</strong>. За да работи този скрипт е необходимо потребителят от чието име вървъ нашият web сървър да има достъп до mii-tool. Това става посредством следният ред в <strong>/etc/sudoers</strong></p>
<pre class="brush: bash; title: ; notranslate">www-data ALL=(ALL) NOPASSWD: /sbin/mii-tool</pre>
<p><strong>Проверка на използването на паметта</strong><br />
Този скрипт е полезен за проверка на използваната памет. При рутери е особенно важно системата да не използва swap тъй като това краде процесорни цикли и като цяло затормозва машината. За да работи скрипта ни е необходима командата <strong>free</strong></p>
<pre class="brush: php; title: ; notranslate">&lt; ?php
// simple checking of memory utilisation
// vvitkov
// 02.11.2006
?&gt;
&lt; html &gt;
&lt;head&gt;
&lt;title&gt;Memory Usage&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link REL=StyleSheet HREF=&quot;style.css&quot; TYPE=&quot;text/css&quot; MEDIA=screen&gt;
&lt;/link&gt;&lt;/head&gt;
&lt; ?php include &quot;header.php&quot;; ?&gt;
&lt; body &gt;&lt;center&gt;&lt;br /&gt;&lt;h2&gt;Memory Usage&lt;/h2&gt;&lt;br /&gt;&lt;/center&gt;
&lt; ?php
$stat=explode(&quot; &quot;, shell_exec(&quot;free -m| head -2|tail -1|awk '{print $2\&quot; \&quot;$3\&quot; \&quot;$4}'&quot;));
$stat2=explode(&quot; &quot;, shell_exec(&quot;free -m| head -4|tail -1|awk '{print $2\&quot; \&quot;$3\&quot; \&quot;$4}'&quot;));
$tresh=30;
?&gt;
&lt;table border=0 align=center&gt;
        &lt;tr&gt;
                &lt;th&gt;Mem type&lt;/th&gt;
                &lt;th&gt;Used&lt;/th&gt;
                &lt;th&gt;free&lt;/th&gt;
                &lt;th&gt;Total&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;th&gt;RAM&lt;/th&gt;
                &lt;td&gt;&lt; ?php echo $stat[1]; ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt; ?php echo $stat[2]; ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt; ?php echo $stat[0]; ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;th&gt;SWAP&lt;/th&gt;
                &lt;td&gt;&lt; ?php
                        if ($stat2[1] &gt; $tresh) {
                                echo &quot;&lt;font color=red weight=bold&gt;$stat2[1]&lt;/font&gt;&quot; ;
                        } else {
                                echo $stat2[1];
                        }
                ?&gt;
                &lt;/td&gt;
                &lt;td&gt;&lt; ?php echo $stat2[2]; ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt; ?php echo $stat2[0]; ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;th&gt;TOTAL&lt;/th&gt;
                &lt;td&gt;&lt; ?php echo ($stat[1]+$stat2[1]); ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt; ?php echo ($stat[2]+$stat2[2]); ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt; ?php echo ($stat[0]+$stat2[0]); ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;td&gt;&amp;nbsp;&lt;/td&gt;
                &lt;th&gt;&lt; ?php
                        if ($stat2[1] &gt; $tresh) {
                                echo &quot;&lt;font color=red weight=bold&gt;^^^&lt;/font&gt;&quot; ;
                        } else {
                                echo &quot;&amp;nbsp&quot;;
                        }
                ?&gt;
                &lt;/th&gt;
                &lt;td&gt;&amp;nbsp;&lt;/td&gt;
                &lt;td&gt;&amp;nbsp;&lt;/td&gt;
        &lt;/tr&gt;
&lt;/table&gt;
&lt;div class=&quot;sub&quot;&gt;If there is a red number ... that is a problem&lt;/div&gt;
&lt; ?php include &quot;footer.php&quot;; ?&gt;</pre>
<p>Единствената променлива която трябва да се коригира е <strong>$tresh</strong>. Тя се използва за да извади предупреждение че използването на swap е нарастнало над някакво ниво. Възможно е да бъде нагласена на примерно 20% но смятам че е по удачно да бъде въведена на ръка.</p>
<p><strong>Проверка броя активни сесии</strong><br />
Ако има проблеми с отваряне на страници, това може да е индикация на изхабени сесии. Тъй като знаем че някои доставчици лимитират броя сесии, този инструмент може да бъде полезен. Трябва да се отбележи че числата които са отчетени не са строго меродавни, тъй като не се отчита състоянието на сесията а просто наличието и. Тоест ако сесията е в състояние <strong>CLOSE_WAIT</strong> въпреки че може да бъде оползотворена тя се включва в бройката.<br />
За да работи коректно скрипта са ни необходими <strong>sudo, netstat-nat</strong></p>
<pre class="brush: php; title: ; notranslate">&lt;?php
// simple checking of connectivity
// vvitkov
// 02.11.2006
?&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Connection statistics&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link REL=StyleSheet HREF=&quot;style.css&quot; TYPE=&quot;text/css&quot; MEDIA=screen&gt;
&lt;/link&gt;&lt;/head&gt;
&lt;?php include &quot;header.php&quot;; ?&gt;
&lt;body &gt;&lt;center&gt;&lt;br /&gt;&lt;h2&gt;Connection statistics&lt;/h2&gt;&lt;br /&gt;&lt;/center&gt;
&lt;table border=0 align=center&gt;
        &lt;tr&gt;
                &lt;th&gt;Proto&lt;/th&gt;
                &lt;th&gt;Clients&lt;/th&gt;
                &lt;th&gt;Ruter&lt;/th&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;th&gt;TCP&lt;/th&gt;
                &lt;td&gt;&lt;?php echo exec(&quot;sudo netstat-nat -n -S -p tcp | grep ESTABLISHED | wc -l&quot;); ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt;?php echo exec(&quot;sudo netstat-nat -n -L -p tcp | grep ESTABLISHED | wc -l&quot;); ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
                &lt;th&gt;UDP&lt;/th&gt;
                &lt;td&gt;&lt;?php echo exec(&quot;sudo netstat-nat -n -S -p udp | grep ESTABLISHED | wc -l&quot;); ?&gt;&lt;/td&gt;
                &lt;td&gt;&lt;?php echo exec(&quot;sudo netstat-nat -n -L -p udp | grep ESTABLISHED | wc -l&quot;); ?&gt;&lt;/td&gt;
        &lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;div class=sub&gt;Only active connections are visible&lt;/div&gt;
&lt;?php include &quot;footer.php&quot;; ?&gt;</pre>
<p><strong>Заключение</strong><br />
В тази статия не е показана настройка на mrtg и phpsysinfo, тъй като те са относително елементарни. С това приключва нашата елементарна система за наблюдение и статистика. Самата система е наистина доста проста но върши работа.<br />
Прилагам цялата система в архивиран вид. За да работи е необходимо да си настроите mrtg посредством <strong>cfgmaker и indexmaker</strong> от инсталацията на mrtg и phpsysinfo посредством пакетната система на дебиан.</p>
<p><a href='http://www.getoto.net/wp-content/uploads/2009/12/monitoring.tar.gz'>monitoring system</a></p>
<p>Трябва да се отбележи че системата има възможност да показва съобщения настроени от администратора в основният си изглед. Това се постига благодарение на файла header.php</p>
<p>Серията продължава в <a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/">The Perfect SOHO router &#8211; Part 6</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Perfect SOHO router &#8211; Part 1</title>
		<link>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-1/</link>
		<comments>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-1/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 16:04:22 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[soho]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ssh ssh]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=19</guid>
		<description><![CDATA[От известно време си мисля за тази серия от статии. Темата със SOHO рутерите е интересна от много гледни точки. От една страна това трябва да са евтини машини. От друга трябва да са достатъчно ефективни за да вършат работата. И може би последната гледна точка е че никъде няма описано подобно нещо. И вече наистина последно - просто ми е приятно да го напиша.

В серия от 6 статии ще опиша как точно това се случва. В тази първа статия има информация защо точно съм се захванал със това и някои общи основания]]></description>
			<content:encoded><![CDATA[<p>Това е първата част от серия от статии в които ще обясня как да създадем перфектният SOHO рутер. Държа да отбележа че това е моята идея за рутер със всичките и предимства и недостатъци.</p>
<p>Серията се състои от следните статии:</p>
<ul>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-1/">Общи насоки, идеи, нужни услуги и размисли</a> &#8211; тук ще се постарая аргументирано да обоснова защо съм избрал този комплект от софтуер и услуги</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-2/">Инсталация на базовата система</a> &#8211; ще опиша методът по който ще инсталираме и минимизираме нашата система</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-3/">Конфигуриране на DNS и DHCP услугите</a> &#8211; тук ще опиша обосновано конфигурациите които смятам за оптимални</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/">Конфигуриране на рутирането</a> &#8211; като цяло тук е сърцето на нашият рутер. Ще предложа някои трикове за улесняване на живота, както и насоки към по-специфични задачи</li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/">Конфигуриране на елементарна система за наблюдение и статистика</a></li>
<li><a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/">Разширяване възможностите на нашият рутер</a> &#8211; ще опиша някои дреболии които могат да направят живота ни много по лесен, удобен и приятен</li>
</ul>
<p>Е да започваме с първата част.<br />
<strong>Идеята</strong><br />
От известно време си мисля за тази серия от статии. Темата със SOHO рутерите е интересна от много гледни точки. От една страна това трябва да са евтини машини. От друга трябва да са достатъчно ефективни за да вършат работата. И може би последната гледна точка е че никъде няма описано подобно нещо. И вече наистина последно &#8211; просто ми е приятно да го напиша.</p>
<p><strong>Нужни услуги</strong><br />
Тук трябва да се вложи най много мисъл. Трябва да се определи точно какви услуги ще се изпълняват на нашият рутер. Абсолютният минимум е рутиране/маскиране и SSH. Реално това е напълно достатъчно но и леко неудобно. Моят минимум е следният:</p>
<ul>
<li>Рутиране/маскиране/НАТ &#8211; без него няма смисъл от рутер</li>
<li>SSH &#8211; за мениджмънт от конзола</li>
<li>Кеширащ DNS &#8211; за наша собствена фалшива зона, скорост и частична независимост от нашия доставчик</li>
<li>DHCP сървър който да ни настройва мрежата автоматично</li>
<li>Минималистична web базирана система за наблюдение, статистики и елементарни проверки</li>
</ul>
<p>Като цяло това е един добър комплект услуги които предоставят удобство на работа и изискват минимална поддръжка. Лично аз предпочитам допълнително да имам следните допълнителни услуги:</p>
<ul>
<li>Самба &#8211; за да укротя малко windows машините в мрежата. Предоставя MasterBrowser и WINS</li>
<li>NTP сървър &#8211; предоставя точно време</li>
<li>FTP сървър &#8211; за да мога отдалечено да си качвам дреболии</li>
</ul>
<p><strong>Размисли</strong><br />
Така вече сме избрали услугите, остана изборът на дистрибуция. Лично аз предпочитам дебиан и на него ще реализирам целият проект. Всеки е свободен да избере каквото иска, и най-вече това което му е удобно. Трябва от рано да се помисли за това как ще се проверява сигурността, кой ще има право на достъп до машината, дали ще се ползват квоти/ограничения във времето. Какъв тип маскиране ще се ползва и още дреболии. Повечето от тези въпроси изникват в процеса на работа, така че моля първо прочетете цялата серия и тогава започнете работа.</p>
<p><strong>Общи насоки</strong><br />
Това не е елементарен проект. Предполага се че имате прилична представа какво точно се опитвате да постигнете. Всяка грешка допусната по време на инсталацията може наистина да ви ухапе след време. Така че мислете навреме и по няколко пъти.</p>
<p>Серията продължава в <a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-2/">The Perfect SOHO router &#8211; Part 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

