Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Çevrildiði diller: Castellano  Deutsch  English  Français  Italiano  Nederlands  Türkce  
[Yazarýn Fotoðrafý]
Atif Ghaffar tarafýndan

Yazar hakkýnda:

Ýsviçre'de web sorumlusu ve unix yöneticisi olarak çalýþýyorum . Tutkularým arasýnda Linux, unix, Perl, Apache ve GPL yazýlýmlarý var. Benim hakkýmda daha çok bilgibu anasayfada

Ýçerik:

Apache ProxyPass Kullanarak Masquarading host'tun Arkasýndaki Sunuculara Giriþ

Çeviri : Zuhal Gül

[Resim]

Özet:

Ben, evde ip maskelemesini ve firewall'unu kullanarak Linux'le yüklenen küçük LAN(yerel network alaný) kullanýyorum. Network'ümdeki bütün makinelerin internet üzerindeki bütün bilgileri kabul etmesine raðmen,sadece bu makine internetten ip maskelemesini uygun görüyor. En son Apache makalemde, ip adreslerinin nasýl dönüþtürüleceðini gösterdim.Bu makalemde firewall'deki veya güvenlik anlaþmalarýndaki kurallarý deðiþtirmeden internet üzerinde firewall'un arkasýnda web sunucusunun nasýl oluþturulacaðýný göstereceðim. Ayrýca, bu makalede bu hedefi baþarabilmek için Apache's ProxyPass bildiriminin nasýl kullanýlacaðýný göreceðiz. Bu makalenin hedef kitlesi Sistem Yöneticileri veya evde ,iþ yerinde orta büyüklükte LAN için küçüðünü üreten kiþilerdir.



 

Ýp maskelemesi ile ilgili problem

Benim LAN'ýmda uzun bir süredir,router(maskeleme ve firewall'ü yapan makine) web sunucusu,mail sunucusu,ftp sunucusu,dns sunucusu olarak da görev alýyordu.
Bir gün,firewall'ün arkasýndaki makineden web içeriðini sunma ihtiyacý duydum.
Ayrýca bazý dökümanlarý (video sunucusu,görüntü akýþý(streaming images) sunucularý) network'un arkasýndaki SGI IRIX kutusundan sunmak istedim. Bu makinenin internete tüm giriþleri vardý,fakat internet kullanýcýlarý makineye baðlanamýyorlardý. IRIX makinesini network üzerine koymaya hiç niyetim yoktu ,ama insanlarýn web sunucusuna baðlanabilmeleri için bu gerekiyordu.

Ayný probleme, iþte benzer network ve Firewall'le karþý koyuyordum.
Her seferinde birileri internetten gösteri amaçlý uygun web sunucusu geliþmelerini istedi,firewall'deki kurallarýn deðiþmeye ihtiyacý vardý ve siz makineye network'ün güvenlik anlaþmasýný ve dýþ ip adreslerini vermek zorundaydýnýz.

 

Apache'den kurtulmak için : ProxyPass

Birçok çözümü düþündükten sonra, Apache ve onun ProxyPass bildirimiyle bir tane denedim.
ProxyPass, Apache sunucunuzla modül olarak derlenmek ve yüklenmek için mod_proxy'ye ihtiyaç duyar.
Þimdi ProxyPass'in Apache manuellerinden alýnmýþ ifadeleri

ProxyPass

Söz dizimi: ProxyPass <path> <url>
Ön görülen deðer: Yok
Genel durum: config sunucusu, sanal host
Daha önemlisi: Uygulanamaz
Durum: Taban
Modül: mod_proxy
Uygunluðu: ProxyPass sadece Apache 1.1 ve sonrasýnda geçerlidir.

Bu bildirim uzak sunucularýn yerel sunucunun alanýna girmesine izin verir; yerel sunucu göreneksel anlamda proxy olarak görev almaz;fakat uzak sunucularýn aynasý gibi gözükür. <path> yerel asýl path'in ismi; url> uzak sunucular için bölümsel URL .

Farzedin ki yerel sunucunun adresi var http://wibble.org/; ve

   ProxyPass /mirror/foo/ http://foo.com/
yerel isteðe sebep olacak <http://wibble.org/mirror/foo/bar>için <http://foo.com/bar> de proxy isteðine dönüþüm.

 

Gerçek hayattan örnek

