1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.tr.xsl"?>
4 <!-- English Revision: 507346:788933 (outdated) -->
5 <!-- =====================================================
6 Translated by: Nilgün Belma Bugüner <nilgun belgeler.org>
7 Reviewed by: Orhan Berent <berent belgeler.org>
8 ========================================================== -->
11 Licensed to the Apache Software Foundation (ASF) under one or more
12 contributor license agreements. See the NOTICE file distributed with
13 this work for additional information regarding copyright ownership.
14 The ASF licenses this file to You under the Apache License, Version 2.0
15 (the "License"); you may not use this file except in compliance with
16 the License. You may obtain a copy of the License at
18 http://www.apache.org/licenses/LICENSE-2.0
20 Unless required by applicable law or agreed to in writing, software
21 distributed under the License is distributed on an "AS IS" BASIS,
22 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23 See the License for the specific language governing permissions and
24 limitations under the License.
27 <manualpage metafile="dns-caveats.xml.meta">
29 <title>Apache ve DNS ile ilgili Konular</title>
32 <p>Bu sayfanın konusu şöyle özetlenebilirdi: Yapılandırma dosyalarınızda
33 DNS sorguları yapılmasını gerektirecek ayarlamalardan kaçınınız. Eğer
34 yapılandırma dosyalarınızda DNS sorgusu yapılarak çözümlenebilecek
35 adresler bulunursa sunucunuz beklenmedik davranışlar (hiç
36 başlamayabilir) gösterebileceği gibi hizmet reddi veya hizmet
37 hırsızlığı (bazı kullanıcıların diğerlerine giden sayfaları çalma
38 olasılığı dahil) saldırılarına açık hale gelebilir.</p>
41 <section id="example">
42 <title>Basit Bir Örnek</title>
45 <VirtualHost falan.fesmekan.dom>
47 ServerAdmin filanca@fesmekan.dom <br />
48 DocumentRoot /siteler/fesmekan
53 <p>Apache’nin beklendiği gibi işlemesi için her sanal konak için iki
54 veriye mutlaka ihtiyacı vardır: <directive module="core"
55 >ServerName</directive> ve sunucunun bağlantı kabul edip hizmet
56 sunacağı en az bir IP adresi. Yukarıdaki örnekte IP adresi
57 bulunmamaktadır, dolayısıyla Apache, <code>falan.fesmekan.dom</code>
58 adresi için bir DNS sorgusu yapmak zorundadır. Eğer sunucu,
59 yapılandırma dosyasını çözümlediği sırada bir sebeple DNS sunucusuna
60 erişemezse bu sanal konak <em>yapılandırılmayacak</em> (hApache 1.2
61 öncesinde sunucu hiç başlatılmazdı) ve bu sanal konağa yapılan
62 isteklere yanıt verilemeyecektir.</p>
64 <p><code>falan.fesmekan.dom</code>’un 192.168.2.1 IP adresine sahip
65 olduğunu varsayarsak yapılandırma şöyle olurdu:</p>
68 <VirtualHost 192.168.2.1> <br />
70 ServerAdmin filanca@fesmekan.dom <br />
71 DocumentRoot /siteler/fesmekan
76 <p>Ancak, bu sefer de bu sanal konağın sunucu ismini öğrenmek için
77 Apache’nin bir ters DNS sorgusu yapması gerekecektir. Eğer bu sorgu
78 başarısız olursa kısmi bir yapılandırmaya gidilir (Apache 1.2 öncesinde
79 sunucu hiç başlatılmazdı). Eğer sanal konak isme dayalı ise sanal konak
80 kısmen bile yapılandırılmaz. IP’ye dayalı sanal konaklar büyük oranda
81 çalışır, fakat sunucu ismini içeren tam bir adres üretilmesini
82 gerektiren bir durumda, sunucu geçerli bir adres üretemez.</p>
84 <p>Her iki sorunu da çözen yapılandırma şöyle olurdu:</p>
87 <VirtualHost 192.168.2.1> <br />
89 ServerName falan.fesmekan.dom <br />
90 ServerAdmin filanca@fesmekan.dom <br />
91 DocumentRoot /siteler/fesmekan
98 <title>Hizmet Reddi</title>
100 <p>Hizmet reddinin meydana gelebilecek (en az) iki türü vardır.
101 Apache’nin 1.2 öncesi bir sürümünü kullanıyorsanız sanal
102 konaklarınızdan herhangi biri için yukarıdaki iki sorgudan biri
103 başarısız olursa sunucunuzu asla başlatamazsınız. Bazı durumlarda, DNS
104 sorgularından alınacak yanıtlar sizin denetiminizde olmayabilir;
105 örneğin <code>fesmekan.dom</code> müşterilerinizden birine aitse ve
106 kendi DNS sunucuları varsa <code>falan.fesmekan.dom</code> kaydını
107 silerek sunucunuzun hiç başlatılamamasına (1.2 öncesi) sebep
110 <p>Diğer türü biraz daha sinsidir. Şöyle bir yapılandırmanız olsun:</p>
113 <VirtualHost falan.fesmekan.dom><br />
115 ServerAdmin filanca@fesmekan.dom <br />
116 DocumentRoot /siteler/fesmekan
118 </VirtualHost><br />
120 <VirtualHost misal.mesela.dom><br />
122 ServerAdmin falanca@mesela.dom<br />
123 DocumentRoot /siteler/mesela<br />
128 <p><code>falan.fesmekan.dom</code>’a 192.168.2.1,
129 <code>misal.mesela.dom</code>’a 192.168.2.2 atadığınızı fakat,
130 <code>mesela.dom</code>’un DNS kaydının sizin denetiminizde olmadığını
131 varsayalım. Bu yapılandırmayla, <code>mesela.dom</code>’u
132 <code>fesmekan.dom</code>’a giden tüm trafiği çalabilecek duruma
133 getirirsiniz. Bunu gerçekleştirmek için DNS kaydında
134 <code>misal.mesela.dom</code>’a 192.168.2.1 adresinin atanması
135 yeterlidir. Kendi DNS’lerine sahip olduklarından dolayı
136 <code>misal.mesela.dom</code>’a istedikleri IP adresini atamaktan
137 onları alıkoyamazsınız.</p>
139 <p>192.168.2.1’e gelen isteklerin hepsine
140 (<code>http://falan.fesmekan.dom/biryer</code> şeklinde yazılan
141 adresler dahil) <code>mesela.dom</code> sanal konağınca hizmet
142 sunulacaktır. Apache’nin gelen istekleri sunduğu sanal konaklarla nasıl
143 eşleştirdiğini bilirseniz bunun sebebini kolayca anlarsınız. Bunu
144 kabataslak açıklayan <a href="vhosts/details.html">bir belgemiz
149 <title>"Ana Sunucu" Adresi</title>
151 <p>Apache 1.1’de <a href="vhosts/name-based.html">isme dayalı sanal konak
152 desteği</a>ne ek olarak, Apache’nin, <program>httpd</program>’nin
153 çalıştığı makinenin IP adres(ler)ini de bilmeye ihtiyacı vardır. Bu
154 adresi elde etmek için sunucu, ya sunucu genelinde geçerli <directive
155 module="core">ServerName</directive> yönergesine bakar ya da bir C
156 işlevi olan <code>gethostname</code>’i kullanır (işlev, komut
157 isteminden <code>hostname</code> komutuna dönen yanıtın aynısını
158 döndürür) ve ardından bu adresle ilgili olarak bir DNS sorgusu yapar.
159 Bu sorgudan kaçınmanın henüz bir yolu yoktur.</p>
161 <p>Eğer bu sorgunun (DNS sunucusunun çökmüş olması gibi bir nedenle)
162 başarısız olabileceğinden korkuyorsanız, makine ismini ve IP adresini
163 <code>/etc/hosts</code> dosyanıza yazabilirsiniz (Makinenizin düzgün
164 olarak açılabilmesi için zaten bu kaydı yapmış olmanız gerekir).
165 Kullandığınız işletim sistemine bağlı olarak bu kaydın
166 <code>/etc/resolv.conf</code> veya <code>/etc/nsswitch.conf</code>
167 dosyasında bulunması gerekebilir.</p>
169 <p>Herhangi bir nedenle sunucunuz bir DNS sorgusu yapmıyorsa veya
170 yapmamalıysa, Apache’yi <code>HOSTRESORDER</code> ortam değişkenine
171 "<code>local</code>" değerini atadıktan sonra çalıştırabilirsiniz. Bu
172 tamamen işletim sistemine ve kullandığınız çözümleyici kütüphanelere
173 bağlıdır. Ayrıca, ortamı denetlemek için <module>mod_env</module>
174 kullanmıyorsanız, CGI’ler de bundan etkilenir. En iyisi işletim
175 sisteminizin SSS belgelerini ve kılavuz sayfalarını okumaktır.</p>
179 <title>Bu Sorunlardan Kaçınmak için İpuçları</title>
182 <li><directive module="core">VirtualHost</directive> yönergelerinizde
183 IP adresleri kullanınız.</li>
185 <li><directive module="mpm_common">Listen</directive> yönergelerinizde
186 IP adresleri kullanınız.</li>
188 <li>Tüm sanal konakların ayrı birer <directive module="core"
189 >ServerName</directive> yönergesi olsun.</li>
191 <li>Hiçbir sayfa sunulmayan bir <code><VirtualHost
192 _default_:*></code> sanal konağınız olsun.</li>
196 <section id="appendix">
197 <title>Ek: Ufuk Turu</title>
199 <p>DNS ile ilgili durum hiç de arzu edildiği gibi değildir. Apache 1.2
200 için, DNS sorguları başarısız olsa bile sunucunun başlatılabilmesini
201 sağlamaya çalıştık, fakat belki yapabildiğimizden daha da iyisi
202 mümkündür. Günümüz Genel Ağ’ında IP adresleri sık sık değiştiğinden
203 yapılandırma dosyasına doğrudan IP adresini yazma gerekliliği asla arzu
204 edilen davranış değildir.</p>
206 <p>Yukarıda nasıl yapıldığı açıklanan hizmet hırsızlığı saldırısına karşı
207 önlem olarak, normal sorgudan dönen IP adresine bir ters DNS sorgusu
208 yapıp bu iki sonucu karşılaştırmak ve eşleşmeme durumunda sanal konağı
209 iptal etmek bir çözüm olabilir. Fakat bunun mümkün olabilmesi için
210 uygun bir ters DNS kaydına ihtiyaç vardır. (FTP sunucuları ve TCP
211 sarmalayıcılar tarafından yapılan çifte ters DNS sorgusu kullanımından
212 dolayı çoğu ağ yöneticisi bu konuda zaten bilgi sahibidir.)</p>
214 <p>Her halükarda, IP adreslerinin kullanılmaması nedeniyle yapılan DNS
215 sorgularının başarısız olması durumunda sanal konaklı bir sunucuyu
216 düzgün bir şekilde başlatmak olası görünmektedir. Yapılandırmayı kısmen
217 iptal etmek gibi kısmi çözümler, sunucudan beklentinizin ne olduğuna
218 bağlı olarak sunucuyu hiç başlatmamaktan daha iyi olabilir.</p>
220 <p>HTTP/1.1’de belirtildiği gibi <code>Host</code> başlığını göndererek
221 işlem yapabilen tarayıcılar ve vekiller IP’ye dayalı sanal konak
222 kullanımını tamamen ortadan kaldırmanın mümkün olabileceğini
223 göstermektedir. Bu durumda yapılandırmanın çözümlenmesi aşamasında DNS
224 sorgusu yapma gereği kalmayacaktır. Fakat 1997 Mart’ından beri önemli
225 sunucular üzerinde bunların yeterince geniş bir uygulama alanı
226 bulmadığı görülmektedir.</p>