<?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>Leoman's blog</title>
	<atom:link href="http://leoman.gen.tr/feed/" rel="self" type="application/rss+xml" />
	<link>http://leoman.gen.tr</link>
	<description>bi blög</description>
	<lastBuildDate>Mon, 28 Feb 2011 06:55:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>BIND ile DNS bölümleme (Split DNS)</title>
		<link>http://leoman.gen.tr/2011/02/bind-ile-dns-bolumleme-split-dns/</link>
		<comments>http://leoman.gen.tr/2011/02/bind-ile-dns-bolumleme-split-dns/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 22:20:41 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[linkedin]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=267</guid>
		<description><![CDATA[Bildiğiniz üzere BIND dünya üzerinde en çok kullanılan ve popüler olan DNS sunucusudur. Bu üstünlük Domain Name System [1] protokolünün ortaya koyulduğu 1983 yılınını takip eden 1984 yılında geliştirilmeye başlanmış olması gibi gözükse de bu kadarla da sınırlı değildir. Bu popülerliğin arkasında yatan etkenlerden biri de yeterince esnek bir yapıya sahip olmasından da geliyor. Esnek [...]]]></description>
			<content:encoded><![CDATA[<p>Bildiğiniz üzere BIND dünya üzerinde en çok kullanılan ve popüler olan DNS sunucusudur. Bu üstünlük Domain Name System <strong>[1] </strong>protokolünün ortaya koyulduğu 1983 yılınını takip eden 1984 yılında geliştirilmeye başlanmış olması gibi gözükse de bu kadarla da sınırlı değildir. Bu popülerliğin arkasında yatan etkenlerden biri de yeterince esnek bir yapıya sahip olmasından da geliyor.</p>
<p><strong>Esnek derken?</strong><br />
 Esnek bir yapı derken BIND size neler sağlayabilir? Daha önceki blog girdilerimden birinde bahsettiğim gibi mysql-bind <strong>[2]</strong> gibi bir veritabanı sürücüsü ile zone&#8217;larınızı MySQL üzerinde tutabilirsiniz. Yine Dynamically Loadable Zones <strong>[3] </strong>(DLZ) ile farklı veri kaynakları üzerinde (MySQL, PostgreSQL, File system, ODBC, LDAP) zone&#8217;larınızı saklayabilirsiniz. DNS Spliting ile isteyeceğiniz herhangi bir kaynağa isteyeceğiniz herhangi bir cevabı döndürebilirsiniz.</p>
<p><strong>Split DNS mi?</strong><br />
 Çok basit bir değiş ile aynı alan adı için yapılan DNS sorgulamasında isteği yapan kaynak IP adreslerine göre değişik IP cevapları verme işlemine split-horizon/split-view/split-brain <strong>[4]</strong> DNS adını veriyoruz. Bir çok DNS sununucu tarafından desteklenen bu metot <strong>[5]</strong> BIND&#8217;ın içerisinde de ön tanımlı olarak desteklenmektedir.</p>
<p><strong>Nasıl?</strong></p>
<p>Bind konfigrasyonu içerisinde bunu anlatan ifade &#8220;view&#8221;&#8216;dır. Oluşturacağınız view bloklarına göre <strong>[6]</strong> istediğiniz kaynaklara istediğiniz cevapları döndürebilirsiniz.</p>
<p><code lang="apache[lines-notools]">view "local" {<br />
	match-clients { 192.168.0.0/24; };<br />
	recursion yes;<br />
	.<br />
	.<br />
	.<br />
	.<br />
	zone "domain.tld" {<br />
		type master;<br />
		file "virt/db.domain.tld.conf.local";<br />
	};<br />
};<br />
view "others" {<br />
	match-clients { any; };<br />
	recursion no;<br />
	.<br />
	.<br />
	.<br />
	.<br />
	.<br />
 	zone "domain.tld" {<br />
 		type master;<br />
 		file "virt/db.domain.tld.conf";<br />
 	};<br />
 };</code></p>
<p>Bunun gibi bir named.conf konfigürasyonu ile yapılandıracağımız DNS sunucumuza 192.168.0 ile başlayan bir client&#8217;tan gelecek istek dahilinde db.domain.tld.conf.local konfigürasyon dosyamızın içerindeki zone tanımlamaları geçerli olacak ve bu clientlar aynı zamanda recursive query&#8217;ler için de kullanabilecekler, bunun haricinde olan tüm IP adresleri bu DNS sunucuya recursive query&#8217;ler için kullanmazkan domain.tld isteklerinde db.domain.tld.conf konfigürasyon dosyası içerisinde tanımlı olan zone&#8217;lara göre cevap alacaklar.</p>
<p> Daha düzenli konfigürasyon ve daha anlaşılır olması için şöyle bir örnek senaryo çizebiliriz. Elimizde Internet üzerinde çalışacak bir proje geliştiren bir ekip bütünü var. İki farklı lokasyonda VPN ile birbirine bağlı ve ofisler birbirine erişebiliyor. Ekip aynı ofisi paylaşan yazılım geliştiriciler ve geliştiricilerin kullandığı sunucu, geliştiriciler ile aynı ofisi paylaşan test ekibi, ikinci lokasyonda bulunan pre-live izleyicileri ve yine ikinci lokasyonda bulunan test ekibi.<br />
 Bu coğrafik olarak dağıtık fakat aynı network içinde çalışan ofis örneğinde dev.newapp.com&#8217;a istek gönderen her ekibin farklı sunucuya erişmesini şu şekilde sağlarız.</p>
<p><a href="http://leoman.gen.tr/files/2011/02/DNSSplit.jpg"><img class="alignnone size-medium wp-image-271" title="DNSSplit" src="http://leoman.gen.tr/files/2011/02/DNSSplit-300x198.jpg" alt="" width="300" height="198" /></a></p>
<p> Öncelikle DNS sunucumuza bir Access Control List (ACL)&#8217;leri (istek yapan IP kaynaklarını belirleyen) alt bir konfigürasyon dosyası oluşturmakla başlayalım.&nbsp; Bunun için /etc/bind9/named.conf.acls adında bir dosya oluşturarak içerisine ilgili acl listelerini oluşturuyoruz.</p>
<p><code lang="apache[lines-notools]">acl "developers" {<br />
 	#developerlara ait IP blogu<br />
 	192.168.0.0/26;<br />
};<br />
acl "testers" {<br />
 	#ofis 1 test ekibine ait IP blogu<br />
 	192.168.0.64/26;<br />
 	#ofis 2 test ekibine ait IP blogu<br />
 	192.168.1.128/26;<br />
};<br />
acl "managers" {<br />
	#sirket yoneticilerin ait ip blogu<br />
 	192.168.1.0/26;<br />
}; </code></p>
<p>Bu işlemin ardından sırasıyla zone detaylarının yer alacağı konfigürasyon dosyalarını yaratıyoruz.</p>
<p><code lang="apache[lines-notools]">/* db.dev.newapp.com.developers */<br />
dev.newapp.com.        	600   IN      SOA     nsdev.newapp.com. sysadm.newapp.com. (<br />
                         2011022101 ; Serial<br />
                         600 ; Refresh<br />
                         600 ; Retry<br />
                         600 ; Expire<br />
                         600 ); Negative Cache TTL ;<br />
                IN      NS      nsdev.newapp.com.<br />
		IN      A       192.168.0.128<br />
www		IN      A       192.168.0.128 </code></p>
<p><code lang="apache[lines-notools]">/* db.dev.newapp.com.testers */<br />
dev.newapp.com.        	600   IN      SOA     nsdev.newapp.com. sysadm.newapp.com. (<br />
                         2011022101 ; Serial<br />
                         600 ; Refresh<br />
                         600 ; Retry<br />
                         600 ; Expire<br />
                         600 ); Negative Cache TTL ;<br />
                IN      NS      nsdev.newapp.com.<br />
		IN      A       88.88.88.88<br />
www		IN      A       88.88.88.88</code></p>
<p><code lang="apache[lines-notools]">/* db.dev.newapp.com.prelive */<br />
dev.newapp.com.        	600   IN      SOA     nsdev.newapp.com. sysadm.newapp.com. (<br />
                         2011022101 ; Serial<br />
                         600 ; Refresh<br />
                         600 ; Retry<br />
                         600 ; Expire<br />
                         600 ); Negative Cache TTL ;<br />
                IN      NS      nsdev.newapp.com.<br />
		IN      A       88.88.88.99<br />
www		IN      A       88.88.88.99 </code></p>
<p>Bu dosyaların arından varolan named.conf&#8217;unuzunu içerisine öncelikle named.conf.acls dosyasını include etmeniz ve her üç durum için de ayrı bir view eklemeniz yeterli olacaktır.</p>
<p><code lang="apache[lines-notools]">view "developers-view" {<br />
  	match-clients { "developers"; };<br />
	zone "dev.newapp.com" {<br />
 		type master;<br />
 		file "db.dev.newapp.com.developers";<br />
 	};<br />
};<br />
view "testers-view" {<br />
	match-clients { "testers"; };<br />
  	zone "dev.newapp.com" {<br />
 		type master;<br />
 		file "db.dev.newapp.com.testers";<br />
 	};<br />
};<br />
view "prelive-view" {<br />
  	match-clients { "managers"; };<br />
 	 	zone "dev.newapp.com" {<br />
 		type master;<br />
 		file "db.dev.newapp.com.prelive";<br />
 	};<br />
};</code></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>[1] <a href="http://tr.wikipedia.org/wiki/DNS" target="_blank">http://tr.wikipedia.org/wiki/DNS</a><br />
 [2] <a href="http://mysql-bind.sourceforge.net/" target="_blank">http://mysql-bind.sourceforge.net/</a><br />
 [3] <a href="http://bind-dlz.sourceforge.net/" target="_blank">http://bind-dlz.sourceforge.net/</a><br />
 [4] <a href="http://en.wikipedia.org/wiki/Split-horizon_DNS" target="_blank">http://en.wikipedia.org/wiki/Split-horizon_DNS</a><br />
 [5] <a href="http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software#Feature_matrix" target="_blank">http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software#Feature_matrix</a><br />
 [6] <a href="http://www.isc.org/files/arm96.html#id2549625" target="_blank">http://www.isc.org/files/arm96.html#id2549625</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2011/02/bind-ile-dns-bolumleme-split-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bu işin eğlencesi nereden geliyor?</title>
		<link>http://leoman.gen.tr/2011/02/bu-isin-eglencesi-nereden-geliyor/</link>
		<comments>http://leoman.gen.tr/2011/02/bu-isin-eglencesi-nereden-geliyor/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 22:32:45 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[freesoftware]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[optimizasyon]]></category>
		<category><![CDATA[sistem yönetimi]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=260</guid>
		<description><![CDATA[Kısa bir süreden beri sosyal medyada neler olup bittiğini takip etmeye vakit bulamıyorum. Sabah en azından okunmamış rss feed&#8217;lerin bir kısmını temizleyebilmek adına Google Reader&#8217;ı gözden geçirmekle başlayan günüm sosyal medya ile devam etti. Takip ettiğim insanları okurken Özgür Demir&#8217;in comment&#8217;leri bol sayılabilecek şu feed&#8217;ine http://ff.im/y2f2v denk geldim. Ki bu feed birbirinden bağımsız birden fazla [...]]]></description>
			<content:encoded><![CDATA[<p>Kısa bir süreden beri sosyal medyada neler olup bittiğini takip etmeye vakit bulamıyorum. Sabah en azından okunmamış rss feed&#8217;lerin bir kısmını temizleyebilmek adına Google Reader&#8217;ı gözden geçirmekle başlayan günüm sosyal medya ile devam etti. </p>
<p> Takip ettiğim insanları okurken Özgür Demir&#8217;in comment&#8217;leri bol sayılabilecek şu feed&#8217;ine <a href="http://ff.im/y2f2v" target="_blank">http://ff.im/y2f2v</a> denk geldim. Ki bu feed birbirinden bağımsız birden fazla konu da barındırıyor. Yorumları takip edereken Özgür&#8217;ün ek$i üzerinden ki bir entry&#8217;sinde de <a href="http://goo.gl/GsD9v" target="_blank">http://goo.gl/GsD9v</a> enteresan bilgiler yer alıyor. Bu yazıyı okuduktan sonra friendfeed&#8217;e geri dönüp yorumlara devam edince karşınıza çıkan diğer bir olay ise yeni adıyla <a href="http://stackexchange.com/" target="_blank">StackExchange</a>&#8216;in güncellemiş olduğu altyapı bilgisi <a href="http://goo.gl/M5iRt" target="_blank">http://goo.gl/M5iRt</a> ve kabaca istatistikler oluyor. </p>
<p> Bir anda kendimi sistem yönetciliğini yapmış olduğum bir önceki portalla mukayese ederken buldum ve ortaya enteresan bir sonuç çıkardım. Bilgilerin gizliliğinden dolayı net rakamlar veremesem de kabaca ortaya çıkan sonuca göre LAMP üzerinde hayatına devam eden bu portalda yarıya yakın (hatta daha az) donanım ile kabaca 4 katına yakın iş yaptığımız sonucu çıkıyor. Vermiş oldukları raporun altındaki yorumları takip ederken başka bir blog girdisinin linkinde <a href="http://goo.gl/wTUzD" target="_blank">http://goo.gl/wTUzD</a> ise CPU kullanımlarına ait Cacti grafiklerine rastlayıp üç aşağı beş yukarı fikir sahibi olabiliyorum. </p>
<p> Olayın keyif veren kısmı sadece daha az donanım ile daha çok iş yapmak ta değil. Kapalı olmayan sistemleri kullanmamnın getirdiği bir sürü yan avantaj da işin eğlenceye dönen kısmı olabiliyor. Örneğin;</p>
<ul>
<li>Kapalı işletim sistemlerinde müdahale edemeyeceğiniz ufacık bir işletim sistemi optimizasyonu ile SAN üzerinde %9.6 IO düşüşü ve %4 PV artışı sağlamak.</li>
<li>Kara kutu gibi kendini saklayan bir RDBMS yerine size tüm olanaklarını sunan diğer seçenek ile yaptığınız ufak tricky optimizasyon sayesinde QPS&#8217;inizin %6 arttırabilmek ve yine bunun PV&#8217;nize olan etkisini (%3) görebilmek.</li>
<li>Problem çözmek için ekstradan satın almanız gereken yazılımlar yerine yine farklı gruplar tarafından geliştirilen tool&#8217;ları kullanabilmek. </li>
<li>Herhangi bir büyüme anında &#8220;acaba nasıl lisanslanacak?&#8221;, &#8220;lisans maliyetlerimiz ne olacak?&#8221;, &#8220;lisanslama modelimiz değişecek mi?&#8221;, &#8220;mümkün mü?&#8221;, &#8220;bu lisansları bir daha ne zaman yenilememiz gerekecek, ne kadar sürelik bir yatırım&#8221; gibi cevaplanması zor sorulara maruz kalmak, büyümenin nasıl yapılacağı ve mümkün olup olmadığını kısıtlı dökümantasyonlardan çıldırarak ya da dene, yanıl, destek al, sürecin ilerlemesini bekle gibi sıkıntıları çekmektense sadece konu ile ilgili dökümantasyonları ve varsa paylaşılmış deneyimleri okuyarak işi planlayıp hızlıca uygulamaya geçebilmek.</li>
</ul>
<p>
 olabilir. Durum spesifik bir sürü örnekle anlatabileceğim hikayemin olması bile bana ayrı zevk veriyor. Zannedersem sürekli paranoya derecesinde tespitler ve çözümlerinden dolayı mesleğimi seviyorum. Her ne kadar şu anda hayatına online olarak devam eden bir organizmadan uzak olsam da yine de benim için kürkçü dükkanı olacak diye tahmin ediyorum.</p>
<p> Notun bonusu: Open source&#8217;da, Free software&#8217;de bir güç var, evet.</p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2011/02/bu-isin-eglencesi-nereden-geliyor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Parallels Plesk Asp.NET MVC2 &#8216;Access is denied&#8217; hatası</title>
		<link>http://leoman.gen.tr/2011/01/parallels-plesk-asp-net-mvc2-access-is-denied-hatasi/</link>
		<comments>http://leoman.gen.tr/2011/01/parallels-plesk-asp-net-mvc2-access-is-denied-hatasi/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 11:35:39 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[parallels]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=232</guid>
		<description><![CDATA[Plesk yüklü sunucunuza Asp.NET MVC2 yükledikten sonra applicationlar üzerinde aşağıdaki gibi bir hata almanız olasıdır. Server Error in &#8216;/&#8217; Application Access is denied. (Exception from HRESULT: 0&#215;80070005 (E_ACCESSDENIED)) Could not load file or assembly &#8216;System.ServiceModel, Version=3.0.0.0 Culture&#8230;.. Bunun nedeni MVC ile yüklenen assembly&#8217;lerin Microsoft.NET kurulum dizini yerine %windir%\assembly içerisinde olmasındandır. Bu dizine gerekli izinlerin verilmesi [...]]]></description>
			<content:encoded><![CDATA[<p>
Plesk yüklü sunucunuza Asp.NET MVC2 yükledikten sonra applicationlar üzerinde aşağıdaki gibi bir hata almanız olasıdır.
</p>
<p>
<strong><font color="red">Server Error in &#8216;/&#8217; Application</font></strong>
</p>
<p><strong>Access is denied. (Exception from HRESULT: 0&#215;80070005 (E_ACCESSDENIED))</strong> </p>
<p>
<strong>Could not load file or assembly &#8216;System.ServiceModel, Version=3.0.0.0 Culture&#8230;..</strong>
</p>
<p>
Bunun nedeni MVC ile yüklenen assembly&#8217;lerin Microsoft.NET kurulum dizini yerine %windir%\assembly içerisinde olmasındandır.<br />
Bu dizine gerekli izinlerin verilmesi için %plesk_dir%\etc\DiskSecurity\DiskSecurity.xml içerisine <Entries></Entries> tagleri arasına aşağıdaki satırları ekleyerek Plesk Reconfigurator Tool içerisinden Correct disk permissions&#8217;ı çalıştırmak bu problemi çözmek için yeterli olacaktır.
</p>
<p><code lang="xml"><Entry AccounType="1" Account="Psacln" Path="C:\Windows\assembly" AceFlags="FilesOnly" AccessMask="Read" EntryFlags="0x0" /></code></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2011/01/parallels-plesk-asp-net-mvc2-access-is-denied-hatasi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallels Plesk Windows üzerinde MS DNS problemi</title>
		<link>http://leoman.gen.tr/2010/12/parallels-plesk-windows-uzerinde-ms-dns-problemi/</link>
		<comments>http://leoman.gen.tr/2010/12/parallels-plesk-windows-uzerinde-ms-dns-problemi/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 13:53:23 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[parallels]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=219</guid>
		<description><![CDATA[Windows 2008 üzerinde Parallels Plesk kurulumu yaptınız ve standart olarak gelen DNS sunucu olan Bind&#8217;ı Microsoft DNS Server ile değiştirmek istiyorsanız bu işlemi yaptığınızda ya da DNS ile ilgili bir işlem yapmak istediğinizde; dnsmng.exe REMOVE * also worked without any errors Benzeri bir hata almanız olasıdır. Aynı hatanın farklı versiyonlarını yine DNS ile ilgili işlemler [...]]]></description>
			<content:encoded><![CDATA[<p>Windows 2008 üzerinde Parallels Plesk kurulumu yaptınız ve standart olarak gelen DNS sunucu olan Bind&#8217;ı Microsoft DNS Server ile değiştirmek istiyorsanız bu işlemi yaptığınızda ya da DNS ile ilgili bir işlem yapmak istediğinizde; </p>
<blockquote><p><em>dnsmng.exe REMOVE * also worked without any errors</em></p></blockquote>
<p>Benzeri bir hata almanız olasıdır. Aynı hatanın farklı versiyonlarını yine DNS ile ilgili işlemler sırasında almanız mümkündür.</p>
<p>Bu problemi MS tarafından yayınlanmış &#8220;Visual C++ 2005 Redistributable Package ATL Security Update&#8221;  paketi ve Parallels&#8217;in yeniden yayınladığı bir DLL&#8217;i güncelleyerek çözebilirsiniz .</p>
<p>Bunun için Microsoft download sayfasından linkteki dosyayı indirerek yüklemeniz; </p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&#038;displaylang=en">http://www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&#038;displaylang=en</a></p>
<p>Arından da %plesk_bin%\MsProv.dll dosyasını Plesk sürümünüze uygun olanla (her ihtimale karşın eski dosyayı yedeklemeyi unutmayınız) değiştirmeniz yeterli olacaktır. </p>
<p><strong>Plesk 8.6;</strong><br />
<a href="http://kb.parallels.com/Attachments/13357/Attachments/MsProv86.zip">http://kb.parallels.com/Attachments/13357/Attachments/MsProv86.zip</a><br />
<strong>Plesk 9.0-9.3;</strong><br />
<a href="http://kb.parallels.com/Attachments/13357/Attachments/MsProv.dll.900-930.zip">http://kb.parallels.com/Attachments/13357/Attachments/MsProv.dll.900-930.zip</a></p>
<p><strong>Plesk 9.5;</strong><br />
<a href="http://kb.parallels.com/Attachments/13357/Attachments/MsProv.950.zip">http://kb.parallels.com/Attachments/13357/Attachments/MsProv.950.zip</a> </p>
<p>
<strong>Dökümanın orjinali için;</strong></p>
<p><a href="http://kb.parallels.com/en/8652">http://kb.parallels.com/en/8652</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/12/parallels-plesk-windows-uzerinde-ms-dns-problemi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hyper-V üzerine Debian Lenny kurulumu</title>
		<link>http://leoman.gen.tr/2010/07/hyper-v-uzerine-debian-lenny-kurulumu/</link>
		<comments>http://leoman.gen.tr/2010/07/hyper-v-uzerine-debian-lenny-kurulumu/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 18:49:02 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[hyper-v]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=182</guid>
		<description><![CDATA[Hyper-V üzerinde Lenny guest kurulumu yapacaksanız dikkat etmeniz gereken sadece iki ufak nokta vardır. Bunlardan birincisi Lenny üzerinde henüz default kernel 2.6.26 olduğu için Hyper-V tarafından sağlanan synthetic device&#8217;lar ile konuşamamktadır (kernel 2.6.32 upgrade&#8217;i ile de bunu aşabilirsiniz). Bunun için sanal makineye normal bir ethernet kartı değil &#8220;Legacy Network Adapter&#8221; eklemeniz gerekmektedir. Böylece problemsiz olarak [...]]]></description>
			<content:encoded><![CDATA[<p>Hyper-V üzerinde Lenny guest kurulumu yapacaksanız dikkat etmeniz gereken sadece iki ufak nokta vardır. </p>
<p>Bunlardan birincisi Lenny üzerinde henüz default kernel 2.6.26 olduğu için Hyper-V tarafından sağlanan synthetic device&#8217;lar ile konuşamamktadır (kernel 2.6.32 upgrade&#8217;i ile de bunu aşabilirsiniz). Bunun için sanal makineye normal bir ethernet kartı değil &#8220;Legacy Network Adapter&#8221; eklemeniz gerekmektedir.</p>
<p><img src="http://leoman.gen.tr/files/2010/07/hypervdebeth.jpg" alt="" /></p>
<p>Böylece problemsiz olarak ethernet kartlarını kullanmaya başlayabilirsiniz.</p>
<p>&nbsp;</p>
<p>Bir diğer problem ise öntanımlı olarak framebuffer device&#8217;tan dolayı installer ekranlarının geç render olması. Bunun için boot etmeden önce fb=off parametresi ile framebuffer device&#8217;ı disable edebilir ve console ortamında daha rahat çalışabilirsiniz.</p>
<p><img src="http://leoman.gen.tr/files/2010/07/download-1.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/07/hyper-v-uzerine-debian-lenny-kurulumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian üzerinden MySQL back-end&#8217;e sahip Bind yapılandırmak</title>
		<link>http://leoman.gen.tr/2010/06/debian-uzerinden-mysql-back-ende-sahip-bind-yapilandirmak/</link>
		<comments>http://leoman.gen.tr/2010/06/debian-uzerinden-mysql-back-ende-sahip-bind-yapilandirmak/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 17:14:26 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=168</guid>
		<description><![CDATA[Dağıtık projelerde genellikle yaşanılan sıkıtılardan biri kullanmış olduğunuz yazılımların yapıları gereği bir API&#8217;ye sahip olmamasından kaynaklanmaktadır. Bununla beraber yazılımların izin verdiği derece alt arayüzler ve genellikle ek yazılımlar üreterek çözümler geliştirilir. Örneğin multi node&#8217;dan oluşan bir web-host farm&#8217;ında her noktadan gelecek değişilikleri bind üzerinde güncellemek/eklemek istiyorsunuz. Bunun için ya bir veritabanı üzerinden çalışan bir queue [...]]]></description>
			<content:encoded><![CDATA[<p>Dağıtık projelerde genellikle yaşanılan sıkıtılardan biri kullanmış olduğunuz yazılımların yapıları gereği bir API&#8217;ye sahip olmamasından kaynaklanmaktadır. Bununla beraber yazılımların izin verdiği derece alt arayüzler ve genellikle ek yazılımlar üreterek çözümler geliştirilir.</p>
<p>Örneğin multi node&#8217;dan oluşan bir web-host farm&#8217;ında her noktadan gelecek değişilikleri bind üzerinde güncellemek/eklemek istiyorsunuz. Bunun için ya bir veritabanı üzerinden çalışan bir queue mantığı ile yönetmeniz ya da bu işi yapan bir RPC Interface ile gerçekleştirmeniz gerekecektir.</p>
<p>Bunun yerine diğer bir seçenek ise Bind&#8217;ın config dosyaları üzerinde değişiklik yapmaktan ziyade daha pratik bir uygulamaile host detay kayıtlarının MySQL üzerinde tutulduğu ve anlık olarak buradan değiştirildiği bir DNS sunucuya sahip olmak olabilir.</p>
<p>Bunun için sourceforge üzerinde yayınlan <a href="http://mysql-bind.sourceforge.net/">mysql-bind</a> adlı projeyi kullanabiliriz. Debian bir sistem üzerinde yapmamız gereken adımlar şu adımlardan oluşmaktadır;</p>
<p>İşleme gerekli paketlerin yüklenmesi ile başlayalım;</p>
<p><code lang="bash">cd /usr/src<br />
apt-get install mysql-server libmysqlclient15-dev<br />
apt-get install build-essential<br />
apt-get install libssl-dev libtool libdb-dev libldap2-dev libxml2-dev libcap2-dev hardening-wrapper libkrb5-dev debhelper fakeroot bison</code></p>
<p>Bu işlem sırasında MySQL size bir root parolası soracaktır. Belirlemiş olduğunuz bu parola tüm MySQL yönetimsel işlemlerinde kullanılacağından sağlam ve unutmayacağınız bir parola vermeniz gerekmektedir.</p>
<p>Bundan bir sonraki adımda bind source ve bind-mysql&#8217;i edinmek;</p>
<p><code lang="bash">apt-get source bind9<br />
wget http://downloads.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz?use_mirror=garr<br />
tar zxf mysql-bind.tar.gz<br />
</code></p>
<p>mysql-bind kodunu bind&#8217;a ekliyoruz;</p>
<p><code lang="bash">cd mysql-bind<br />
cp mysqldb.c ../bind9-9.5.1.dfsg.P3/bin/named/<br />
cp mysqldb.h ../bind9-9.5.1.dfsg.P3/bin/named/include/named/<br />
cd ../bind9-9.5.1.dfsg.P3/<br />
</code></p>
<p>Bind&#8217;a Database driver&#8217;ını ekelemek için gerekli bilgileri MySQL&#8217;den almamız gerekiyor. Bu komutların vermiş olduğu çıktıları bir kenara not etmemiz gerekmektedir.</p>
<p><code lang="bash">mysql_config --cflags<br />
mysql_config --libs<br />
cd ../bind9-9.5.1.dfsg.P3/<br />
nano bin/named/Makefile.in<br />
</code></p>
<p>Açılan dosyamız içerisinde DBDRIVER_OBJS yazan satıra gitmemiz gerekiyor. Bu satırda yer alan değişkenleri aşağıdaki gibi doldurmamız gerekiyor;</p>
<p><code lang="c"><br />
DBDRIVER_OBJS =<br />
DBDRIVER_SRCS =<br />
DBDRIVER_INCLUDES =<br />
DBDRIVER_LIBS =</code></p>
<p><code lang="c"><br />
DBDRIVER_OBJS = mysqldb.@O@<br />
DBDRIVER_SRCS = mysqldb.c<br />
DBDRIVER_INCLUDES = -I'/usr/include/mysql' //mysql_config --cflags ciktisi<br />
DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient //mysql_config --libs ciktisi<br />
</code></p>
<p>dosyayı kaydederek kapatıyoruz.</p>
<p>Bir sonraki aşamada ise bind&#8217;ın MySQL bağlantısını açabilmesini sağlamak için gerekli eklemeleri bin/named/main.c içinde değişiklik yapmamız gerekiyor.</p>
<p><code lang="bash"><br />
nano bin/named/main.c<br />
</code></p>
<p>Dosya içerisinde öncelikle mysqldb header dosyasının dahil olmasını ardından ns_server_create fonksiyonunun çağırıldığı satırın öncesine mysqldb_init(); ekleyerek veritabanı bağlantısının yapılmasını, ns_server_destroy fonsksiyonundan hemen sonraki satırda mysqldb_clear(); ile açılan bağlantının kapatılmasını sağlamamız gerekiyor.</p>
<p><code lang="c">#include <dns/view.h><br />
/*<br />
*<br />
*<br />
*/</p>
<p>#include <dst/result.h></p>
<p>#include "bin/named/include/named/mysqldb.h"</p>
<p>/*<br />
*<br />
*<br />
*/</p>
<p>#endif</p>
<p>mysqldb_init();<br />
ns_server_create(ns_g_mctx, &amp;ns_g_server);<br />
}</p>
<p>/*<br />
*<br />
*<br />
*<br />
*/</p>
<p>destroy_managers();</p>
<p>ns_server_destroy(&#038;ns_g_server);<br />
mysqldb_clear();</p>
<p>ns_builtin_deinit();<br />
</code></p>
<p>
Artık hazırlamış olduğumuz yapılandırmayı bir debian paketi haline getirebilir ve oluşturduğumuz paketleri yükleyebiliriz.
</p>
<p><code lang="bash"><br />
dpkg-buildpackage -rfakeroot -b<br />
cd ..<br />
dpkg -i *.deb<br />
</code></p>
<p>Bu işlemden sonra bind&#8217;ı durdurarak MySQL üzerinde gerekli kullanıcı ve tablolaları yaratıroyuruz;</p>
<p><code lang="bash"><br />
/etc/init.d/bind stop<br />
mysql -u root -p<br />
</code></p>
<p><code lang="sql"><br />
CREATE DATABASE dns;<br />
CREATE USER 'dnsuser'@'localhost' IDENTIFIED BY 'password';<br />
GRANT SELECT ON dns.* TO 'dnsuser'@'localhost';</p>
<p>CREATE TABLE mydomains (<br />
name varchar(255) default NULL,<br />
ttl int(11) default NULL,<br />
rdtype varchar(255) default NULL,<br />
rdata varchar(255) default NULL<br />
) TYPE=MyISAM;</p>
<p>INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'SOA', 'mydomain.com. www.mydomain.com. 200309181 28800 7200 86400 28800');<br />
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.');<br />
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.');<br />
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.');<br />
INSERT INTO mydomains VALUES ('ns0.mydomain.com', 259200, 'A', '192.168.1.1');<br />
INSERT INTO mydomains VALUES ('ns1mydomain.com', 259200, 'A', '192.168.1.1');<br />
INSERT INTO mydomains VALUES ('www.mydomain.com', 259200, 'A', '192.168.1.1');<br />
INSERT INTO mydomains VALUES ('mydomain.com', 259200, 'A', '192.168.1.1');<br />
</code></p>
<p>
Hem kullanacağımız veritabanı hem de örnek bir domain için gerekli kayıtları oluşturmuş olduk. Artık sadece named.conf&#8217;a bu domain&#8217;i belirterek bind&#8217;ı başlatmamız yeterli olacaktır.
</p>
<p><code lang="bash"><br />
zone "mydomain.com" {<br />
type master;<br />
notify no;<br />
database "mysqldb dns mydomains localhost dnsuser password";<br />
};<br />
</code></p>
<p>Konsoldan nslookup ile sorguladığınızda dns sunucunuzun verdiği sonuçları kontrol edebilirsiniz;</p>
<p><code lang="bash"><br />
&gt;nslookup<br />
&gt;server 127.0.0.1<br />
Default server: 127.0.0.1<br />
Address: 127.0.0.1#53<br />
&gt;www.mydomain.com<br />
Server:         127.0.0.1<br />
Address:        127.0.0.1#53</code></p>
<p>Non-authoritative answer:<br />
Name:   www.mydomain.com<br />
Address: 192.168.1.1<br />
</code></p>
<p>
Ve işte artık zone kayıtlarını MySQL üzerinde tutan bir bind sunucuya sahip durumdayız.</p>
<p><strong>Not: </strong></p>
<ul>
<li>Boot sırasında MySQL sunucunun bind'tan önce başlamak zorunda olduğunu unutmayınız.</li>
<li>Çıkabilecek bind açıklarına karşı bind updatelerini kesinlikle takip etmenizi öneririm.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/06/debian-uzerinden-mysql-back-ende-sahip-bind-yapilandirmak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pedalsesi &#8211; Dünya Bisiklet günü</title>
		<link>http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/</link>
		<comments>http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 17:53:21 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=155</guid>
		<description><![CDATA[Dünya bisiklet ve çevre günü nedeniyle Pedalsesi bisiklet topluluğunun düzenlemiş olduğu Kapılıçınar gezisine katıldım. Katıldığım gezinin rotasındaki doğa güzelliklerine, inişli çıkışlı parkurun seçimine mi, birbirinden sıcakkanlı insanlar tanıdığıma mı yoksa e şıkkı hepsine birden mi sevineyim sık sık şaşırdım. Aslında Pedalsesi topluluğu uzunca bir zamandan beri takip ettiğim bir topluluk. Gerek performans problemleri yüzünden şehir [...]]]></description>
			<content:encoded><![CDATA[<p>Dünya bisiklet ve çevre günü nedeniyle Pedalsesi bisiklet topluluğunun düzenlemiş olduğu Kapılıçınar gezisine katıldım. Katıldığım gezinin rotasındaki doğa güzelliklerine, inişli çıkışlı parkurun seçimine mi, birbirinden sıcakkanlı insanlar tanıdığıma mı yoksa e şıkkı hepsine birden mi sevineyim sık sık şaşırdım.</p>
<p>Aslında Pedalsesi topluluğu uzunca bir zamandan beri takip ettiğim bir topluluk. Gerek performans problemleri yüzünden şehir dışına çıkmaktan korktuğumdan, gerek geçen sene geçirmiş olduğum talihsiz kazadan dolayı gezilerine hiç katılmışlığım yoktur. İşin içerisinde bir takım endişeler yok desem de yalan söylemiş olurum.</p>
<p>Topluluk hareketlerinde kişisel egolara çok tepkisel bir yaklaşımım olması en büyük endişelerimde biriydi ki Yalova iskelensinde hayatımda ilk kez karşılaştığım bir grup insan sadece beni bekliyormuş gibi sıcak karşılamasıyla ve kısa sohbet ile üzerimdeki bir yükten anında sıyrılıverdim ve o andan itibaren her şeyin iyi geçeceğinden emindim. </p>
<p>Bir diğer endişem ise her ne kadar küçük olursa olsun organizasyon yapılarının içerisindeki paylaşım problemleri, takım disiplini problemleri ve takımı olmayı bozacak problemlerdi. Öyle ki her tur duyurusunun altında yazan &#8220;Sürüş : Yardımlaşma,dayanışma ve Grup Disiplini içinde pedal basılacaktır.&#8221; söylemine inanmakta gerçekten zorlanıyordum. Daha ilk rampa başında kontrolsüz değiştirdiğim vitesle beraber zincirimin attığında gelen &#8220;Bir şeyin var mı Levent?&#8221; sorusuyla bu endişemin yokolacağını biliyordum. Yolda ilerledikçe ne kadar gerçek olduğunu ve ne kadar güzel, taviz vermeden uygulandığını da gördüm. Sizin için en az sizin kadar endişelenen insanlarla yolda olmak gerçekten tarifi zor bir duygu.</p>
<p>Böylesine güzel bir gezi için Pedalsesi İstanbul temsilcisi Mert Arsan&#8217;a. Güzel sohbetleri için katılan tüm güzel arkadaşlarıma teşekkürü borç bilirim.</p>
<p>Ve işte o kareler <img src='http://leoman.gen.tr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
<p><a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/img_0648/' title='IMG_0648'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/IMG_0648-150x150.jpg" class="attachment-thumbnail" alt="IMG_0648" title="IMG_0648" /></a><br />
<a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/dscn1318/' title='DSCN1318'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/DSCN1318-150x150.jpg" class="attachment-thumbnail" alt="DSCN1318" title="DSCN1318" /></a><br />
<a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/img_0651/' title='IMG_0651'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/IMG_0651-150x150.jpg" class="attachment-thumbnail" alt="IMG_0651" title="IMG_0651" /></a><br />
<a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/dscn1326/' title='DSCN1326'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/DSCN1326-150x150.jpg" class="attachment-thumbnail" alt="DSCN1326" title="DSCN1326" /></a><br />
<a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/dscn1338/' title='DSCN1338'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/DSCN1338-150x150.jpg" class="attachment-thumbnail" alt="DSCN1338" title="DSCN1338" /></a><br />
<a href='http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/dscn1389/' title='DSCN1389'><img width="150" height="150" src="http://leoman.gen.tr/files/2010/06/DSCN1389-150x150.jpg" class="attachment-thumbnail" alt="DSCN1389" title="DSCN1389" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/06/pedalsesi-dunya-bisiklet-gunu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache üzerinde Geo-IP filtering</title>
		<link>http://leoman.gen.tr/2010/06/apache-uzerinde-geo-ip-filtering/</link>
		<comments>http://leoman.gen.tr/2010/06/apache-uzerinde-geo-ip-filtering/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 18:34:21 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[Gezegen]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[geoip]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=123</guid>
		<description><![CDATA[Bir web projesinde gelen ziyaretçinin geo-location kaynağına göre farklı durumlar yaratmak isteniyor ise bunun için kullanabileceğimiz çözümün adı MaxMind-GeoIP [1]. Ne? MaxMind bu konuda birden farklı veritabanı sunuyor. Eğer kaynak ülkeye göre işlem yapmak isterseniz GeoIP [2], şehire göre işlem yapmak istiyorsanız GeoCity [3] veritabanını kullanabilirsiniz. Ücretli satılan bu veritabanları yerine ücretiz kullanıma sahip olan [...]]]></description>
			<content:encoded><![CDATA[<p>Bir web projesinde gelen ziyaretçinin geo-location kaynağına göre farklı durumlar yaratmak isteniyor ise bunun için kullanabileceğimiz çözümün adı <strong>MaxMind-GeoIP</strong> <em>[1]</em>.</p>
<p><strong>Ne?</strong></p>
<p>MaxMind bu konuda birden farklı veritabanı sunuyor. Eğer kaynak ülkeye göre işlem yapmak isterseniz <strong>GeoIP</strong> <em>[2]</em>, şehire göre işlem yapmak istiyorsanız <strong>GeoCity</strong> <em>[3]</em> veritabanını kullanabilirsiniz. Ücretli satılan bu veritabanları yerine ücretiz kullanıma sahip olan <strong>GeoLite</strong> <em>[4] [5]</em> serilerini de kullanmak mümkün. Yalnız bu serileri belirli aralıklarda elle güncellemeniz gerekeceğini unutmamalısınız.</p>
<p><strong>Nasıl?</strong></p>
<p>Bu işlemlerin tamamı için PHP, Python, C, C# gibi MaxMind&#8217;ın sağlamış olduğu kütüphaneleri ya da Apache modülü gibi API&#8217;leri kullanabilmektesiniz.</p>
<p>Apache için geo-ip modülünü aktif etmek 3 adımlık bir süreçten ibaret;</p>
<p><code lang="bash"><br />
apt-get install libapache2-mod-geoip<br />
nano /etc/apache2/mods-available/geoip.conf<br />
</code></p>
<p>ile yüklediğimiz geoip modülünü açarak aşağıdaki satırlarla aktif olmasını ve bu işlemleri yaparken kullanacağı veritabanının yolunu belirteceğiz;</p>
<p><code lang="apache"><br />
GeoIPEnable On<br />
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat<br />
</code></p>
<p>Bu işlemin ardından güncel GeoIP veritabanını belirttiğimiz path&#8217;e indirerek mod&#8217;u kullanılabilir hale getirmemiz yeterli olacaktır.</p>
<p><code lang="bash"><br />
cd /tmp<br />
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz<br />
gunzip GeoIP.dat.gz<br />
mkdir -p /usr/share/GeoIP<br />
mv GeoIP.dat /usr/local/GeoIP/<br />
a2enmod geoip<br />
apache2ctl restart<br />
</code></p>
<p>Artık GeoIP  modülümüz kullanıma hazır dilerseniz .htaccess içerisinde ya da direkt olarak apache config&#8217;i içerisinde işleme sokabiliriz. Örneğin;</p>
<p><code lang="apache"><br />
RewriteEngine on<br />
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US)$<br />
RewriteRule ^(.*)$ http://us.domain.com$1 [L]<br />
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(TR|DE|SE)$<br />
RewriteRule ^(.*)$ http://eu.domain.com$1 [L]<br />
</code></p>
<p>Gibi big kod ile Kanada ve USA&#8217;den gelen kullanıcılaru us subdomain&#8217;ine, Türkiye, Almanya ve İsviçreden gelen kullanıcıları eu domain&#8217;ine yönlendirmiş oluruz.</p>
<p>Başka bir örnek olarak <strong>BTK tarafından anlmasızca siteleri bloklanan Google</strong> kısasa kısas yaparak Türkiye&#8217;den gelen kullanıcıları bloklamak isteseydi eğer, Apache içerisine şöyle bir ekleme yapması</p>
<p><code lang="apache"><br />
SetEnvIf GEOIP_COUNTRY_CODE TR MalUlkeler<br />
Deny from env=MalUlkeler<br />
Allow from all<br />
</code></p>
<p>Bunun türevlerini GeoCity gibi veritabanlarını kullanarak genişletmeniz de mümkündür.</p>
<p><strong>Neden?</strong></p>
<p>Peki neden bunu yazılım içerisinden değil de Apache üzerinden yapıyoruz? Tamamen kişisel bir tercih ve performans kaygısıdır. PHP interpreter&#8217;ına girirek bu işlemleri yapmaktansa daha web sunucuya bağlantı kurulduğu anda bu işlemi gerçekleştirmek bir çok yönüyle daha hızlı olacaktır.</p>
<p>Linkler;</p>
<p>[1] <a href="http://www.maxmind.com/app/ip-location">http://www.maxmind.com/app/ip-location<br />
</a>[2] <a href="http://www.maxmind.com/app/country">http://www.maxmind.com/app/country</a><br />
[3] <a href="http://www.maxmind.com/app/city">http://www.maxmind.com/app/city</a><br />
[4] <a href="http://www.maxmind.com/app/geolitecountry">http://www.maxmind.com/app/geolitecountry</a><br />
[5] <a href="http://www.maxmind.com/app/geolitecity">http://www.maxmind.com/app/geolitecity</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/06/apache-uzerinde-geo-ip-filtering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04 Lucid Lynx üzerinde sun-java6-jdk kurulumu</title>
		<link>http://leoman.gen.tr/2010/06/ubuntu-10-04-lucid-lynx-uzerinde-sun-java6-jdk-kurulumu/</link>
		<comments>http://leoman.gen.tr/2010/06/ubuntu-10-04-lucid-lynx-uzerinde-sun-java6-jdk-kurulumu/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 20:30:15 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[lucid lynx]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=120</guid>
		<description><![CDATA[Ubuntu; Lucid Lynx release notlarında duyurduğu üzere [1] Sun JDK6&#8242;yı non-free software reposu olan multiverse üzerinden çekmiş ve bunu partner reposuna taşımış durumda. JDK ile bağıl herhangi bir yazılım kurmak istediğiniz otomatik olarak main repo&#8217;dan openjdk yüklenecektir. Eğer ki kullanmış olduğunuz yazılımlarda SUN&#8217;ın javasına bağlı iseniz aşağıdaki adımları izleyerek sun-java6-jdk paketini yükleyebilirsiniz. leoman@leotown:~$ sudo echo [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntu; Lucid Lynx release notlarında duyurduğu üzere [1] Sun JDK6&#8242;yı non-free software reposu olan multiverse üzerinden çekmiş ve bunu partner reposuna taşımış durumda.</p>
<p>JDK ile bağıl herhangi bir yazılım kurmak istediğiniz otomatik olarak main repo&#8217;dan openjdk yüklenecektir. Eğer ki kullanmış olduğunuz yazılımlarda SUN&#8217;ın javasına bağlı iseniz aşağıdaki adımları izleyerek sun-java6-jdk paketini yükleyebilirsiniz.</p>
<p><code lang="bash"><br />
leoman@leotown:~$ sudo echo "deb http://archive.canonical.com/ lucid partner" >> /etc/apt/sources.list<br />
leoman@leotown:~$ apt-get update<br />
leoman@leotown:~$ apt-get install sun-java6-jdk<br />
</code></p>
<p>[1] <a href="https://wiki.ubuntu.com/LucidLynx/ReleaseNotes#Sun Java moved to the Partner repository">https://wiki.ubuntu.com/LucidLynx/ReleaseNotes#Sun Java moved to the Partner repository</a></p>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/06/ubuntu-10-04-lucid-lynx-uzerinde-sun-java6-jdk-kurulumu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>qmail kuyruk temizleme ve kuyruk yönetimi</title>
		<link>http://leoman.gen.tr/2010/06/qmail-kuyruk-temizleme-ve-kuyruk-yonetimi/</link>
		<comments>http://leoman.gen.tr/2010/06/qmail-kuyruk-temizleme-ve-kuyruk-yonetimi/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 19:00:50 +0000</pubDate>
		<dc:creator>leoman</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Sistem Yönetimi]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[qmail]]></category>
		<category><![CDATA[queue]]></category>

		<guid isPermaLink="false">http://leoman.gen.tr/?p=98</guid>
		<description><![CDATA[Mail sunucu yönetenler için sıkça yaşanabilecek bir problem olarak sevgili kullanıcılarınızın bir botnet zombisi haline gelmiş olması ya da bir şekilde mail şifresini çaldırmış olmasıdır. Buna bağlı olarak kullanıcının bilgisayarı üzerinden ya da farklı bir noktadan yüklü bir spam mail gönderimi ile sonuçlanır. Eğer ki MTA olarak qmail kullanıyorsak takım çantanızda sürekli barındırmanız gereken iki [...]]]></description>
			<content:encoded><![CDATA[<p>Mail sunucu yönetenler için sıkça yaşanabilecek bir problem olarak sevgili kullanıcılarınızın bir botnet zombisi haline gelmiş olması ya da bir şekilde mail şifresini çaldırmış olmasıdır. Buna bağlı olarak kullanıcının bilgisayarı üzerinden ya da farklı bir noktadan yüklü bir spam mail gönderimi ile sonuçlanır.</p>
<p>Eğer ki MTA olarak qmail kullanıyorsak takım çantanızda sürekli barındırmanız gereken iki adet edevat bulunmaktadır. Bunlardan birincisi qmHandle, daha bir güzeli ise qmail-remove</p>
<p>qmHandle detaylı bir çıktı verebilen, local ve remote queue&#8217;yu sadece bir parametre ile güzelce listeleyebilen güzel bir perl script&#8217;idir. Eğer ki queue&#8217;da biriken mailleriniz onbinlerin üzerinde ise maalesef ki queue üzerinde işlem yapmanız demek pek te mümkün olmayacaktır.</p>
<p>qmHandle&#8217;ı <a href="http://sourceforge.net/projects/qmhandle/">http://sourceforge.net/projects/qmhandle/</a> adresi üzerinden edinebilir ve queue directory yapısında değişiklik yapılmamış bir qmail kurulumu üzerinde problemsiz olarak kullanabilirsiniz.</p>
<p>Download adresinden indireceğiniz dosyayı tar ile açmanız yeterlidir. Script bash üzerinde çalışmaya nazır ve hazırdır.</p>
<p>(<strong>Plesk kontrol panel</strong> kullanılan sunucularda qmHandle&#8217;ı indirmeye gerek bulunmamaktadır. Çakma bir isim değiştirme yöntemi  ile duplicate edilmiş script&#8217;in kendisini <em>/usr/local/psa/admin/sbin/mailqueuemng</em> adıyla çağırabilirsiniz.)</p>
<p>Bash üzerinde perl ile birlikte şu şekilde  çalıştırabilirsiniz.<br />
<code lang="bash"><br />
perl qmHandle<br />
</code></p>
<p>Bu işlem sonunda kullanabileceğiniz parametrelere dair aşağıdaki gibi bir çıktı görüntülenecektir;<br />
<code lang="bash"><br />
qmHandle v1.2.0<br />
Copyright 1998-2003 Michele Beltrame<br />
Available parameters:<br />
  -a     : try to send queued messages now (qmail must be running)<br />
  -l     : list message queues<br />
  -L     : list local message queue<br />
  -R     : list remote message queue<br />
  -T     : list todo message queue<br />
  -s     : show some statistics<br />
  -mN    : display message number N<br />
  -dN    : delete message number N<br />
  -Stext : delete all messages that have/contain text as Subject<br />
  -D     : delete all messages in the queue (local and remote)<br />
  -V     : print program version</p>
<p>Additional (optional) parameters:<br />
  -c     : display colored output<br />
  -N     : list message numbers only<br />
           (to be used either with -l, -L, -R or -T)</p>
<p>You can view/delete multiple message i.e. -d123 -v456 -d567<br />
</code><br />
Yardım içeriğinde de bahsettiği üzre &#8220;-l&#8221;, &#8220;-L&#8221;, &#8220;-R&#8221;, &#8220;-T&#8221; ile queue üzerindeki tüm mesajları ve queue&#8217;daki çeşitlerine göre listeleyebilmektesiniz.</p>
<p>Örneğin qmHandle -R ile listelemiş olduğunuz remote queue&#8217;da aynı kullanıcının defalarca mail gönderdiğini gördünüz fakat içeriğini merak ediyorsunuz.<br />
<code lang="bash"><br />
65732975 (10, R)<br />
  Return-path: spammer@damnit.com<br />
  From:<br />
  To:<br />
  Subject: Viagra Cialis<br />
  Date: Thu, 3 Jun 2010 19:17:37 +0300<br />
  Size: 11273 bytes<br />
  Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1><br />
  Queue Time: 1275581860 sec<br />
  Envelope Recipients (R): mazlum@yandim.com, daha_bir_cok_mail_adresi</p>
<p>65736822 (16, R)<br />
  Return-path: spammer@damnit.com<br />
  From:<br />
  To:<br />
  Subject: Viagra Cialis<br />
  Date: Thu, 3 Jun 2010 19:17:37 +0300<br />
  Size: 11273 bytes<br />
  Message-Id: <000f01cb0338$484a6c80$0302a8c0@emlak5a8613ad1><br />
  Queue Time: 1275581860 sec<br />
  Envelope Recipients (R): mazlum@tiallahcezani.com, daha_bir_cok_mail_adresi<br />
</code></p>
<p>Yukarıdaki görmüş olduğunuz queue çıktısında mail header&#8217;larının hemen üstünde yer alan numara unique bir queue id&#8217;sidir. Yine qmHandle yardımı ile mesajın içeriğini aşağıdaki gibi görüntüleyebiliriz.</p>
<p><code lang="bash"><br />
perl qmHandle -m65736822<br />
</code></p>
<p><span style="color: #ff0000;"><strong>DİKKAT :</strong></span> Gerek qmHandle, gerek qmail-remove ile kuyruktan herhangi bir maili silmeden önce muhakkak ve muhakkak <span style="color: #ff0000;"><strong>qmail&#8217;i durdurmanız</strong></span> gerekmektedir.</p>
<p>Yine bu maili dilerseniz mesaj id&#8217;si ile, dilerseniz de subject&#8217;ine göre silebilirsiniz;<br />
<code lang="bash"><br />
perl qmHandle -m65736822<br />
</code><br />
veya<br />
<code lang="bash"><br />
perl qmHandle -SViagra\ Cialis<br />
</code><br />
Eğer ki normal işleyen bir mail sistemi ise queue&#8217;nuz da çok kabarık olmayacağından bu şekilde çok rahat kuyruk maillerini yönetebiliriz. Ya bekleyen 263000 mail biriktiyse?</p>
<p>Bu gibi durumlarda qmHandle sizin için yeterli olmayacaktır. queue okuma işini qmail&#8217;in kendi binary&#8217;si olan qmail-qread&#8217;a ve silme işini de qmail-remove&#8217;un eline bırakacağız.</p>
<p>Kurulumu sadece bir C dosyası build etmekten ibaret olan basit ve 3 adımlı bir süreçten geçeceğiz; download &#8211; untar &#8211; make ve make install<br />
<code lang="bash"><br />
wget http://www.linuxmagic.com/opensource/qmail/qmail-remove/qmail-remove-0.95.tar.gz<br />
tar zxf qmail-remove-0.95.tar.gz<br />
make &amp;amp;&amp;amp; make install<br />
</code><br />
Bu işlemin ardından /usr/local/sbin altında emirlerimize amade bir qmail-remove bulunmakta. Artık queue&#8217;ya göz atmaya hazır ve spam olması muhtemel mailleri silmeye geldi;<br />
<code lang="bash"><br />
/var/qmail/bin/qmail-qread</p>
<p>03 Jun 2010 21:21:21 GMT  #65732975 468772    bouncing</p>
<p>done      remote  zavalli@insancik.com<br />
            remote  vahtuh@spamyedik.com<br />
done      remote  mazlum@tiallahcezani.com<br />
            remote  ulan@spamgondereninben.com</p>
<p>03 Jun 2010 21:21:22 GMT  #65732975 468772    bouncing</p>
<p>done      remote  zavalli@insancik.com<br />
            remote  vahtuh@spamyedik.com<br />
done      remote  mazlum@tiallahcezani.com<br />
            remote  ulan@spamgondereninben.com</p>
<p>03 Jun 2010 21:21:25 GMT  #65732975 468772    bouncing</p>
<p>done      remote  zavalli@insancik.com<br />
            remote  vahtuh@spamyedik.com<br />
done      remote  mazlum@tiallahcezani.com<br />
            remote  ulan@spamgondereninben.com<br />
</code><br />
gibi bir çıktıda spammer@damnit.com&#8217;un spam yaptığını gördünüz. Bundan sonrası <span style="color: #ff0000;"><strong>qmail&#8217;i durdurmak</strong></span> ve qmail-remove&#8217;a pattern olarak mail adresini vererek sil demek kadar basit olacaktır.<br />
<code lang="bash"><br />
/etc/init.d/qmail stop<br />
qmail-remove -d -p spammer@damnit.com<br />
</code></p>
<p>silinen maillere karşılık şöyle bir çıktı alırsınız.</p>
<p><code lang="bash"><br />
remove mess/20/65732975<br />
remove remote/20/65732975<br />
remove info/20/65732975<br />
65733100: no<br />
65732893: no<br />
65733156: yes<br />
remove mess/7/65732975<br />
remove remote/7/65732975<br />
remove info/7/65732975<br />
65733087: no<br />
65736008: yes<br />
remove mess/7/65732975<br />
remove remote/7/65732975<br />
remove info/7/65732975<br />
remove bounce/65732975<br />
263482 file(s) match<br />
</code><br />
Artık qmail&#8217;i start ederek mutlu mesut günlerinize kaldığınız yerden devam edebilirsiniz.</p>
<p><strong>Not: </strong></p>
<ul>
<li>-d parametresini vermediğiniz sürece qmail-remove silme işlemi yapmayacaktır.</li>
<li>-d -p parametresini vererek bir pattern belirtmezseni qmail-remove komple queue&#8217;nuzu boşaltacaktır.</li>
<li>Dosyaların incelemek üzre silinmemesini istiyorsanız -y parametresi ile bir klasör belirtebilirsiniz.</li>
<li>Eğer ki queue directory&#8217;niz /var/qmail/queue &#8216;den farklıysa -q parametresi ile bu klasörün yerini bildirebilirsiniz.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://leoman.gen.tr/2010/06/qmail-kuyruk-temizleme-ve-kuyruk-yonetimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