Ýç vidyo sunucusunu dýþ web sunucusuna dönüþrürme(mapping).
Ýç network: hometranet.home 192.168.1.0/255.255.255.0
( internet, intranet, extranet mevzularýnda ,ben ev network'ünde hometranet kullanýyorum.)
Dýþ network: developer.ch 193.192.254.50

Vidyo sunucularý (iç) cam.hometranet.home da çalýþýr
vidyo görüntülerinin url'den sunumuyla http://cam.hometranet.home:5555/cams/sony/stream
ve
hala burada http://cam.hometranet.home:5555/cams/sony/image kameradan görüntülenir
Burayý ziyaret ettiðim zaman
http://mozilla.developer.ch/stream urls'den bütün sonuçlarý görmek istedim
ve
http://mozilla.developer.ch/image
Bu, kolayca httpd.conf or srm.conf'a sýradakileri ekleyerek Apache'den ProxyPasskomutunu kulanarak yaðýlabilir.

ProxyPass /video http://cam.hometranet.home:5555/cams/sony/stream
ProxyPass /video http://cam.hometranet.home:5555/cams/sony/stream
Þimdi, web sunucusunu tekrar baþlattýktan sonra (mod_proxy uygun olsaydý), http://mozilla.developer.ch/image ? web sunucusundan cevaplar.
Siteyi ziyaret eden kullanýcýlar için onun þeffaflýðý ve hemen hemen* güvenliksizliði, bu metodu kullanarak tatlýya baðlandý.
*hemen hemen 'i kulanmamýn nedeni internette tam güvenlik diye birþey yoktur. :)

 

Sanal Sunuculara Dönüþüm

Proxypass asýl makineden farklý bir makineye dönüþüm için kullanýlabilinir.
Örneðin:
docs.sun.developer.ch , solsparc.hometranet.home 'a dönþür

NameVirtualHost 193.192.254.50
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     ProxyPass / http://solsparc.hometranet.home/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>
Ana makinelere onlarýn ip adreslerini kullanarak da gönderi yapabilirsin
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     ProxyPass / http://192.168.1.7/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>
 

Ýþlemlerin durdurulmasý

Ana web sunucunuz kullanýcýlarýnýzýn lehinde iç web sunucularýna istek yapýyorsa,hiçbir esas makineye baðlanamazsýn,onun yerine bütün istekleri kaynak makinede girmek zorundsýn.
Yukarki olayda solsparc.hometranet.home 'a girmek yerine kayýtlarý esas makine olan sun.docs.developer.ch 'de girerim.
sun.docs.developer.ch 'de girmenin sonuçlarý(sahte sonuçlar)

197.0.22.3 - - [05/Nov/1999:22:09:04 +0100] "GET /index.html HTTP/1.0" 304 -
187.0.45.67 - - [05/Nov/1999:22:09:04 +0100] "GET /navi.html HTTP/1.0" 304 -
177.0.5.45 - - [05/Nov/1999:22:09:04 +0100] "GET /entrees.html HTTP/1.0" 304 -
227.0.9.67 - - [05/Nov/1999:22:09:15 +0100] "GET /complets.html HTTP/1.0" 304 -
137.0.7.23 - - [05/Nov/1999:22:09:19 +0100] "GET /menu_poisson.html HTTP/1.0" 200 841
193.192.245.73 - - [05/Nov/1999:22:09:25 +0100] "GET /volailles.html HTTP/1.0" 304 -
192.167.0.1 - - [05/Nov/1999:22:09:44 +0100] "GET /agneau.html HTTP/1.0" 304 -                                                            
solsparc.hometranet.home 'da girmenin sonuçlarý
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /index.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /navi.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /entrees.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:15 +0100] "GET /complets.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:19 +0100] "GET /menu_poisson.html HTTP/1.0" 200 841
192.168.1.1 - - [05/Nov/1999:22:09:25 +0100] "GET /volailles.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:44 +0100] "GET /agneau.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:56 +0100] "GET /desserts_ind.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:10:00 +0100] "GET /cocktails.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:10:10 +0100] "GET /cgi-bin/commande.cgi HTTP/1.0" 200 2146        

Ayný baþvurular ayrýca ip numaralarý veya isimle belirtilen ACLs (access control list) için kullanýlýr.
Eðer bazý hosts/ip adreslerini bloke etmek veya belli ip adreslerinin özel alana giriþini vermek istiyorsan ,bunu yerel sunucu yerine esas sunucuda yapmalýsýn.
Ayrýca Diroctory 'de belirlenen kullanýcýlarý kýsýtlayamazsýn.
Location , Files veya FilesMatch komutlarýný kullanabilirsin.
Sýradaki örnek bunlarýn bir kaçýna deðiniyor. Örnek:
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     #this rule only allows users from good.host.com domain
     <Location /private>
          order deny,allow
          deny from all
          allow from good.host.com
     </Location>
     #This rule deny's the uncool Microsoft's monopoly helper browser.
     BrowserMatch MSIE uncool_browser
     <Location /coolpages>
         order allow,deny
         allow from all
         deny from env=uncool_browser
     </Location>
     #This rule only allows users that are in your passwd.httpd file
     <Location /coolpages>
         AuthName "only for registered users"
         AuthType Basic
         AuthUserFile "/etc/httpd/passwd.httpd"
         <Limit GET>
              require valid-user
         </Limit>
     </Location>

     ProxyPass / http://192.168.1.7/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>

 

Ek Kaynaklar

[Apache mod_proxy dökümanlarý]
http://www.apache.org/docs/mod/mod_proxy.html
[Apache tabanlý Virtual Host Desteði]
http://www.apache.org/docs/vhosts/name-based.html
[Apache Virtual Host dökümanlarý]
http://www.apache.org/docs/vhosts/index.html
 

Bu makale için görüþler:

Her makalenin kendi talkback sayfasý vardýr. Bu sayfada düþüncelerinizi sunabilir veya diðer okuyucularýn görüþlerine bakabilirsiniz:
 talkback page 

Websayfalarý LinuxFocus'un Editörleri tarafýndan sürdürülüyor
© Atif Ghaffar
LinuxFocus.org 2000

hatalarý veya Linuxfocus'a görüþlerinizi bildirmek için týklayýnýz

2000-04-23, lfparser versiyon 1.5 'le oluþturulmuþtur.