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: 788974 -->
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 # Bu yetersiz bir yapılandırma örneğidir, sunucunuzda kullanmayın. <br />
46 <VirtualHost falan.fesmekan.dom>
48 ServerAdmin filanca@fesmekan.dom <br />
49 DocumentRoot /siteler/fesmekan
54 <p>Apache’nin beklendiği gibi işlemesi için her sanal konak için iki
55 veriye mutlaka ihtiyacı vardır: <directive module="core"
56 >ServerName</directive> ve sunucunun bağlantı kabul edip hizmet
57 sunacağı en az bir IP adresi. Yukarıdaki örnekte IP adresi
58 bulunmamaktadır, dolayısıyla Apache, <code>falan.fesmekan.dom</code>
59 adresi için bir DNS sorgusu yapmak zorundadır. Eğer sunucu,
60 yapılandırma dosyasını çözümlediği sırada bir sebeple DNS sunucusuna
61 erişemezse bu sanal konak <em>yapılandırılmayacak</em> (hApache 1.2
62 öncesinde sunucu hiç başlatılmazdı) ve bu sanal konağa yapılan
63 isteklere yanıt verilemeyecektir.</p>
65 <p><code>falan.fesmekan.dom</code>’un 192.168.2.1 IP adresine sahip
66 olduğunu varsayarsak yapılandırma şöyle olurdu:</p>
69 # Bu yetersiz bir yapılandırma örneğidir, sunucunuzda kullanmayın. <br />
70 <VirtualHost 192.168.2.1> <br />
72 ServerAdmin filanca@fesmekan.dom <br />
73 DocumentRoot /siteler/fesmekan
78 <p>Ancak, bu sefer de bu sanal konağın sunucu ismini öğrenmek için
79 Apache’nin bir ters DNS sorgusu yapması gerekecektir. Eğer bu sorgu
80 başarısız olursa kısmi bir yapılandırmaya gidilir (Apache 1.2 öncesinde
81 sunucu hiç başlatılmazdı). Eğer sanal konak isme dayalı ise sanal konak
82 kısmen bile yapılandırılmaz. IP’ye dayalı sanal konaklar büyük oranda
83 çalışır, fakat sunucu ismini içeren tam bir adres üretilmesini
84 gerektiren bir durumda, sunucu geçerli bir adres üretemez.</p>
86 <p>Her iki sorunu da çözen yapılandırma şöyle olurdu:</p>
89 <VirtualHost 192.168.2.1> <br />
91 ServerName falan.fesmekan.dom <br />
92 ServerAdmin filanca@fesmekan.dom <br />
93 DocumentRoot /siteler/fesmekan
100 <title>Hizmet Reddi</title>
102 <p>Hizmet reddinin meydana gelebilecek (en az) iki türü vardır.
103 Apache’nin 1.2 öncesi bir sürümünü kullanıyorsanız sanal
104 konaklarınızdan herhangi biri için yukarıdaki iki sorgudan biri
105 başarısız olursa sunucunuzu asla başlatamazsınız. Bazı durumlarda, DNS
106 sorgularından alınacak yanıtlar sizin denetiminizde olmayabilir;
107 örneğin <code>fesmekan.dom</code> müşterilerinizden birine aitse ve
108 kendi DNS sunucuları varsa <code>falan.fesmekan.dom</code> kaydını
109 silerek sunucunuzun hiç başlatılamamasına (1.2 öncesi) sebep
112 <p>Diğer türü biraz daha sinsidir. Şöyle bir yapılandırmanız olsun:</p>
115 <VirtualHost falan.fesmekan.dom><br />
117 ServerAdmin filanca@fesmekan.dom <br />
118 DocumentRoot /siteler/fesmekan
120 </VirtualHost><br />
122 <VirtualHost misal.mesela.dom><br />
124 ServerAdmin falanca@mesela.dom<br />
125 DocumentRoot /siteler/mesela<br />
130 <p><code>falan.fesmekan.dom</code>’a 192.168.2.1,
131 <code>misal.mesela.dom</code>’a 192.168.2.2 atadığınızı fakat,
132 <code>mesela.dom</code>’un DNS kaydının sizin denetiminizde olmadığını
133 varsayalım. Bu yapılandırmayla, <code>mesela.dom</code>’u
134 <code>fesmekan.dom</code>’a giden tüm trafiği çalabilecek duruma
135 getirirsiniz. Bunu gerçekleştirmek için DNS kaydında
136 <code>misal.mesela.dom</code>’a 192.168.2.1 adresinin atanması
137 yeterlidir. Kendi DNS’lerine sahip olduklarından dolayı
138 <code>misal.mesela.dom</code>’a istedikleri IP adresini atamaktan
139 onları alıkoyamazsınız.</p>
141 <p>192.168.2.1’e gelen isteklerin hepsine
142 (<code>http://falan.fesmekan.dom/biryer</code> şeklinde yazılan
143 adresler dahil) <code>mesela.dom</code> sanal konağınca hizmet
144 sunulacaktır. Apache’nin gelen istekleri sunduğu sanal konaklarla nasıl
145 eşleştirdiğini bilirseniz bunun sebebini kolayca anlarsınız. Bunu
146 kabataslak açıklayan <a href="vhosts/details.html">bir belgemiz
151 <title>"Ana Sunucu" Adresi</title>
153 <p>Apache 1.1’de <a href="vhosts/name-based.html">isme dayalı sanal konak
154 desteği</a>ne ek olarak, Apache’nin, <program>httpd</program>’nin
155 çalıştığı makinenin IP adres(ler)ini de bilmeye ihtiyacı vardır. Bu
156 adresi elde etmek için sunucu, ya sunucu genelinde geçerli <directive
157 module="core">ServerName</directive> yönergesine bakar ya da bir C
158 işlevi olan <code>gethostname</code>’i kullanır (işlev, komut
159 isteminden <code>hostname</code> komutuna dönen yanıtın aynısını
160 döndürür) ve ardından bu adresle ilgili olarak bir DNS sorgusu yapar.
161 Bu sorgudan kaçınmanın henüz bir yolu yoktur.</p>
163 <p>Eğer bu sorgunun (DNS sunucusunun çökmüş olması gibi bir nedenle)
164 başarısız olabileceğinden korkuyorsanız, makine ismini ve IP adresini
165 <code>/etc/hosts</code> dosyanıza yazabilirsiniz (Makinenizin düzgün
166 olarak açılabilmesi için zaten bu kaydı yapmış olmanız gerekir).
167 Kullandığınız işletim sistemine bağlı olarak bu kaydın
168 <code>/etc/resolv.conf</code> veya <code>/etc/nsswitch.conf</code>
169 dosyasında bulunması gerekebilir.</p>
171 <p>Herhangi bir nedenle sunucunuz bir DNS sorgusu yapmıyorsa veya
172 yapmamalıysa, Apache’yi <code>HOSTRESORDER</code> ortam değişkenine
173 "<code>local</code>" değerini atadıktan sonra çalıştırabilirsiniz. Bu
174 tamamen işletim sistemine ve kullandığınız çözümleyici kütüphanelere
175 bağlıdır. Ayrıca, ortamı denetlemek için <module>mod_env</module>
176 kullanmıyorsanız, CGI’ler de bundan etkilenir. En iyisi işletim
177 sisteminizin SSS belgelerini ve kılavuz sayfalarını okumaktır.</p>
181 <title>Bu Sorunlardan Kaçınmak için İpuçları</title>
184 <li><directive module="core">VirtualHost</directive> yönergelerinizde
185 IP adresleri kullanınız.</li>
187 <li><directive module="mpm_common">Listen</directive> yönergelerinizde
188 IP adresleri kullanınız.</li>
190 <li>Tüm sanal konakların ayrı birer <directive module="core"
191 >ServerName</directive> yönergesi olsun.</li>
193 <li>Hiçbir sayfa sunulmayan bir <code><VirtualHost
194 _default_:*></code> sanal konağınız olsun.</li>
198 <section id="appendix">
199 <title>Ek: Ufuk Turu</title>
201 <p>DNS ile ilgili durum hiç de arzu edildiği gibi değildir. Apache 1.2
202 için, DNS sorguları başarısız olsa bile sunucunun başlatılabilmesini
203 sağlamaya çalıştık, fakat belki yapabildiğimizden daha da iyisi
204 mümkündür. Günümüz Genel Ağ’ında IP adresleri sık sık değiştiğinden
205 yapılandırma dosyasına doğrudan IP adresini yazma gerekliliği asla arzu
206 edilen davranış değildir.</p>
208 <p>Yukarıda nasıl yapıldığı açıklanan hizmet hırsızlığı saldırısına karşı
209 önlem olarak, normal sorgudan dönen IP adresine bir ters DNS sorgusu
210 yapıp bu iki sonucu karşılaştırmak ve eşleşmeme durumunda sanal konağı
211 iptal etmek bir çözüm olabilir. Fakat bunun mümkün olabilmesi için
212 uygun bir ters DNS kaydına ihtiyaç vardır. (FTP sunucuları ve TCP
213 sarmalayıcılar tarafından yapılan çifte ters DNS sorgusu kullanımından
214 dolayı çoğu ağ yöneticisi bu konuda zaten bilgi sahibidir.)</p>
216 <p>Her halükarda, IP adreslerinin kullanılmaması nedeniyle yapılan DNS
217 sorgularının başarısız olması durumunda sanal konaklı bir sunucuyu
218 düzgün bir şekilde başlatmak olası görünmektedir. Yapılandırmayı kısmen
219 iptal etmek gibi kısmi çözümler, sunucudan beklentinizin ne olduğuna
220 bağlı olarak sunucuyu hiç başlatmamaktan daha iyi olabilir.</p>
222 <p>HTTP/1.1’de belirtildiği gibi <code>Host</code> başlığını göndererek
223 işlem yapabilen tarayıcılar ve vekiller IP’ye dayalı sanal konak
224 kullanımını tamamen ortadan kaldırmanın mümkün olabileceğini
225 göstermektedir. Bu durumda yapılandırmanın çözümlenmesi aşamasında DNS
226 sorgusu yapma gereği kalmayacaktır. Fakat 1997 Mart’ından beri önemli
227 sunucular üzerinde bunların yeterince geniş bir uygulama alanı
228 bulmadığı görülmektedir.</p>