<?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</title>
	<atom:link href="http://www.getoto.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.getoto.net</link>
	<description>And from the ashes the Phoenix rose reborn</description>
	<lastBuildDate>Sat, 09 Jan 2010 13:44:39 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ревю на QNAP TS-219P NAS</title>
		<link>http://www.getoto.net/2010/01/09/review-na-qnap-ts-219p-nas/</link>
		<comments>http://www.getoto.net/2010/01/09/review-na-qnap-ts-219p-nas/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 13:44:39 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[hardware]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[Статии]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[qnap]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[TS-219P]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=89</guid>
		<description><![CDATA[TS-219 Pro е високо производителен NAS сървър поддържащ до 2 SATA I/II Диска с общ капацитет до 4TB. Днес разглежданият NAS сървър е един от най-добрите в своят клас. Характеризира се най-пълно с изречението „Многофункционално мрежово устройство за съхранение на данни в малък офис или у дома и още нещо.“]]></description>
			<content:encoded><![CDATA[<a href="http://www.getoto.net/2010/01/09/review-na-qnap-ts-219p-nas/" title="Ревю на QNAP TS-219P NAS"><img src="http://www.getoto.net/wp-content/uploads/2010/01/product-150x150.jpg" alt="QNAP TS-219P" class="feed-image" /></a><p>QNAP&#8217;s TS-219 Pro е високо производителен NAS сървър поддържащ до 2 SATA I/II Диска с общ капацитет до 4TB. Днес разглежданият NAS сървър е един от най-добрите в своят клас. Характеризира се най-пълно с изречението „<em>Многофункционално мрежово устройство за съхранение на данни в малък офис или у дома и още нещо.</em>.“</p>
<h1>Какво ще разглеждаме днес</h1>
<div id="attachment_90" class="wp-caption alignnone" style="width: 240px"><a href="http://www.getoto.net/wp-content/uploads/2010/01/product.jpg"><img class="size-medium wp-image-90" title="QNAP TS-219P" src="http://www.getoto.net/wp-content/uploads/2010/01/product-230x300.jpg" alt="QNAP TS-219P" width="230" height="300" /></a><p class="wp-caption-text">QNAP TS-219P</p></div>
<p><strong>High Performance 2-Bay Turbo NAS Server</strong><br />
<strong>Model: TS-219 Pro</strong></p>
<h1><strong>Хардуерни характеристики</strong></h1>
<p>Всяко едно устройство първично се характеризира с вложените в него компоненти и качество на изработката.<br />
С удоволствие мога да кажа, че QNAP са свършили страхотна работа. Не само изработката на устройството е превъзходна но и вложените компоненти са предостатъчни за продължителна и надеждна работа.</p>
<ul>
<li><strong>CPU:</strong> Marvell 1.2 Ghz</li>
<li><strong>RAM:</strong> 512MB</li>
<li><strong>FLASH:</strong> 16MB</li>
<li><strong>HDD:</strong> 2 SATA I/II Slots for 2,5/3,5 inch disks</li>
<li><strong>LAN:</strong> 1 x 1Gbit LAN Port</li>
<li><strong>External ports:</strong> Power, 3 x USB 2.0, 2 x eSata</li>
<li><strong>Form Factor:</strong> Small Tower</li>
<li><strong>Size:</strong> 150(H) x 102 (W) x 216(D) mm</li>
</ul>
<p>Прави много добро впечатление че кутията е изцяло изработена от много солидна ламарина с много приятен за окото кафяв оттенък. Единственият компонент по кутията който не е метален, е пластмасовият преден капак покриващ изведените контролни бутони и индикатори за състоянието на устройството. Самото устройство изглежда солидно и здраво но въпреки това е по-леко от очакваното, имайки предвид изработката му. В самото устройство има единична силно интегрирана платка със SOC елемент, RAM чипове, които за съжаление са запоени към платката и не подлежат на подмяна или разширяване, дъщерна карта към която се закачат твърдите дискове (абсолютно безпроблемно) и малък индикаторен и контролен панел.</p>
<h1>Софтуерни особенности</h1>
<p>Прави добро впечатление как производителите от QNAP съвсем спокойно обявяват че устройството им работи благодарение на GNU/Linux система и в официалната си документация са включили GPL V3.0 лиценза в пълният му текст. За незапознатите процесорът на Marvell е базиран на ARM V7. Друг приятен момент в запознаването с устройството е че от самото начало ssh достъпа до него е разрешен. Потребителският инерфейс чрез който може да се управлява устройството е доста красив, функционален изграден в голяма част със типичните за web 2.0 инструменти. Базиран е на HTML, AJAX, библиотеките jquery и scriptalicious.<br />
Начините за употреба на устройстовото са почти безгранични. Имайки предвид че това реално е мрежов сървър за съхранение на данни в него можем да намерим всички очаквани услуги:</p>
<ul>
<li>HTTP</li>
<li>FTP включително със TLS и FXP (сваляне 	от самият FTP сървър)</li>
<li>SMB или по-известно като Microsoft Networking</li>
<li>AFP изестен като Apple File Protocol</li>
<li>NFS който е дефакто стандарт в Unix/Linux/BSD среда</li>
</ul>
<p>Допълнително за да се улесни живота на потребителите (или да се утежни живота на администраторите, в зависимост от интерпретацията) има налични няколко допълнителни приложения и възможности:</p>
<ul>
<li>Download Station – комбинация от битторент клиент и система за сваляне на файлове</li>
<li>Multimedia Station – за излъчване на съхранената музика/филми към съвместими 	плеъри</li>
<li>iTunes сървър с поддръжка на плейлисти</li>
<li>Web File Manager – за по лесно качване/сваляне на файлове</li>
<li>Surveillance station – дава възможност за управление и архивиране на до 2 IP базирани видеокамери</li>
<li>WEB сървър – в допълнение на стандартният малък сървър необходим за показване на потребителският интерфейс чрез който могат да се сервират файлове и приложения.</li>
<li>MySQL сървър</li>
<li>Пакетен мениджър – чрез него могат да се инсталират не малък брой приложения включително популярният сред хардуерните среди пакетен мениджър ipkg.</li>
</ul>
<h1>Първична инсталация</h1>
<p>За голямо неудоволствие на потребителите на операционни системи различни от Microsoft Winodows или Mac QNAP не предлагат инструменти за първично кофигуриране или управление. Въпреки това рааботата с устройството е много лесна и приятна. Един труден момент е намирането на ип адреса на устройството ако не използвате някоя от споменатите по горе две операционни системи.<br />
При първото си включване TS-219P ако в мрежата ви има наличен DHCP сървър той си взема автоматично адрес. При обратната ситуация автоматично си настройва така нареченият Link Local address (169.254.100.100). След свързване с горепосоченият адрес се вижда следното:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-01.png"><img class="alignnone size-medium wp-image-95" title="ts-219p-screenshot-01" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-01-300x219.png" alt="" width="300" height="219" /></a><br />
с което ни подканва да инициализираме новото ни устройство и естествено ни информира че всичката информация на диска ще бъде изтрита.<br />
Следва първично инициализиране на диска при което се установяват необходимите за работа дялове:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-02.png"><img class="alignnone size-medium wp-image-97" title="ts-219p-screenshot-02" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-02-300x219.png" alt="" width="300" height="219" /></a><br />
Прави добро впечатление че в процеса на първична инсталация инженерите от QNAP са решили да наложат задължителен ъпгрейд на наличният фирмуеър движещ устройството. За съжаление се приема всеки валиден имидж на операционната система<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-03.png"><img class="alignnone size-medium wp-image-98" title="ts-219p-screenshot-03" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-03-300x219.png" alt="" width="300" height="219" /></a><br />
След обновяването на софтуера следва доста симпатичен магьосник за началните настройки.<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-04.png"><img class="alignnone size-medium wp-image-99" title="ts-219p-screenshot-04" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-04-300x219.png" alt="" width="300" height="219" /></a><br />
След въвеждане на очакваните настройки: име на устройството, администраторска парола, IP конфигурация, синхронизция на времето, избор на услугите които да бъдат активирани и избиране на дисковата конфигурация следва екран обобщаващ направените избори и очакващ потвърждения:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-05.png"><img class="alignnone size-medium wp-image-100" title="ts-219p-screenshot-05" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-05-300x219.png" alt="" width="300" height="219" /></a><br />
След прилагането на избраните настройки и инициализиране на дисковете NAS устройството се рестартира и пренасочва към административният интерфейс:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-06.png"><img class="alignnone size-medium wp-image-101" title="ts-219p-screenshot-06" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-06-300x219.png" alt="" width="300" height="219" /></a><br />
Освен показаният по горе интерфейс в стил Cover Flow има и вариант в който просто иконите са подредени в един ред.</p>
<h1>Административен интерфейс</h1>
<p>При опит за свързване с IP адреса на устройството (ако не е активиран web сървърът) потребителят е пренасочен към административният интерфейс на порт 8080 където могат да бъдат използвани различните активирани приложения и административният интерфейс. За влизане в системата се поддържа и SSL криптиране на връзката между администратора и NAS устройството.<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-07.png"><img class="alignnone size-medium wp-image-102" title="ts-219p-screenshot-07" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-07-300x219.png" alt="" width="300" height="219" /></a><br />
При въвеждане на административен потребител ни се показва административният интерфейс в който ни се предоставят на пръв поглед някои често използвани задачи:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-08.png"><img class="alignnone size-medium wp-image-103" title="ts-219p-screenshot-08" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-08-300x219.png" alt="" width="300" height="219" /></a><br />
В дървовидната структура много добре са подредени всички необходими задачи с ясно изразени икони и удобства. Малък недостатък който се забелязва при работа с устройството е кеширането на данните особенно при операции свързани с тотално преконфигуриране на дисковата конфигурация. Това води до пълно изтриване на данните но поради кеширането част от етикетите и предишните конфигурации остават активни.</p>
<h1>Интересни елементи на устройството</h1>
<p>Въпреки че TS-219P се предлага като NAS сървър то има далеч повече функционалност от очакваната. Както споменахме в предните параграфи, има голям набор от приложения и услуги. Сред тях изпъкват наличният DHCP сървър и възможността за настройване на jumbo frames:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-09.png"><img class="alignnone size-medium wp-image-105" title="ts-219p-screenshot-09" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-09-300x219.png" alt="" width="300" height="219" /></a><br />
Системата за хардуерен мониторинг:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-10.png"><img class="alignnone size-medium wp-image-106" title="ts-219p-screenshot-10" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-10-300x219.png" alt="" width="300" height="219" /></a><br />
Базовата защита от мрежови атаки изнесена в удобен интерфейс:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-11.png"><img class="alignnone size-medium wp-image-107" title="ts-219p-screenshot-11" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-11-300x219.png" alt="" width="300" height="219" /></a><br />
Вариантите за известяване (e-mail, sms):<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-12.png"><img class="alignnone size-medium wp-image-108" title="ts-219p-screenshot-12" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-12-300x219.png" alt="" width="300" height="219" /></a><br />
Доста разочароващо е липсата на възможноста за известяване и управление посредством SNMP, но това не е задължително за всеки. Всъщност това е необходимо за по-големи организации които не са в целевият сегмент на устройството.<br />
Друга забележителна възможност за устройство от такъв клас е възможността за създаване и управление на iscsi target дялове:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-13.png"><img class="alignnone size-medium wp-image-109" title="ts-219p-screenshot-13" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-13-300x219.png" alt="" width="300" height="219" /></a><br />
В тази функционалност е интересно да се отпележи възможноста за тънко провизиране на дяловете предназначени за iscsi target. Посредством тази възможност в първият момент не се заема цялото място което сме решили да отделим за конкретният случай, което от своя страна позволява създаването на повече дялове които при нарастване запълват наличното място. При подобна ситуация е възможно да се извърши онлайн разширяване на дисковото пространство.<br />
Също така интересни са и възможностите за онлайн миграция и разширяване на наличното пространство. Системата автоматично определя възможните действия над избраните дялове/дискове и предоставя само тези възможности:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-14.png"><img class="alignnone size-medium wp-image-110" title="ts-219p-screenshot-14" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-14-300x219.png" alt="" width="300" height="219" /></a><br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-15.png"><img class="alignnone size-medium wp-image-111" title="ts-219p-screenshot-15" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-15-300x219.png" alt="" width="300" height="219" /></a><br />
Предлагат се доста възможности за споделяне на данните в зависимост от избраният протокол, включително присъединяване на устройството към активна директория, частично премахване на блокирането на файлове при достъп, правата на различните потребители/групи и адреси от които се опитва достъп до ресурсите на системата.<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-16.png"><img class="alignnone size-medium wp-image-112" title="ts-219p-screenshot-16" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-16-300x219.png" alt="" width="300" height="219" /></a><br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-17.png"><img class="alignnone size-medium wp-image-113" title="ts-219p-screenshot-17" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-17-300x219.png" alt="" width="300" height="219" /></a><br />
Както е видно от представената по-долу картинка освен че на устройството има инсталиран пълнофункционален web сървър също така има инсталирано PHP и възможността за пълна редакция на самата конфигурация.<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-18.png"><img class="alignnone size-medium wp-image-114" title="ts-219p-screenshot-18" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-18-300x219.png" alt="" width="300" height="219" /></a><br />
Наличните модули са напълно достатъчни за пълноценна работа на да речем Joomla.<br />
Последният акцент от наличният софтуер е Download Station системата:<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-19.png"><img class="alignnone size-medium wp-image-115" title="ts-219p-screenshot-19" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-screenshot-19-300x219.png" alt="" width="300" height="219" /></a><br />
Той предоставя в удобен интерфейс за сваляне както на торент файлове така и на файлове разположени върху http/ftp сървъри.</p>
<h1>Тестове</h1>
<p>С цел пълно разбиране на възможностите на устройството го подложихме на серия от тестове, вариращи от прости тестове за монтиране на споделените устройства, скорост на трансфер, работа с малки файлове и синтетични стандартни тестове за оценка на NAS устройства.</p>
<p>Използваните конфигурации в тестовете са следните:</p>
<ul>
<li><strong>Тествано устройство:</strong>
<ul>
<li><strong>Устройство:</strong> TS-219P</li>
<li><strong>Дискове:</strong> 2 x 250 Gb 2,5 inch Hitachi</li>
</ul>
</li>
<li><strong>Тестова платформа:</strong>
<ul>
<li><strong>CPU:</strong> Intel Core2Duo P8400</li>
<li><strong>RAM:</strong> 4GB</li>
<li><strong>Video:</strong> ATI Radeon HD3450</li>
<li><strong>Мрежова карта</strong>: 1Gbit Broadcom Tigon 3</li>
<li><strong>OS:</strong> Debian Lenny</li>
</ul>
</li>
<li><strong>Конфигурация на тестовата среда:</strong>
<ul>
<li><strong>Мрежа:</strong> директна връзка между тестваното устройство и тестовата платформа, работеща със скорост от 1Gbit/s</li>
<li><strong>TS-219P:</strong> всички услуги освен NFS споделяне на файлове и административният интерфейс бяха изключени</li>
<li><strong>Тестова  платформа:</strong> текстова среда със изключени всички услуги освен необходимите за монтиране на NFS споделена папка</li>
<li><strong>Монтиране на споделената папка:</strong> <strong>mount -o noatime,intr,hard,rsize=65535,wsize=65535,noacl,nolock,ac 192.168.10.148:/share/MD0_DATA/review /home/nas</strong></li>
<li><strong>Потребители:</strong> Единствен административен потребител както на устройството така и на тестовата платформа</li>
<li>Единствена споделена папка на тестваното устройство с пълен достъп за всички до нея.</li>
</ul>
</li>
<li><strong>Тестови процедури:</strong>
<ul>
<li>Всеки от тестовете бе изпълнен 5 пъти с рестартиране на NAS системата и тестовата платформа с изчакване от 1 час след стартирането на системите и усредняване на резултатите.</li>
<li><strong>Тест 1:</strong> Копиране на 2 GB файл със случайни данни</li>
<li><strong>Тест 2:</strong> Копиране на 24 GB видео материали размер от 50 MB до 900 MB</li>
<li><strong>Тест 3:</strong> Копиране на 10 GB офис файлове със среден размер от 1MB</li>
<li><strong>Тест 4:</strong> IoZone тестове</li>
</ul>
</li>
</ul>
<h1>Резултати</h1>
<p>При Тест 1 с копиране на единичен голям файл се наблюдават скорости на трансфер от 37 до 45 MB/s даващ ни среден резултат от 46 s за трансфера.<br />
При Тест 2 поради копирането на по голям брой файлове с относително средни размери се наблюдават скорости от 36 до 42 MB/s даващ усреднен резултат от 605 s за трансфера<br />
При Тест 3 поради големият брой малки файлове (общ брой 14000) се наблюдава деградиране на производителността на трансфера. Наблюдаваните скорости са от 28 до 33 MB/s даващ усреднен времеви разултат от 311 s.<br />
При Тест 4 се срещат няколко странни резлутата които в началото бяха отдадени на временни проблеми но в последствие се оказва че са сериозни и реални проблеми при определени размери на блоковете при трансфер. Пълните данни са налични при заявка. По долу може да откриете графиките при размер на блока за трансфер от 4kb<br />
<a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-iozone-01.png"><img class="alignnone size-medium wp-image-117" title="ts-219p-iozone-01" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-iozone-01-300x205.png" alt="" width="300" height="205" /></a><br />
Файловият размер е в килобайти. Както се забелязва има доста странно пропадане в скоростта при размер на файла от 8 MB. Друг интересен момент е много сериозното повишаване на скоростта на четене за големи файлови размери. (макар и на цената на доста завишено натоварване на процесора).</p>
<p><a href="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-iozone-02.png"><img class="alignnone size-medium wp-image-118" title="ts-219p-iozone-02" src="http://www.getoto.net/wp-content/uploads/2010/01/ts-219p-iozone-02-300x214.png" alt="" width="300" height="214" /></a></p>
<h1>Заключения и финални мисли</h1>
<p>TS-219P е един прекрасен NAS с целева аудитория малък офис или дома. Има много удобен интерфейс за управление и голямо количество възможности за употреба. Освен стандартно очакваните възможности и приложения за един NAS има и доста други които дори и по някога стоящи не на място са полезни и удобни. Благодарение на технология на онлайн миграция и онлайн разширяване на дисковото пространство този нас може да бъде използван дълго време само с редовна подмяна на дисковете. Освен всичко това устройството позволява интелигентно управление на използваното електричество, има стабилен и издържлив дизайн (имаше желания за скачане върху него които бяха отказани заради страха от самонараняване). Както може да се види от синтетичните тестове с IOZone той е подходящо устройство при работа със средни до големи файлове.<br />
За финални думи искам да кажа че съм много доволен от работата свършена от инженерите на QNAP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2010/01/09/review-na-qnap-ts-219p-nas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Литературен конкурс “Оставката на министъра”</title>
		<link>http://www.getoto.net/2009/12/07/literaturen-konkurs-ostavkata-na-ministra/</link>
		<comments>http://www.getoto.net/2009/12/07/literaturen-konkurs-ostavkata-na-ministra/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:07:06 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Разни]]></category>
		<category><![CDATA[Конкурс]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=75</guid>
		<description><![CDATA[Е както всички знаете организира се Литературен Конкурс “Оставката на Министъра“. Така или иначе вече се включихме с парична сума но пък за сметка на това сега смятам и да понапиша нещо. Тая събота неделя имах предостатъчно време да гледам телевизия и на … хрумнаха ми някои идеи.
Вариант първи
Предупреждавам … Стилът е почти кошмарен, най [...]]]></description>
			<content:encoded><![CDATA[<p>Е както всички знаете организира се Литературен Конкурс “<a href="http://blog.peio.org/?p=1188">Оставката на Министъра</a>“. Така или иначе вече се включихме с парична сума но пък за сметка на това сега смятам и да понапиша нещо. Тая събота неделя имах предостатъчно време да гледам телевизия и на … хрумнаха ми някои идеи.</p>
<p><strong>Вариант първи</strong><br />
Предупреждавам … Стилът е почти кошмарен, най вероятноима тонове грешки но … пък си е мое и ми харесва.</p>
<blockquote><p>Оставката на министъра</p>
<p>Главата се люшна тежко в страни. Светът губеше фокус, и това изобщо не се харесваше на министъра. Вчера май се беше случило нещо. От вътре го гризеше нещо …<br />
Какво ли се бе случило та се чустваше толкова зле. Че пи пи, то това си беше в реда на нещата. Да не би да беше ударил кофти алкохол. След кратка проверка на кошчето и коридора се установи, че все пак алкохолът си е бил наред. Да не би пък да бе прекалил с дрогата. Вярно е че последно време вдигаше дозата ама чак толкова … Бързият поглед към огледалната маса и се установи че втората доза дори не е отворена и даже от първата има малко останало.<br />
Нещата започваха да изглеждат все по-странно и по-странно.<br />
Остана последната възможност, да се бе ударил някъде сериозно. Опипа главата си … странно, нямаше цицини. След бързичка инспекция установи че няма синини, нито изкълчени или счупени крайници.<br />
Ставаше все по-странно и дори страшно. Все едно участваше едновременно в книга на Чандлър и филм на Хичкок. Тази неизвестност все повече го дразнеше, но бидейки един стар кадровик и таен агент познат под името “Нослето”, той стигна до простият извод<br />
“АДЖЕБА що ли се главоболя, я да ида аз на работа и да врътнем машинарията, все от някъде ще изкочи едно зайче и всичко ще си пасне на място.”<br />
Речено, сторено. Облече се бавно и аха да излезе му блесна една малка лампичка:<br />
* Дзънннннн, курвата вчера не ставаше … беше пълнолетна и не се дърпаше. Така просто се губи красотата. Е нищо.<br />
Вече облечен и леко поуспокоен, тръгна към министерството. Малко му беше странно че колата я нямаше долу, но това му се бе случвало и преди. Реши че шофьора си има собствена работа или пък сваля някоя метла и иска да я впечатли.<br />
Поръча си такси, и както обикновенно пална поредната цигара. Бакшиша беше нов, ама наистина нов. Нещо беше приказлив, но едно бързичко скастряне му изби идеите от празната картуна.<br />
Стигна до заветното министерство, излезе тежко от колата, и тръгна напред. Зад него бакшиша се развика<br />
“Абе а сметката?”<br />
“Каква сметка бе анкоолу, ти знаеш ли кой съм бе, а, искаш ли ти напраим живота беличък …”<br />
“Къф си ти бе, нямаш ли комплекси?”<br />
“Аз съм министър бе недоклатено пале, е ся вече ша те праим стерео!!!”<br />
“Ооо в грешка си пич, нали вчера подаде оставка?”<br />
Е те сега вече си такова такованката. В този момент все едно някой запали 100 слънца до министъра, всичко от вчерашният ден му мина рязко през главата. Всичко му се извъртя като на филм. Той си бе подал оставката, при това сам. Ех тежко е да си министър.</p>
<p>Вчерашният ден беше започнал просто идеално, главоболието беше точно колкото трябва, алкохолът беше перфектен (троен дестилат 25 годишен), пурите бях кубински, дрогата колумбийска и чиста, курвите перфектни, компанията прилично невзрачна. Просто денят беше започнал идеално. И след това просто всичко се скапа.<br />
Едната курва била с жица, и на всичкото отгоре била непълнолетна. Мда лошо се случи, нищо министър съм ще ми се размине. Да ама не, това не беше единственото. Оказа се че е нужна изкупителна жертва, за да се симулира някаква дейност пред европейският съюз. Обвиниха го в корупция, не че не беше истина но му стана болно. Изсимулираха му един подкуп от само 10000 лв. 10000 ЛВ, как не ги е срам, та той тези пари ги харчеше преди закуска само. о и само това да беше пак щеше да е ок. Ама не, някво недоносено журналистче беше почнало да се рови и беше стигнало до няколко сладки сделки. Беше поръчал да го дисциплинират, но уви, изказът му беше малко пиперливо цветист, и някак си се оказа записан на лента и публично пуснат. Късно се усети.<br />
След това дойде и следващият удар, нямаше да може да се оттърве от накисването за корупция. Този път проклетото ЕС беше се напушило яко, беше му болно. Той така добре работи, краде, маза, лъга, и сега какво. НОЖ В ГЪРБА. Предатели, изменници, ще ги научи тях. След него и потоп.<br />
Помоли секретарката да му напише оставката, нямаше представа как се пише такова нещо. За него оставка не съществуваше, а само повишение и преместване. Е както и да е ще видят те.<br />
След малко секретарката дойде с напечатаната оставка. Боже помисли си министърът, само 3 реда е, как може министър да си подава оставката само с 3 реда, е карай. Погледна нежно секретарката си … и установи че има конска физиономия, но за сметка на това задникът и беше тесен и се гънеше като желе като я сложиш на кура, май беше гимнастичка. В миг на разчустване отвори чекмеджето извади някаква пачка и я подаде<br />
* На вземи, заслужила си ги. Толкоз време ме скриваше от идиоти и нахалници. А сега изчезвай, вземи си отпуска и да те няма искам да съм сам.<br />
След кратък размисъл удари един подпис на оствката, пусна я по вътрешната поща и отвори сейфа …<br />
А в сейфа, в сейфа имаше документи. Малко стари, малко овехтели, тук таме захабени, с лекенца от кафе, но негови …</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/07/literaturen-konkurs-ostavkata-na-ministra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Министърът го хваща съвестта</title>
		<link>http://www.getoto.net/2009/12/07/ministrt-go-hvashta-svestta/</link>
		<comments>http://www.getoto.net/2009/12/07/ministrt-go-hvashta-svestta/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 12:53:39 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Разни]]></category>
		<category><![CDATA[Конкурс]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=70</guid>
		<description><![CDATA[Е както всички знаете организира се Литературен Конкурс “Оставката на Министъра“. Така или иначе вече се включихме с парична сума но пък за сметка на това сега смятам и да понапиша нещо. Тая събота неделя имах предостатъчно време да гледам телевизия и на … хрумнаха ми някои идеи.
Вариант втори
Предупреждавам … Стилът е почти кошмарен, най [...]]]></description>
			<content:encoded><![CDATA[<p>Е както всички знаете организира се Литературен Конкурс “<a href="http://blog.peio.org/?p=1188">Оставката на Министъра</a>“. Така или иначе вече се включихме с парична сума но пък за сметка на това сега смятам и да понапиша нещо. Тая събота неделя имах предостатъчно време да гледам телевизия и на … хрумнаха ми някои идеи.</p>
<p><strong>Вариант втори</strong><br />
Предупреждавам … Стилът е почти кошмарен, най вероятноима тонове грешки но … пък си е мое и ми харесва.</p>
<blockquote><p>Оставката на Министъра</p>
<p>Събуди се с тежко главоболие. В главата му се вихреха разни тъмни мисли, но той ги отдаде на главоболието и обичайната липса на кондиция рано сутрин. Все пак той беше министър и беше немислимо това да се бе случило. Но странно защо след първото кафе, мислите си останаха загнездени там.<br />
Той се виждаше как разписва оставката си. Но това нямаше как да стане, все пак той бе министър, такова поведение не само бе немислимо но и напълно невъзможно. Как така министър сам да си подаде оставката.<br />
Тези мисли го тревожеха. И той направи единственото което обикновенно му помагаше, тръгна към своята персонална ясновидка.<br />
Цеца кухата от столипиново много се гордееше с нейният единствен клиент. Все пак той бе голяма клечка, май беше някакъв актьор защото непрекъснато му виждаше снимката по вестниците които той и носеше. Пък и на всичкото отгоре беше лесен. Не искаше нищо, само трябваше да кима с глава, дори не искаше и да я праска (то кой ли би искал). Като се замисли май никой не я беше праскал от както направи 40. Пък и добре плащаше актьорчето, дойде побъбри малко, пошматка се наоколо, цеца изръсваше нещо безсмислено изпод мустак, той хвърляше на масата пачка пари и си тръгваше. Като цяло сладка работа, ямаше притеснения или нерви.<br />
Министъра гарира скромната си служебна количка, която харчеше повече бензин на ден от един рейс 280 (нищо че те са на нафта, ама са големи зверове), пред раздрънканата барака на цеца кухата. Слезе и се запъти към своето персонално чистилище и душеловка. Но нещо май не беше наред.<br />
Не цеца си беше там, но някак си аурата на мястото беш по-различна, някак си тежка, направо болезнена. Няма нищо рече си той, като влезна и всичко ще се оправи.<br />
Влезна той при цеца. Измина известно време и отвътре се чу злобен писък, сякаш някой го набучваха на кол. И май че колът беше покрит с бръснарски ножчета, а май някой се бе заиграл или със солена вода или с реванол (не реване).<br />
Някакви мизерни наносекунди след писъка, министърът изхвърча като тапа през вратата, с побеснял поглед и нададе същият писък. Изнасяйки се като бен джонсън, някъде наляво изчезна в големият град.<br />
Откриха го след два дни … мръсен, черен, с огън в очите, говорещ несвързано, с кости от плъхове в косата. За голямо съжаление на цялата ръководна класа се наложи да го хоспитализират в специализирано заведени за хора с леки дефекти на паметта. Журналистите започнаха кроткият пир … “Министър подал оставка самоволно преди два дни вече е в лудница”, “Опасно ли е да се напуска държавният апарат?”, “Има ли полза да си реалист, и патриот когато си в лудницата?”.<br />
Вакханалията беше бясна, говори се за това събитие в продължение на цели два месеца. Накрая дойде най-лошото: Министърът се беше самообесил. За целта бе използвал собственоръчно направено въже от собствената си коса и сперма. Този път вакханалията беше много по кротка. Но колкото и да им се искаше на управляващите да не разбутват стари рани, наложи се да се проведе разследване. Защо се беше самоубил министърът, имало ли е помагачи и т.н. И не само това ами беше наложително да се изчисти името на специализираната болница, защото там почиваха доста политици и можеше да стане грозно.<br />
Инспектор Стрезов, водеше разследването вече трети месец, но нещо не вървеше. Имаше чуството, че криеха информация от него и това изобщо не му беше приятно. Въздъхвайки след поредния почти празен ден той си наля първата чаша чист натурален сок от ябълка за вечерта и започна да пренарежда и разглежда информацията която имаше.<br />
Събитията се движеха просто но в тях нямаше никакъв смисъл.<br />
Ден 1ви: Министърът отива на работа и някъде около 15:45, позвънява на секретарката си да му донесе една официална празна бланка. Казва че му се рисувало за да се поразтуши от тази безкрайно грозна и некрасива пролет. Секретарката му занася празна бланка в 15:47. Около 16:15, министърът излиза от кабинета си и казва на секретарката че днес повече просто не може да седи в кабинета си и се прибира. В 16:30 секретарката отива за да остави някои книжа за да може министърът да ги прегледа на следващата сутрин. Намира оставката му, която е саморъчно написана и се обажда на премиера. В 16:41, вестник “ПолитОпозОмазХартиш” научава новината от нарочно инсталиран дериват към личният ТА-21 на министър прецедателя. До 17:25 новината вече е раздухана в огромни пропорции. Министърът вече си е у тях където оставя бележка на жена си че е много уморен и ще спи, както и прави.<br />
Ден 2ри: Министърът става в нормалният си час за ставане (10:51) явно с прилично главоболие. Изпива първото си кафе и тръгва към Цеца кухата. Около 12:45 е пред цеца кухата. Поговарят си малко, разказва че го боли глава, цеца кима, той вади вестник, прочита новината че си е подал оставката и застива като камък (на това медиците му викат кататоничен ступор). След около 2 мин се раздвижва издава зверски писък и изчезва навън в неизвестна посока.<br />
Ден 4ти: Около 17:42 министърът е открит в особенно окаяно състояние. Мръсен, кален, с кости от плъх в косата.<br />
Ден 5ти: Преценено е че в момента министърът не може да се грижи адекватно за себе си и може да представлява опасност за околните, затова бива приет на кратко лечение в специализирано заведение.<br />
Ден 66ти: Шумът около оставката на министъра и последвалото му приютяване в специализирано заведение вече е почи изчезнал. През това време министърът е все в ъщото налудничаво състояние. Не различава никой, не се повлиява от лекарствата, няма достъп до източници на новини, гледа само анимация.<br />
Ден 666ти: Министърът се самообесва с въже направено от собствената му коса и сперма.<br />
Стрезов изпсува яко за пореден път, нямаше никакъв смисъл в информацията, как така един министър ще си подаде оставката и то сам, че даже и саморъчно ще я надпише. Трябва да е имало нещо, някъде има нещо скрито.<br />
В този момент звънна звънеца, Стрезов не очакваше никой, но все пак отиде да отвори. На входа стоеше симпатична цицеста брюнетка с лекоо дезориентиран поглед.<br />
Гледайки питащо, стрезов светна лампата в коридора (някой беше залепил копчетата във фоайетата и не можеше да се светне). Как мога да ви помогна госпожице &#8211; попита галантно той.<br />
- Знам няколко неща около оставката на Министъра, ако искате мога да ви ги прошушна на уше.<br />
Стрезов почти се разтопи но дългът му към закона се показа на време и той просто и направи знак да влезе. Докато тя се настаняваше той нагласи записващата техника и забърка едно ирландско кафе за гостенката си.<br />
- Е госпожице започвайте, не се притеснявайте, разказвайте с колкото се може повече подробности. Имаме време, лентата е предостатъчно, а на мен не ми се спи.<br />
- Е добре решила съм се. Аз съм Цицка Цицолиева, бях любовница и държанка на министъра. С мен споделаше доста неща. Не знам дали всичко кеоето ми казваше е истина, но все пак ще ви го разкажа. Точно преди да си подаде оставката той беше в много странно състояние на духа. Казвашеми Че вече не се чуства комфортно като Министър. Твърдеше че нещо го гризе от вътре. Бяха му омръзнали политическите игри, не му било вече сладко да ходи по коктейли или пък да взема подкупи. Започнало било да му става тежко като гледа как се разграбвала държавата, как на никой от кабинета не му пукало за хората. Беше изгубил волята си да бъде Министър. Видях го за последно в деня преди да си подаде оставката. Тогава ми говори за дълг, за лошото състояние на сиропиталищата, чустваше се криво че децата нямало какво да ядат, а пък неговите собствени деца били в частни училища в чужбина и се били възпозвали от държавните пари и прекрасното чуждо образование. Просто не беше същият човек който познавах. Каза ми също че бил нагазил в доста дълбоки води и това не му се нравело. Жена му го обичала, но само това не стигало. Казах му че и аз го обичам но той пак каза че само това не стига. Искал нещо повече. Опитах се да го ободря и му казах че вече има деца, изградил е кариера и като цяло няма за какво да се притеснява. Той само склони глава и каза че съм права. Погали ме и си тръгна. Мислех си че всичко ще се размине и че ще му мине, но уви, не мина. Това е моята история. Дано ви помогне.<br />
Стрезов я погледна тежко и съвсем чистосърдечно и каза, че това не добавя почти нищо към наличните до момента данни. Но все пак е нещо което той много цени. Извика и такси качи я на него и я изпрати да си върви по пътя.<br />
След като си тръгна седна и се замисли … боже какви цици имаше тази Цицка Цицолова. Седна да намести новати информацияи и стигна до така нежеланият от всички политици и силни на деня.<br />
Министърът просто се беше изхабил, беше го хванала най-страшната политическа болест. “Гузната съвест”. Тя беше лош съветник но Стрезов като един препатил специалист знаеше че тя съществува и е почти неизбежна в някои моменти.<br />
Разследването му така и не разкри други факти и той се принуди да представи резултатите си пред Политиците. Те не бяха доволни, но само и само да го накарат да мълчи го наградиха и пенсионираха предсрочно. Оказа се че е болен от много страшна и рядка болест за която единственото лечение е ппродължителен престой в курортни центрове и изпиването на минимум 8 двойни дайкирита дневно в компанията на чернокоси полуобречени островитянки. Стрезов много се бори против това но доктоорите заключиха че не е на себе си и насила го транспортираха до малък остров с предимно женско население , заредиха острова с дайкири и заточиха Стрезов там. Така се оформи зоната СК1 (Специална Карантина 1) където се изпращаха всички подобни случаи.</p>
<p>За литературният конкурс “Оставката на министъра”<br />
Автор Владимир Витков<br />
Всяка прилика с реални лица или събития е напълно случайна.<br />
Материалът не е подходящ за лица под 18 години.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/07/ministrt-go-hvashta-svestta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BTV hacked</title>
		<link>http://www.getoto.net/2009/12/06/btv-hacked/</link>
		<comments>http://www.getoto.net/2009/12/06/btv-hacked/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:09:33 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Разни]]></category>
		<category><![CDATA[btv]]></category>
		<category><![CDATA[deface]]></category>
		<category><![CDATA[hacked]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=67</guid>
		<description><![CDATA[Е здрасти, което си е новина си е новина. сайта на БТВ беше хакнат.
Е не точно хакнат ами deface -нат (което си е почти същото). Нямам представа колко време е бил така но около 2 мин след като го видях вече беше свален. Т.е някой бърз админ беше убил webserver -а. Направо ме е срам [...]]]></description>
			<content:encoded><![CDATA[<a href="http://www.getoto.net/2009/12/06/btv-hacked/" title="BTV hacked"><img src="http://www.getoto.net/wp-content/uploads/2009/12/btv-hacked-150x150.png" alt="" class="feed-image" /></a><p>Е здрасти, което си е новина си е новина. сайта на <a href="http://btv.bg/">БТВ</a> беше хакнат.<br />
Е не точно хакнат ами deface -нат (което си е почти същото). Нямам представа колко време е бил така но около 2 мин след като го видях вече беше свален. Т.е някой бърз админ беше убил webserver -а. Направо ме е срам че не погледнах хедърите на кво върви.</p>
<p>Доказателство: <a href="http://www.getoto.net/wp-content/uploads/2009/12/btv-hacked.png"><img src="http://www.getoto.net/wp-content/uploads/2009/12/btv-hacked-300x231.png" alt="btv-hacked" title="btv-hacked" width="300" height="231" class="aligncenter size-medium wp-image-68" /></a><br />
Предупреждение: Снимката е големичка</p>
<p>Update: Сайта им е все още долу. Беше си deface -нат като хората. Нямаше нищо трито от секциите, макар че 100% е можело …</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/btv-hacked/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trac + SVN The setup</title>
		<link>http://www.getoto.net/2009/12/06/trac-svn-the-setup/</link>
		<comments>http://www.getoto.net/2009/12/06/trac-svn-the-setup/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 19:24:19 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[256 mb ram]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[master browser]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=63</guid>
		<description><![CDATA[Тъй като се занимавам с много и най-вече различни проекти, стана ясно че имам мужда от система за управление на проекти. И докато това ми се търкаляше в главата реших че ще е добре ако може да се използва за множество проекти с множество хора. Почна се търсенето, като минах през dotProject, TikiWiki, Mantis и някои други. Но просто някак си не ми допадаха. В крайна сметка се спрях на Trac и SVN.]]></description>
			<content:encoded><![CDATA[<a href="http://www.getoto.net/2009/12/06/trac-svn-the-setup/" title="Trac + SVN The setup"><img src="http://www.getoto.net/wp-content/uploads/2009/12/trac-1-150x150.png" alt="" class="feed-image" /></a><blockquote><p><strong>Disclaimer: </strong>Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.</p>
<p><strong>История</strong></p>
<ul>
<li>25.01.2007 &#8211; Първа версия</li>
</ul>
</blockquote>
<p>Тук ще се постарая да опиша по какъв начин съм настроил система състояща се от Trac и SVN която използвам за управление на проекти.</p>
<p><strong>Идеята</strong><br />
Тъй като се занимавам с много и най-вече различни проекти, стана ясно че имам мужда от система за управление на проекти. И докато това ми се търкаляше в главата реших че ще е добре ако може да се използва за множество проекти с множество хора. Почна се търсенето, като минах през dotProject, TikiWiki, Mantis и някои други. Но просто някак си не ми допадаха. В крайна сметка се спрях на Trac и SVN.</p>
<p><strong>Мотивацията</strong><br />
Избрах комбинацията Trac + SVN по следните причини</p>
<ul>
<li>Свикнал съм със SVN пък макар и от конзола</li>
<li>Trac се разработва относително активно</li>
<li>Вече имах инсталиран Python заради част от системата ми</li>
<li>В самия Trac има вградено wiki което ще се ползва за описанието на проектите и документацията</li>
<li>Има билетчета за проблеми</li>
<li>Куп други дреболии</li>
</ul>
<p>След всичко казано Trac се оказа едно добро решение.</p>
<p><strong>Желязото</strong><br />
Машината на която работи всичко това е следната</p>
<blockquote><p>Debian Unstable<br />
600 Mhz CPU<br />
256 MB Ram<br />
20G HDD</p></blockquote>
<p>Върху нея работят доста услуги: mysql, apache, exim, routing/shaping/nat, dns, dhcp, ntp, ftp, shell, samba (в режим на Master Browser) и други.</p>
<p>Като цяло доста слабичка машинка по днешни стандарти, но полезна и гледана с любоФ</p>
<p><strong>Необходим Софтуер</strong><br />
За да може системата да работи като хората ни трябва следният софтуер</p>
<ul>
<li>Trac</li>
<li>subversion</li>
<li>libneon</li>
<li>Python</li>
<li>pysqlite</li>
<li>python-subversion-bindings</li>
<li>mod_python</li>
<li>clearsilver</li>
<li>xinetd</li>
<li>други дреболии</li>
</ul>
<p>Като цяло най-лесно е ако си имате дебиан. Ако е такъв случая процедурата е пределно проста</p>
<pre>apt-get install trac libapache2-mod-python xinetd</pre>
<p>И започва веселбата :)</p>
<p>Допълнително към Python сме инсталирали python-setuptools, tracwebadmin, tracaccountmanager.</p>
<p><strong>Разположение на файловете</strong><br />
Тъй като ще има няколко проекта, ще отделим специално място за цялата система. Препоръчително е да е на отделен дял.<br />
При мен се спрях на директорията <strong>/home/projects</strong> която има следната структура</p>
<pre class="brush: plain;">/home/projects/
/home/projects/trac
/home/projects/trac/project1
/home/projects/trac/project2
... ... ...
/home/projects/svn
/home/projects/svn/project1
/home/projects/svn/project2
... ... ...</pre>
<p>Възможно е Trac и SVN инстанциите да се намират в директориите на проектите но така се усложнява млко конфигурацията</p>
<p><strong>Същинското изпълнение</strong><br />
Създайте си директорната структура която ще ви е удобна:</p>
<pre class="brush: bash;">mkdir -p /home/projects/{trac,svn}</pre>
<p>Създайте си съответните проекти (това става с trac-admin)</p>
<pre class="brush: bash;">trac-admin /home/projects/trac/project1 initenv</pre>
<p>Ще ви бъдат зададени няколко въпроса и по точно: Име на проекта, База данни (sqlite е добър избор), тип на хранилището за код, къде се намира самото хранилище.<br />
Ограничение е че хранилището на код трябва задължително да е на същата машина (не се поддържат отдалечени), но това може лесно да се заобиколи с помощта на nfs</p>
<p>Създайте съответните хранилища за код (svnadmin)</p>
<pre class="brush: bash;">svnadmin create /home/projects/svn/project1[code]
Променете правата на така създадените директории съответно на потребителя като който вървят Trac системата и svn сървъра
[code lang=bash]chown -R www-data:www-data /home/projects/trac/project1
chown -R svnserv:svnserv /home/projects/svn/project1</pre>
<p>Използваме www-data тъй като под този потребител работи Apache сървъра. Потребителя svnserv сме създали предварително като за домашна директория сме му задали <strong>/home/projects/svn</strong></p>
<p>След като имаме вече създадени проектите време е да можем да ги покажем в браузър (иначе са безполезни).<br />
Trac може да работи като самостоятелен демон (tracd), като CGI процес (trac.cgi, trac.fcgi) или в контекста на Apache (което сме и избрали) с помощта на mod_python.</p>
<p>В конфигурацията на Apache добавяме</p>
<pre class="brush: plain;">LoadModule python_module modules/mod_python.so
# или го разрешаваме с помощта на дистрибуцията си
 
&lt;location /projects&gt;
    # с какво ще обработваме съдържанието
    SetHandler mod_python
    # точно с какво (trac)
    PythonHandler trac.web.modpython_frontend
    # коя информация точно ще сервираме
    PythonOption TracEnvParentDir /home/projects/trac
    # от какво ще генерираме индекса (не е задължителен)
    PythonOption TracEnvIndexTemplate /home/projects/trac/listing.cs
    # debug mode ON
    PythonDebug on
&lt;/location&gt;</pre>
<p>Рестартираме сървъра и проверяваме. Трябва да се вижда нещо подобно на следната картинка<br />
<a href="http://www.getoto.net/wp-content/uploads/2009/12/trac-1.png"><img src="http://www.getoto.net/wp-content/uploads/2009/12/trac-1.png" alt="trac-1" title="trac-1" width="296" height="154" class="aligncenter size-full wp-image-64" /></a></p>
<p>Ако ли пък не … почвайте да гледате в логовете какво пише.</p>
<p>Следва да пуснем svn сървър. Това се прави с помощта на svnserve. В случая съм избрал да го стартирам през xinetd понеже няма да е толкова натоварен. За по голяма сигурност ще работи като отделен потребител (svnserv)</p>
<p>Конфигурацията на xinetd е следната</p>
<pre class="brush: plain;">service subversion
{
        # слушаме само на IPv4 адрес
        flags = IPv4
        # услугата НЕ е спряна
        disable = no
        # потребител и група
        user = svnserv
        group = svnserv
        # максимален брой инстанции
        instances = 5
        # be nice :)
        nice = 15
        # кой точно е сървърът
        server = /usr/bin/svnserve
        # аргументи за стартирането му
        server_args = --inetd --root /home/projects/svn
        # обичайните работи (логване, типаж ...)
        log_on_success = PID HOST DURATION
        log_on_failure = HOST ATTEMPT
        wait = no
        socket_type = stream
}</pre>
<p>Тествайте със svn клиент дали работи.</p>
<p><strong>Подсигуряване и подобряване на Услугите</strong><br />
След като имаме работещи услуги време е да помислим за тяхното подсигуряване. А именно ето какво ще направим:</p>
<p>За Trac системите</p>
<ul>
<li>Премахване на анонимният достъп (изцяло). За тази цел ще ни се наложи да използваме trac-admin. Възможно е да се реализира през web интерфейс но все пак трябва да се знае как се прави на ръка.
<pre class="brush: bash;"># влизаме в интерактивен режим
      trac-admin /projects/trac/project1
      # привилегиите се управляват посредством командата permission
      Trac [/home/projects/trac/project1]&gt; permission help
      permission list [user]
              -- List permission rules

      permission add &lt;user&gt; &lt;action&gt; [action] [...]
              -- Add a new permission rule

      permission remove &lt;user&gt; &lt;action&gt; [action] [...]
              -- Remove permission rule
      # това е просто за запознаване
      # следва същинското премахване
      Trac [/home/projects/trac/project1]&gt; permission remove anonymous *</pre>
<p>Вече анонимните потребители нямат никакви права.</li>
<li>добавяне на нов административен потребител с пълни права. Това се прави за да имаме по лесен контрол.
<pre class="brush: bash;">Trac [/home/projects/trac/project1]&gt; permission add user1 TRAC_ADMIN, MILESTONE_DELETE ....
      # всички възможни привилегии</pre>
<p>Така добавеният потребител <strong>user1</strong> ефективно получава пълен и абсолютен контрол.</li>
<li>активиране на администраторският панел - тази процедура се извършва чрез редакция на кконфигурационният файл <strong>conf/trac.ini</strong> в директорията на нашият проект. За да активираме администраторският интерфейс е необходимо да разрешим използването на компонентите които са ни нужни а именно да добавим
<pre class="brush: plain;">[components]
webadmin.* = enabled</pre>
</li>
<li>включване на подобрен процес на влизане в системата - по начало процеса на влизане в Trac не е особенно красив нито пък удобен, затова и ще бъде подменен от разширението TracAccountManager. То има зависимост от TracWebAdmin който вече е активиран. За да можем да ползваме подобреният процес трябва първо да изключим вграденият във trac и да активираме новият. Това става отново с редакция на trac.ini
<pre class="brush: plain;">[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.abstractpasswordfilestore = enabled
acct_mgr.htfile.htdigeststore = disabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.http.httpauthstore = disabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
trac.web.auth.loginmodule = disabled

[account-manager]
password_file = /home/projects/trac/users
password_store = HtPasswdStore</pre>
<p>Какво точно прави всяка опция е добре обяснено в документацията (линковете са в края)<br />
Сега е необходимо да рестартираме web сървъра за да влезнат в сила нашите промени.</li>
</ul>
<p>За svn сървъра:</p>
<blockquote><p>Забраняване на всякакъв достъп за неауторизирани потребители</p></blockquote>
<p>Това се изпълнява като се редактират конфигурациите на svn сървъра. Те се намират в директорията в която е нашето хранилище на код. Модифицираме ги по следният начин:</p>
<p><strong>conf/svnserve.conf</strong></p>
<pre class="brush: plain;">### This file controls the configuration of the svnserve daemon
### Visit http://subversion.tigris.org/ for more information.

[general]
# никакъв достъп за анонимните
anon-access = none
password-db = passwd
authz-db = authz
realm = Project 1</pre>
<p><strong>conf/authz</strong></p>
<pre class="brush: plain;">### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.

[groups]

# за кой път иде реч (правата се унаследяват)
[/]
# правата на потребител (четене и писане)
user1 = rw
# правата на всички останали (пълна нула)
* =</pre>
<p><strong>conf/passwd</strong></p>
<pre class="brush: plain;">### This file is an example password file for svnserve.

[users]
user1 = password</pre>
<p><strong>Заключение</strong><br />
След като сме си свършили всичката работа следва да рестартираме за един последен път apache и xinetd и да започнем да си ползваме системата. За подробности за работата с нея … във връзките</p>
<p><strong>Връзки</strong><br />
<a href="http://trac.edgewall.org/">Trac</a><br />
<a href="http://www.modpython.org/">mod_python</a><br />
<a href="http://httpd.apache.org/">Apache</a><br />
<a href="http://subversion.tigris.org/">Subversion</a><br />
<a href="http://trac.edgewall.org/wiki/WebAdmin">TracWebAdmin</a><br />
<a href="http://trac-hacks.org/wiki/AccountManagerPlugin">TracAccountManager</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/trac-svn-the-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DHCP + TFTP + PXELINUX = Netinstall</title>
		<link>http://www.getoto.net/2009/12/06/netinstall-with-pxe-tftp-dhcp/</link>
		<comments>http://www.getoto.net/2009/12/06/netinstall-with-pxe-tftp-dhcp/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 18:49:16 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[dhcpd]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[netboot]]></category>
		<category><![CDATA[Option]]></category>
		<category><![CDATA[pxe]]></category>
		<category><![CDATA[PXELINUX]]></category>
		<category><![CDATA[syslinux]]></category>
		<category><![CDATA[tftp]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=58</guid>
		<description><![CDATA[Преди около седмица в Linux-BG се появи молба за помощ, за един леко прецакан windows. Ситуацията беше, че MBR на системата беше заминал по дяволите, а машината нямаше нито CD, нито флопи, нито пък можеше да стартира от USB. Остава като решение само стартиране от мрежа. Помогнахме му на човека понеже си имам инсталиран такъв сървър в къщи. Тази комбинация от софтуер е полезна и при други ситуации (основно мързел) като инсталация на отдалечени машини, тестове, и някои други добрини.]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Disclaimer: </strong>Описаните техники в този документ могат да ви помогнат но не е задължително да са напълно вярни и изчерпателни. Не поемам отговорност за каквито и да било реални или нереални, вреди, ползи, пропуски, паднали къщи или каквото и да е произтичащи от ползването или неползването на този документ.</p>
</blockquote>
<p><strong>Мотивация</strong><br />
Преди около седмица в <a href="http://www.linux-bg.org/">Linux-BG</a> се появи молба за помощ, за един леко прецакан windows. Ситуацията беше, че MBR на системата беше заминал по дяволите, а машината нямаше нито CD, нито флопи, нито пък можеше да стартира от USB. Остава като решение само стартиране от мрежа. Помогнахме му на човека понеже си имам инсталиран такъв сървър в къщи. Тази комбинация от софтуер е полезна и при други ситуации (основно мързел) като инсталация на отдалечени машини, тестове, и някои други добрини.</p>
<p><strong>Цел</strong><br />
Да получим сървър от който да може да се стартира инсталация на операционна система.<br />
Ще демонстрираме как се прави това с <a href="http://www.debian.org/">Debian</a>, а за други дистрибуции е аналогично.</p>
<p><strong>Необходими компоненти</strong></p>
<ul>
<li>Инсталирана и работеща линукс система която ще ползваме за PXE сървър</li>
<li>DHCP сървър &#8211; тук ще опишем настройката му</li>
<li>TFTP сървър</li>
<li>PXELINUX &#8211; от syslinux системата</li>
<li>Интернет свързаност или локално копие на необходимите пакети за инсталация</li>
<li>Желание за работа и малко трезва мисъл</li>
</ul>
<p>Изхождаме от презумпцията че цялото това нещо ще го реализирате в мрежа която е отделена от основната ви, тъй като едно дребно недоглеждане може да направи много поразии. Ще се постарая да ви спестя проблемите но никога не се знае.</p>
<p><strong>Теория на работата</strong><br />
Доста машини могат да стартират през мрежа, било то за да работят като терминали или по други съображения. За целта мрежовата им карта трябва да поддържа PXE стандарта за предпочитане над версия 0.91. Макар че може да бъде излъгана и с по-ниски версии.<br />
Самият процес протича доста елементарно и като цяло е доста прост:</p>
<ul>
<li>Машината стартира и се инициализира биос подсистемата</li>
<li>Инициализира се PXE подсистемата на мрежовата карта</li>
<li>Мрежовата карта изпраща заявка за IP адрес</li>
<li>DHCP сървъра отговаря като в допълнение и предлага да стартира от мрежа и я насочва към следващия сървър (TFTP)</li>
<li>TFTP сървъра предоставя на мрежовия стек малък файл който играе ролята на boot мениджър</li>
<li>От този мениджър си избираме една от опциите и стартираме</li>
</ul>
<p>За повече информация по темата:</p>
<ul>
<li><a href="http://syslinux.zytor.com/">http://syslinux.zytor.com/</a> &#8211; информация за syslinux комплекта от инструменти</li>
<li><a href="http://en.wikipedia.org/wiki/Preboot_Execution_Environment">PXE</a></li>
<li><a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">DHCP в wikipedia</a></li>
<li><a href="http://www.dhcp.org/">http://www.dhcp.org/</a></li>
</ul>
<p><strong>Настройка на DHCP сървър</strong><br />
Настройката не е нищо особенно има я подробно описана в документацията на sysllinux/pxelinux. Единственото което ни е необходимо в допълнение към нормален dhcp сървър са две допълнителни опции които ще обясним нагледно с пример.</p>
<p><strong><em>/etc/dhcpd.conf</em></strong></p>
<pre class="brush: plain;">#
# Sample configuration file for ISC dhcpd for Debian
#
# $Id: dhcpd.conf,v 1.4.2.2 2002/07/10 03:50:33 peloy Exp $
#

# Задължително или няма да може да раздаваме адреси при нормална работа
authoritative;

# Да ще позволяваме стартирането на стари клиенти (идва от BOOTP протокола)
allow bootp;
# Да ще позволяваме стартирането на клиенти посредством PXE
allow booting;
# нашият следващ сървър от където ще си дръпнем boot loader
next-server 10.99.3.1;
# Как се казва нашият boot loader
filename &quot;pxelinux.0&quot;;

default-lease-time 14400;
max-lease-time 86400;

# стандартна конфигурация на dhcp сървър
subnet 10.99.3.0 netmask 255.255.255.0 {
  range 10.99.3.10 10.99.3.200;
  option domain-name-servers 10.99.3.1;
  option domain-name &quot;instalations.network&quot;;
  option routers 10.99.3.1;
  option subnet-mask 255.255.255.0;
  option broadcast-address 10.99.3.255;
  option default-ip-ttl 64;
  option default-tcp-ttl 64;
  option time-offset 7200;
  option time-servers 10.99.3.1;
  option ntp-servers 10.99.3.1;
  option netbios-name-servers 10.99.3.1;
  option netbios-node-type 8;
}</pre>
<p>Ако нещо не ви е ясно ви съветвам да се обърнете към помощните страници на пакета dhcp</p>
<p><strong>Настройка на TFTP сървър</strong><br />
За тфтп сървър ще използваме <a href="http://freshmeat.net/projects/tftp-hpa/">tftp hpa</a> работещ в режим на демон.<br />
той се инсталира пределно просто (при debian)</p>
<pre class="brush: bash;">apt-get install tftpd-hpa</pre>
<p>Конфигурацията му се намира в <strong><em>/etc/default/tftpd-hpa</em></strong> и е следната:</p>
<pre class="brush: plain;"># ще работим като демон
RUN_DAEMON=&quot;yes&quot;
# опциите са
# -l - работим в режим на демон
# -v - записваме подробна информация
# -s - работим в сигурен режим като сервираме само от тази директория
OPTIONS=&quot;-l -v -s /tftpboot&quot;</pre>
<p>Все още не стартирайте сървъра. Препоръчва се файловете както и директорията /tftpboot да са собственост на root и да са само за четене (от всички)</p>
<p><strong>Настройки на PXELINUX</strong><br />
PXELINUX се намира в серята програми наречена <a href="http://syslinux.zytor.com/">syslinux</a>. Не е необходимо да инсталирате целия пакет тъй като от него ще ползваме само pxelinux.0 и евентуално memdisk ако искате да стартирате дос</p>
<p>Конфигурацията му е до някъде сложна но ще се постарая да я обясня като хората. Самият pxelinux се конфигурира от един текстов файл който указва какво и с какви настройки да бъде стартирано. Също така поддържа възможност различните машини да получават различна конфигурация. Документацията в пакета syslinux е много добра макар и длъжка така че наистина я прочетете поне диагонално.<br />
Нашата инсталация на pxeilinux ще живее в директорията /tftpboot и има следната структура:</p>
<pre class="brush: plain;">/tftpboot/
/tftpboot/initrd/
/tftpboot/kernels/
/tftpboot/pxelinux.0
/tftpboot/pxelinux.cfg/
# нашата конфигурация
/tftpboot/pxelinux.cfg/default
/tftpboot/texts/</pre>
<p>В случая ще демонстрираме една единствена конфигурация за всички машини. За разнообразни конфигурации моля погледнете в документацията. Следва и примерната конфигурация:<br />
<strong>/tftpboot/pxelinux.cfg/default</strong></p>
<pre class="brush: plain;"># по подразбиране стартираме от локален диск
# прави се за да не стане гаф и да унищожим информация
default local
# закъснение при стартиране (5 секунди)
timeout 50
# да покажем ли промпт
prompt 1
# да покажем определен текст
display texts/menu.txt

label local
        localboot 0

# етикет за този кернел
label deb26n
# самият кернел
        kernel kernels/deb-testing-26.kernel
# допълнителни опции
        append initrd=initrd/deb-testing-26.initrd \
           vga=normal \
           ramdisk_size=16384 \
           root=/dev/rd/0 \
           devfs=mount,dall rw

label deb26e
        kernel kernels/deb-testing-26.kernel
        append initrd=initrd/deb-testing-26.initrd \
           DEBCONF_PRIORITY=low \
           vga=normal \
           ramdisk_size=16384 \
           root=/dev/rd/0 \
           devfs=mount,dall rw</pre>
<p><em><strong>Забележка</strong>: редовете <strong>append</strong> са разпределени на няколко реда от съображения за четимост, но в конфигурацията трябва да са на един ред.</em></p>
<p>Кернелът и initrd файла са взети от проекта дебиан и по точно от секцията му нетбоот. Добавени са с лека адаптация и допипване на командния ред</p>
<p><strong>Заключение</strong><br />
Като цяло това е всичко. Не е особенно трудно да се постигне. Евентуален проблем който може да срещнете е че PXE агента на мрежовата карта е малко стар и не иска да работи с tftp сървър а задължително изисква pxe сървър, но това е лесно решимо.<br />
За тези които искат готово решение без много много да си играят ето <a href='http://www.getoto.net/wp-content/uploads/2009/12/pxebooting.tar.gz'>пакетирано всичко необходимо</a>. Необходимо е само да имате инсталиран dhcp и tftp сървър.</p>
<p>Очаквам въпроси, коментари, предложения и каквото ви хрумне в коментарите.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/netinstall-with-pxe-tftp-dhcp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Boot Norton Ghost over network</title>
		<link>http://www.getoto.net/2009/12/06/howto-boot-norton-ghost-over-network/</link>
		<comments>http://www.getoto.net/2009/12/06/howto-boot-norton-ghost-over-network/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 18:36:02 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[bootsector]]></category>
		<category><![CDATA[ebd]]></category>
		<category><![CDATA[Ghost]]></category>
		<category><![CDATA[ghost norton]]></category>
		<category><![CDATA[initrd]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[memdisk]]></category>
		<category><![CDATA[Norton]]></category>
		<category><![CDATA[norton ghost]]></category>
		<category><![CDATA[windows 98 se cd]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=55</guid>
		<description><![CDATA[Днес ще разгледаме темата как да стратираме Norton Ghost през мрежа.
Постът е по идея на jorgy днешната статия ще гради върху предоставената вече основа.
Идеята
Трябва да си сътворим подходяща медия която да може да се стартира през мрежа и в нея да си сложим ghost-a. Първоначалното желание беше да се опише начин за стартиране на iso [...]]]></description>
			<content:encoded><![CDATA[<p>Днес ще разгледаме темата как да стратираме <strong>Norton Ghost</strong> през мрежа.<br />
Постът е по идея на jorgy днешната статия ще гради върху <a href="http://www.getoto.net/2009/12/06/netinstall-with-pxe-tftp-dhcp/">предоставената вече основа</a>.</p>
<p><strong>Идеята</strong><br />
Трябва да си сътворим подходяща медия която да може да се стартира през мрежа и в нея да си сложим ghost-a. Първоначалното желание беше да се опише начин за стартиране на iso изображение по мрежа, но го отхвърляме поради факта че самото изображение може да е … големичко. Все пак няма нужда да точим 80 М през мрежата и в последствие да го слагаме във рам диск (макар че е възможно). Това ще бъде споменато въпреки всичко.</p>
<p><strong>План за действие</strong><br />
Трябва да завършим следните стъпки:</p>
<ul>
<li>Създаване на стартираща медия</li>
<li>Добавяне на Norton Ghost в нея</li>
<li>Добавяне в системата ни за мрежово стартиране</li>
</ul>
<p><strong>Създаване на стартираща медия</strong><br />
Тъй като Norton Ghost е като цяло win32/DOS базирано приложение ще ни е необходима медия която поддържа дос среда. Поне за мен най удобната за случая медия е стартова дискета на Windows 98 SE. Тъй като тази дискетка е малко пълна ще се наложи да осводобим малко място (тоест да поразкараме доста работи).<br />
За начало понеже няма да използваме CD/DVD изхвърляме всички драйвери по темата, следва изхвърляне на инструментите за спасяване (ebd.cab, expand.exe) и някои други дреболии. В крайна сметка трябва да получим базова стартираща дискета с command.com, autoexec, няколко sys файла и достатъчно свободно място за да сложим на нея нашият ghost.exe. В края на статията има връзка към предварително подготвена медия.<br />
Самата стартова дискетка може да се намери от доста места. Аз лично препоръчвам <a href="http://www.bootdisk.com/">http://www.bootdisk.com/</a>.</p>
<p>Друг вариант за подготвяне на медията е да намерим bootsector от подобна дискета и да го запишем в началото на празен файл. Това може да се постигне със dd, cat и други различни приятели :).</p>
<p><strong>Добавяне на Norton Ghost в медията</strong><br />
Като цяло това е проста операция. Трябва само да монтирате предварително подготвената медия с достатъчно свободно място и да копирате изпълнимият файл на ghost-a.</p>
<p><strong>Добавяне в системата ни за мрежово стартиране</strong><br />
Тук идва вече сериозната работа.<br />
Понеже това е дос той се стартира по малко особен начин. Трябва да бъде излъган леко. Това се постига посредством PXE линукс и кернелът който те предоставят наречен memdisk.<br />
Използваме следните предположения:</p>
<ul>
<li>Използваме текущото активна конфигурация изградена в статията <a href="http://www.getoto.net/2009/12/06/netinstall-with-pxe-tftp-dhcp/">Мрежова инсталация със DHCP &#038; TFTP</a></li>
</ul>
<p>Следва да си копираме memdisk от дистрибуцията на pxelinux в директорията ни kernels а предварително подготвената медия във директорията initrd.</p>
<p>След като сме си ги изкопирали следва да добавим следната секция във файлът <strong>/tftpboot/pxelinux.cfg/default</strong></p>
<pre class="brush: plain;">label Ghost
    kernel kernels/memdisk
    append initrd=initrd/ghost.img</pre>
<p>С това конфигурацията ни завършва.</p>
<p><strong>Стартиране на iso изображение</strong><br />
Тъй като iso файловете си имат собствен boot сектор те могат да бъдат стартирани със memdisk. Тоест initrd файла който ще заредим е iso файла.<br />
По тази тема трябва да внимавате за размера на iso файла и наличната ram памет.</p>
<p><strong>Заключение</strong><br />
Посредством тази заигравка може да стартирате ghost за възстановяване от локален диск. В текущото описание и предоставеният файл не можете да възстановявате архиви през мрежа (няма включена поддръжка на мрежа). Също така не може да се разчита на високата памет и може би някои дреболии които се считат за даденост. Като цяло е полезно в рамките на тези ограничения.</p>
<p><strong>Връзки/материали</strong></p>
<ul>
<li><a href="http://syslinux.zytor.com/">http://syslinux.zytor.com/</a> &#8211; информация за syslinux комплекта от инструменти</li>
<li><a href="http://en.wikipedia.org/wiki/Preboot_Execution_Environment">PXE</a></li>
<li><a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">DHCP в wikipedia</a></li>
<li><a href="http://www.dhcp.org/">http://www.dhcp.org/</a></li>
<li><a href='http://www.getoto.net/wp-content/uploads/2009/12/ghost.img_.gz'>ghost.img.gz</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/howto-boot-norton-ghost-over-network/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Perfect SOHO router &#8211; Part 6</title>
		<link>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/</link>
		<comments>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 18:13:28 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[ACL]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[dhcpd]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[Safe]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[shaper]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[soho]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=46</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>След като вече имаме работещ рутер, който си филтрира и си има някакви дребни статистики може да се замислим за разни удобства и евентуално да му дадем допълнителни задачи.</p>
<p>Тъй като има изгледи тази статия да стане най-голямата и да се пише доста време, ще трябва да кликнете на линка прочети повече. Ще се радвам ако и вие споделите вашите малки номера и трикове.<br />
Първото удобство с което ще разширим нашият рутер това е прокси. Освен простото прокси ще го направим и прозрачно за да можем да избегнем конфигурирането му на всяка машина. Трябва да се отбележи че има и автоматични методи за конфигуриране на прокси сървъри но те не са от най-удобните или пък безпроблемните.</p>
<p><strong>Защо ни трябва прокси</strong><br />
Прокси сървърът представлява система която кешира заявки. Тоеск ако клиент А изиска файл file.html нашият сървър ще съхрани за определено време отговорът в своят кеш и при последваща заявка за този файл от друг клиент Б файлът ще бъде подаден от кеша, а не от интернет. По този начин постигаме спестяване на трафик, ускоряване, контрол. С малко повече труд може да се реализира антивирус, антиспам, филтрация на реклами, контрол на трафика и др. Най-популярното решение за прокси сървър е <strong>squid</strong>.</p>
<p><strong>Проста конфигурация на squid</strong><br />
Ще дадем една много елементарна конфигурация при която всичко работи, но няма никакви защити от към използване. Конфигурацията е без коментарите от файла поради причината че целият файл е около 40К.</p>
<pre class="brush: plain;"># на кой порт да слушаме и дали да ауторизираме (не)
http_port 9999 no-connection-auth
# на кой порт да си говорим с други проксита (няма да си говорим)
icp_port 0
# ако някой от тези стрингове се среща в URL - не кеширай
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
# workaround за буг в апачето
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
# максимална големина на обект в рам областта
maximum_object_size_in_memory 48 KB
# колко рам да заделим за кеширане
cache_mem 24 MB
# директория за кеш файлове (прочетете конфигурацията във файла, много полезна е)
cache_dir aufs /var/spool/squid 500 16 256
# логовете ...
access_log /var/log/squid/access.log squid
# малко анонимизация ... максимална всъщност)
client_netmask 0.0.0.0
# юзер за ftp сесии
ftp_user IEUser@
hosts_file /etc/hosts
# стандартни параметри за проверка по някои протоколи
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
# малко ACL-и. Почти всички са стандартни
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443          # https
acl SSL_ports port 563          # snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl Jabber_ports port 5222 5223	#Jabber
acl purge method PURGE
acl CONNECT method CONNECT
# това вече сме ние
acl clientnetwork src 10.42.3.0/255.255.255.0
# след като имаме ACL-и време е да почнем да раздаваме достъп
http_access allow manager localhost
http_access allow manager home
http_access deny manager
http_access allow purge localhost
http_access allow CONNECT Jabber_ports
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# ДАААА пуснахме го :)
http_access allow clientnetwork
http_access allow localhost
# Всичко което не е разрешено ... под ножа
http_access deny all
http_reply_access allow all
icp_access allow all
cache_mgr root
cache_effective_group proxy
# нека да скрием версията при грешки
httpd_suppress_version_string on
# и да не издаваме че има прокси по пътя
via off
forwarded_for off
cachemgr_passwd parola all
buffered_logs on
short_icon_urls on
coredump_dir /var/spool/squid
# нека да се опитаме да сме умни и да вземаме по няколко странички на куп
pipeline_prefetch on</pre>
<p>Както се вижда това отново е една много проста конфигурация, която се различава съвсем малко от стандартната. Променили сме стандартният порт на който слуша сървърът ни, добавили сме настройка за in-memory кешът, увеличили сме малко дисковият кеш и сме скрили малко факта че има прокси. Сега остава да го направим сървърът ни прозрачен. Тоест да няма нужда клиентите да се настройват. Това се постига посредством пренасочване на изходящите заявки към определен порт. Да предположим че искаме да пренасочваме целият http трафик но не и https трафика и ftp трафика. Като допълнителен бонус знаем че част от клиентите посещават сайтове които не са на 80ти порт ами на 81,88,8800,8080. Също така доста сайтове предпочитат да имат два web сървъра, първият на порт 80 който сервира страниците и втори обикновенно на порт 81 който сервира картинки само.<br />
Цялата задача се реализира по следният начин (използваме конвенциите от <a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/">Четвърта част</a>)</p>
<pre class="brush: bash;">$IPT -t nat -A PREROUTING -i $INT_IF -m multiport --dports 21,80,81,88,8800,8080 -j REDIRECT --to-port 9999</pre>
<p>Съответно порт 9999 е отворен поне за вътрешният интерфейс.</p>
<p>Темата с delay_pools също е интересна тъй като с нея може да се реализира прост шейпър. И за всеобща радост е много добре обяснена в конфигурационният файл.</p>
<p><strong>Просто ограничаване на трафик</strong><br />
Понякога клиентите на рутера са малко нагли и теглят ужасно много. Ако нямаме познанията или желанието да реализираме някакъв вид шейпър, можем да направим временно решение посредством iptables. Решението се базира на идеята че ако линията е претоварена мрежовият стек се опитва да намали трафика. Обикновенно претоварена линия се открива когато започнат да се губят пакети. И за да изглежда реално пакетите трябва да се губят що годе случайно. Това се постига посредством модула към iptables RANDOM. Този модул е в patch-o-matic-ng base. Правилото изглежда по следният начин.</p>
<pre class="brush: bash;">$IPT -t nat -A FORWARD -i $INT_IF -s &lt; client_IP &gt; -m RANDOM --average 5% -j DROP</pre>
<p>Методът изобщо не е красив и понякога само натоварва допълнително линията. Ако ползваме голям процент обаче (над 30%) обикновенно клиентите се усещат и просто си спират свалящите се работи.</p>
<p><strong>Малко по-подробни статистики</strong><br />
Ако статистиките от mrtg не са ви достатъчни може да използвате ipaudit-web. Като цяло е доста добър софтуер, вади прилични статистики, но за съжаление е малко натоварващ.</p>
<p>За момента това са работите за които се сещам. Всеки който иска нека публикува и своите дребни трикове в коментарите. Ще се постарая да ги интегрирам.</p>
<p><strong>Сървър за точно време</strong><br />
Това е едно удобство за клиентската мрежа което може да осигури стабилност на определен тип приложния. Най-вече тези които зависят от точното врем. Освен тях от точно време може да се възползва всеки който иска. Сървърът се реализира посредством пакета ntpd и конфигурацията му е доста семпла и проста</p>
<pre class="brush: plain;"># /etc/ntp.conf, configuration for ntpd
# къде да пазим нашето отместване. Специфична настройка необходима за работа на сървъра
driftfile /var/lib/ntp/ntp.drift
# къде да съхраняваме статистиките
statsdir /var/log/ntp
# какви статистики искаме и точно с какви опции
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example

# pool.ntp.org maps to more than 300 low-stratum NTP servers.
# Your server will pick a different set every time it starts up.
#  *** Please consider joining the pool! ***
#  *** &lt;http ://www.pool.ntp.org/join.html&gt; ***
# да научим нашият сървър къде да пита за точно време
server 0.bg.pool.ntp.org iburst
server 1.bg.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server pool.ntp.org iburst</pre>
<p>Както виждате настройката е пределно проста. Единственото което си струва да се отбележи е че обявяваме времето на всеослушание. Никой не гарантира че то ще бъде използвано, но нека да го има. Ако имаме желание може да уведомим нашите клиенти къде могат да открият нашият сървър за време посредством следните редове в конфигурацията на нашият dhcp сървър (dhcpd):</p>
<pre class="brush: plain;">option time-servers 10.99.3.1;
option ntp-servers 10.99.3.1;</pre>
<p>Трябва също така да се отбележи че за да работи тази услуга, портът на който работи да бъде отворен. Препоръчително е това да стане само за вътрешният интерфес. Портът за който иде реч е 123.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-6/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[<a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/" title="The Perfect SOHO router - Part 5"><img src="http://www.getoto.net/wp-content/uploads/2009/12/pingcheck-ok-150x150.png" alt="" class="feed-image" /></a><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;">&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;">&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;">www-data ALL=(ALL) NOPASSWD: /sbin/mii-tool</pre>
<p><strong>Проверка на използването на паметта</strong><br />
Този скрипт е полезен за проверка на използваната памет. При рутери е особенно важно системата да не използва swap тъй като това краде процесорни цикли и като цяло затормозва машината. За да работи скрипта ни е необходима командата <strong>free</strong></p>
<pre class="brush: php;">&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;">&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 4</title>
		<link>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/</link>
		<comments>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 16:57:58 +0000</pubDate>
		<dc:creator>Владимир</dc:creator>
				<category><![CDATA[Статии]]></category>
		<category><![CDATA[-]]></category>
		<category><![CDATA[arp]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[default]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[FIN]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iproute]]></category>
		<category><![CDATA[iproute2]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[ipv]]></category>
		<category><![CDATA[masquerade]]></category>
		<category><![CDATA[packets]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[quot]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[soho]]></category>
		<category><![CDATA[TCP]]></category>

		<guid isPermaLink="false">http://www.getoto.net/?p=39</guid>
		<description><![CDATA[След като вече сме инсталирали нашият рутер и сме пуснали някои услуги е време да конфигурираме самият процес на рутиране. Това се постига чрез стандартни инструменти като route, iptables, arp, iproute2.

В тази част ще покажем трите най-популярни варианта за конфигуриране на рутирането.]]></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>След като вече сме инсталирали нашият рутер и сме пуснали някои услуги е време да конфигурираме самият процес на рутиране. Това се постига чрез стандартни инструменти като route, iptables, arp, iproute2.</p>
<p>В тази част ще покажем следните варианти:</p>
<ul>
<li>Прост елементарен рутер &#8211; това е най елементарният но за сметка на това не предлага кой знае какви възможности</li>
<li>Рутер който изпълнява NAT/masquerade и firewall функции &#8211; това е може би най-разпространеният вариант.</li>
<li>Рутер който изпълнява баланс на трафика от два или повече доставчика &#8211; това вече е по-напреднала тема но въпреки всичко има полза от нея.</li>
</ul>
<p>Примерите и конфигурациите ще са доста опростени като ще покажем само скелета на системата, тъй като всеки има различни изисквания. В края на статията ще дам малко връзки с допълнителна информация за четене и помощ.</p>
<p><strong>Прост рутер</strong><br />
При тази ситуация нашият рутер просто развърта тряфика. В общият случай не се прави маскиране или филтрация на трафикатъй като като цяло е решено че не е необходимо. Това решение обикновенно се ползва при големи мрежи просто за да се сегментира мрежата. Постига се особенно елеменарно тъй като изисква включване на една единствена опци в кернела и разрешаването и за изпълнение. Опцията е IP FORWARDING. Може да бъде разрешена по два различни начина:</p>
<ol>
<li>Посредством proc системата (тя е налична при всички случаи):
<pre class="brush: bash;">echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward</pre>
</li>
<li>Посредством sysctl системата (може да не е налична):
<pre class="brush: plain;">sysctl -w net.ipv4.ip_forward=1</pre>
</li>
</ol>
<p>Тази настройка разрешава препращане на пакети между интерфейсите на рутерът ни и така реално го стартираме. Необходимо е тази настройка да бъде сложена на такова място че при стартирането на нашата машина тя да бъде изпълнена автоматично. Добро място за тази настройка е <strong>/etc/rc.local</strong> или отделен файл който се изпълнява съвсем в края на процеса на стартиране.<br />
Както забелязвате това е един много опростен рутер който не предлага почти никакви ползи. За да работи правилно всяка от клиентските машини трябва да има собствен адрес, който е разпознаваем в обхвата на мрежата. Този рутер не изпълнява филтрация и не предпазва по никакъв начин машините зад него. Като цяло това решение е удачно за големи мрежи които искат да сегментират адресното си пространство и които имат сериозен рутер и firewall на входа им.</p>
<p><strong>Рутер който изпълнява NAT/masquerade и firewall функции</strong><br />
Това е може би най-често използваното решение. Предимствата му са че зад един адрес могат да се скрият (маскират) доста олям брой машини (теоретично почти неограничен стига да имаме процесорна мощ).<br />
Конфигурацията за този пример ще изградим при следните предпоставки:</p>
<ul>
<li>Външен интерфейс: <strong>eth0</strong> със съответно назначения му адрес и маска</li>
<li>Вътрешен интерфейс: <strong>eth1</strong> със съответно назначения му адрес и маска</li>
<li>Проста защита от DoS, DDoS атаки и сканиране</li>
<li>Лимит на специфични ICMP заявки</li>
<li>Достъп до http и ssh от външната страна на рутера ни</li>
<li>Достъп до http, ssh, dns, dhcp от вътрешната страна</li>
<li>SNAT за всички клиенти на рутера ни (дори при динамичен адрес)</li>
<li>Препращане на 10 порта за всеки клиент &#8211; за удобство на потребителите ни</li>
<li>Изрична филтрация на част от боклука във външната/вътрешната ни мрежа</li>
</ul>
<p>Темата за ограничения по TTL изрично ще я пропусна. Реализира се просто и има достатъчно документация по въпроса.</p>
<pre class="brush: bash;">#!/bin/bash

# Simple firewalling router
# author: vvitkov
# contact: http://www.getoto.net/az/
#
# Licence: CC NC-BY-SA v3
# Disclaimer: i take no responsibility for the consequences of using or not using this.
# It is up to you to decide what to do with this stuff.
# Please if you use this write me a note and don't remove the author info.

#######
# Settings, vars
#######
echo &quot;Setting Up Variables ...&quot;
IPT=&quot;/sbin/iptables&quot;
if [ -x /sbin/sysctl ] ; then
	SYSCTL=&quot;/sbin/sysctl -w&quot;
fi

# define external interface, ip, mask, broadcast
EXT_IF=&quot;eth0&quot;
EXT_IP=&quot;$(/sbin/ifconfig $EXT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f2 | cut -f1 -d&quot; &quot;)&quot;
EXT_NM=&quot;$(/sbin/ifconfig $EXT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f4 | cut -f1 -d&quot; &quot;)&quot;
EXT_BC=&quot;$(/sbin/ifconfig $EXT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f3 | cut -f1 -d&quot; &quot;)&quot;

# define internal interface, ip, mask, broadcast
INT_IF=&quot;eth1&quot;
INT_IP=&quot;$(/sbin/ifconfig $INT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f2 | cut -f1 -d&quot; &quot;)&quot;
INT_NM=&quot;$(/sbin/ifconfig $INT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f4 | cut -f1 -d&quot; &quot;)&quot;
INT_BC=&quot;$(/sbin/ifconfig $INT_IF | grep &quot;addr:&quot; | cut -d&quot;:&quot; -f3 | cut -f1 -d&quot; &quot;)&quot;
INT_NET=&quot;$INT_IP&quot;/&quot;$INT_NM&quot;

# define the loopback
LO_IF=&quot;lo&quot;
LO_IP=&quot;127.0.0.1&quot;

# define allowed ports
EXT_IN_TCP=&quot;22 80&quot;
EXT_IN_UDP=&quot;33434:33524&quot;

INT_IN_TCP=&quot;22 53 67 68 80&quot;
INT_IN_UDP=&quot;53 67 68 33434:33524&quot;

#######
# Lets go
#######
echo &quot;Tunning ...&quot;
if [ -z $SYSCTL ] ; then
	# stop forwarding
	$SYSCTL net.ipv4.ip_forward=0
	# fix our routing a bit
	$SYSCTL net.ipv4.conf.default.accept_redirects=0
	$SYSCTL net.ipv4.conf.default.accept_source_route=0
	$SYSCTL net.ipv4.conf.default.send_redirects=0
	$SYSCTL net.ipv4.conf.default.rp_filter=1
	# don't log strange packets
	$SYSCTL net.ipv4.conf.default.log_martians=0
	# smurf rpotection
	$SYSCTL net.ipv4.icmp_echo_ignore_broadcasts=1
	$SYSCTL net.ipv4.icmp_ignore_bogus_error_responses=1
	$SYSCTL net.ipv4.conf.default.proxy_arp=0
	# keep quiet about arp requests/answers
	$SYSCTL net.ipv4.conf.default.arp_filter=1
	$SYSCTL net.ipv4.conf.default.arp_announce=2
	$SYSCTL net.ipv4.conf.default.arp_ignore=2
	# set the ttl to a windows like box (additional layer of security)
	$SYSCTL net.ipv4.ip_default_ttl=128
	# recycle fast unused buckets for packet infos
	$SYSCTL net.ipv4.tcp_tw_recycle=1
	$SYSCTL net.ipv4.tcp_tw_reuse=1
	# do not stamp the packets
	$SYSCTL net.ipv4.tcp_timestamps=0
else
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/ip_forward
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/default/accept_redirects
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/default/accept_source_route
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/default/accept_send_redirects
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/conf/default/rp_filter
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/default/log_martians
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/conf/default/proxy_arp
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/conf/default/arp_filter
	echo &quot;2&quot; &gt; /proc/sys/net/ipv4/conf/default/arp_announce
	echo &quot;2&quot; &gt; /proc/sys/net/ipv4/conf/default/arp_ignore
	echo &quot;128&quot; &gt; /proc/sys/net/ipv4/ip_default_ttl
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/tcp_tw_recycle
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/tcp_tw_reuse
	echo &quot;0&quot; &gt; /proc/sys/net/ipv4/tcp_timestamps
fi

# Clear all tables
echo &quot;Start on clean ...&quot;
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

echo &quot;Setting custom chains ...&quot;
$IPT -N bad_packets
$IPT -N bad_tcp_packets
$IPT -N icmp_packets
$IPT -N tcp_in
$IPT -N udp_in
$IPT -N tcp_out
$IPT -N udp_out

echo &quot;Setting some protections ...&quot;
echo &quot;  General&quot;
$IPT -A bad_packets -p ALL -i $EXT_IF -s $INT_NET -j DROP
$IPT -A bad_packets -p ALL -m state --state INVALID -j DROP
$IPT -A bad_packets -p tcp -j bad_tcp_packets
$IPT -A bad_packets -p ALL -j RETURN

echo &quot;  TCP&quot;
$IPT -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A bad_tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A tcp_in -p TCP -s 0/0 --destination-port 113 -j REJECT
$IPT -A bad_tcp_packets -p tcp -j RETURN

echo &quot;  ICMP&quot;
$IPT -A icmp_packets --fragment -p ICMP -j DROP
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -m limit --limit 1/s -j ACCEPT
$IPT -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
$IPT -A icmp_packets -p ICMP -j RETURN

echo &quot;  UDP&quot;
$IPT -A udp_in -p UDP -s 0/0 --dport 137 -j DROP
$IPT -A udp_in -p UDP -s 0/0 --dport 139 -j DROP
$IPT -A udp_in -p UDP -s 0/0 --dport 113 -j REJECT

echo &quot;Filling the chains ...&quot;
echo &quot;  UDP INCOMING&quot;
for PORT in $EXT_IN_UDP ; do
	$IPT -A udp_in -p UDP -i EXT_IF -s 0/0 --dport $PORT -j ACCEPT;
done
for PORT in $INT_IN_UDP ; do
	$IPT -A udp_in -p UDP -i INT_IF -s 0/0 --dport $PORT -j ACCEPT;
done
$IPT -A udp_in -j RETURN

echo &quot;  UDP OUTGOING&quot;
$IPT -A udp_out -p UDP -s 0/0 -j ACCEPT

echo &quot;  TCP INCOMING&quot;
for PORT in $EXT_IN_TCP ; do
	$IPT -A tcp_in -p TCP -i $EXT_IF -s 0/0 --dport $PORT -j ACCEPT
done
for PORT in $INT_IN_TCP ; do
	$IPT -A tcp_in -p TCP -i $INT_IF-s 0/0 --dport $PORT -j ACCEPT
done
$IPT -A tcp_in -p TCP -j RETURN

echo &quot;  TCP OUTGOING&quot;
$IPT -A tcp_out -p TCP -j ACCEPT

echo &quot;  INCOMING&quot;
$IPT -A INPUT -p ALL -i $LO_IF -j ACCEPT
$IPT -A INPUT -p ALL -j bad_packets
$IPT -A INPUT -p ALL -d 224.0.0.1 -j DROP
$IPT -A INPUT -p ALL -i $INT_IF -s $INT_NET -j ACCEPT
$IPT -A INPUT -p ALL -i $INT_IF -d $INT_BC -j ACCEPT
$IPT -A INPUT -p UDP -i $INT_IF --sport 68 --dport 67 -j ACCEPT
$IPT -A INPUT -p ALL -i $EXT_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p ALL -i ! $EXT_IF -m state --state NEW -j ACCEPT
$IPT -A INPUT -p TCP -i $EXT_IF -j tcp_in
$IPT -A INPUT -p UDP -i $EXT_IF -j udp_in
$IPT -A INPUT -p ICMP -i $EXT_IF -j icmp_packets
$IPT -A INPUT -m pkttype --pkt-type broadcast -j DROP

echo &quot;  FORWARD&quot;
$IPT -A FORWARD -p ALL -j bad_packets
$IPT -A FORWARD -p tcp -i $INT_IF -j tcp_out
$IPT -A FORWARD -p udp -i $INT_IF -j udp_out
$IPT -A FORWARD -p ALL -i $INT_IF -j ACCEPT
$IPT -A FORWARD -i $EXT_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p ALL -i $EXT_IF -m state --state NEW -j ACCEPT

echo &quot;  OUTPUT&quot;
$IPT -A OUTPUT -m state -p icmp --state INVALID -j DROP
$IPT -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO_IF -j ACCEPT
$IPT -A OUTPUT -p ALL -s $INT_IP -j ACCEPT
$IPT -A OUTPUT -p ALL -o $INT_IF -j ACCEPT
$IPT -A OUTPUT -p ALL -o $EXT_IF -j ACCEPT

echo &quot;  NAT&quot;
echo &quot;      PORT FORWARDING&quot;
TMP=&quot;`echo $INT_IP | cut -d\. -f1-3`&quot;
for HOST in `seq 2 254` ; do
        PORTR=$((10000+HOST*10)):$((10009+HOST*10))
        echo &quot;   $PORTR for $TMP.$HOST&quot;
        $IPT -A FORWARD -p udp -i $EXT_IF --dport $PORTR -d $TMP.$HOST -j ACCEPT
        $IPT -A FORWARD -p tcp -i $EXT_IF --dport $PORTR -d $TMP.$HOST -j ACCEPT
        $IPT -t nat -A PREROUTING -p udp -i $EXT_IF --dport $PORTR -j DNAT --to $TMP.$HOST
        $IPT -t nat -A PREROUTING -p tcp -i $EXT_IF --dport $PORTR -j DNAT --to $TMP.$HOST
done

$IPT -t nat -A POSTROUTING -o $EXT_IF -j SNAT --to $EXT_IP

if [ -z $SYSCTL ] ; then
	$SYSCTL net.ipv4.ip_forward=1
else
	echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward
fi</pre>
<p>Като цяло това е един относително добър базов firewall. В него има няколко интересни момента а именно:</p>
<ul>
<li>Начинът по който вземаме адресите на мрежовите карти &#8211; както сте забелязали единствените променливи които не се извличат това са имената на интерфейсите. По този начин самият firewall става по гъвкав и приложим за почти всякакъв вид връзки.</li>
<li>Начина по който реализираме маскирането. Правим го със SNAT тъй като той е по лек отколкото MASQUERADE. За хората които ще кажат че при динамични връзки (pppoe, ip идващо от dhcp) това не е подходящо, да по принцип сте прави. Обаче ако използваме възможностите на DHCP клиента/pppoe клиента това може да бъде избегнато. В момента в който нашият адрес бъде подменен можем принудително да изпълним отново нашият firewall и той отново да си вземе правилния адрес и да се оправи както си му е редът.</li>
<li>Начинът по който препращаме портове на машините зад нас &#8211; използвана е конструкция която е валидна само в bash с която да се генерират две числа които използваме за начало и край на обхвата от портове. След това експлицитно ги отваряме във веригата FORWARD макар че това не е строго необходимо и в последствие ги препращаме чрез DNAT.</li>
<li>Обхватът от портове 33434:33524 &#8211; тези портове трябва да са отворени за да работи traceroute</li>
</ul>
<p><strong>Рутер който изпълнява баланс на трафика от два или повече доставчика</strong><br />
Тук ще дадем само частта която реално изпълнява балансирането на трафика. Вземаме пример само с два доставчика, но разширяването на примера не е проблем. Задачата е малко по обемиста тъй като за удобство ще използваме iproute. Самият пакет има доста криптичен синтаксис но след като му свикнете едва ли ще ви се разделя с него.</p>
<p>За да можем да балансираме трафик ни трябват следните инструменти:</p>
<ul>
<li>iproute2</li>
<li>поддръжка в кернела за multipath routing</li>
<li>Компилиран в кернела поне една дисциплина за multipath routing &#8211; аз лично препоръчвам wrr</li>
</ul>
<p>За да можем да използваме имена в конфигурацията е необходимо да ги добавим във файла <strong>/etc/iproute2/rt_tables</strong>. Индексите им са между 2 и 252. Ако ще балансирате повече от 200 доставчика … не четете на правилното място.</p>
<pre class="brush: bash;">#!/bin/bash
#
# Simple balancing router
# author: vvitkov
# contact: http://www.getoto.net/az/
#
# Licence: CC NC-BY-SA v3
# Disclaimer: i take no responsibility for the consequences of using or not using this.
# It is up to you to decide what to do with this stuff.
# Please if you use this write me a note and don't remove the author info.

### Settings
ISP1_NET=&quot;1.2.3.0/24&quot;
ISP1_GW=&quot;1.2.3.1&quot;
ISP1_IF=&quot;eth1&quot;
ISP1_OUR_HOST=&quot;1.2.3.99&quot;
ISP2_NET=&quot;9.8.7.0/24&quot;
ISP2_GW=&quot;9.8.7.1&quot;
ISP2_IF=&quot;eth2&quot;
ISP2_OUR_HOST=&quot;9.8.7.99&quot;

INT_NET=&quot;10.42.3.0/24&quot;

# Defining routing tables for source routing
if ( ip ru ls | grep main | grep 50 )
then
        ip r f t main
else
        ip ru a prio 50 t main
fi

if ( ip ru ls | grep isp_rules1 )
then
        ip r f t isp_rules1
else
        ip ru a from $ISP1_NET prio 201 t isp_rules1
fi

if ( ip ru ls | grep isp_rules2 )
then
        ip r f t isp_rules2
else
        ip ru a from $ISP2_NET prio 202 t isp_rules2
fi

# Clear all the existing routes
ip r f any
ip r f t default

# Host routes
ip r a $ISP1_NET dev $ISP1_IF src $ISP1_OUR_HOST
ip r a $ISP2_NET dev $ISP2_IF src $ISP2_OUR_HOST

# Local networks
ip r a 127.0.0.0/8 dev lo
ip r a $INT_NET dev eth0

# Default gateways
ip r a 0/0 via $ISP1_GW dev $ISP1_IF table isp_rules1 proto static
ip r a prohibit 0/0 table isp_rules1 metric 1 proto static

ip r a 0/0 via $ISP2_GW dev $ISP2_IF table isp_rules2 proto static
ip r a prohibit 0/0 table isp_rules2 metric 1 proto static

# lets shake it :)
ip r a 0/0 proto static table default nexthop via $ISP1_GW dev $ISP2_IF nexthop via $ISP2_GW dev $ISP2_IF

# Remote networks with static routes
ip r a &lt; NETWORK IN ISP1 &gt; via $ISP1_GW dev $ISP1_IF
ip r a &lt; NETWORK IN ISP2 &gt; via $ISP2_GW dev $ISP2_IF

# flush caches
ip r f c</pre>
<p>С това завършват примерите за конфигуриране на рутер. Знам че не са покрити всички възможности, но човек трябва да се потруди малко.</p>
<p>Серията продължава в <a href="http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-5/">The Perfect SOHO router &#8211; Part 5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.getoto.net/2009/12/06/the-perfect-soho-router-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
