Pfsense Squid Proxy Server Kurulumu

Pfsense Squid Proxy Server Kurulumu :

Merhabalar bu yazımızda Pfsense’i Proxy (vekil) sunucu olarak kullanmak için gereken squid paketinin kurulumunu ele alacağız. Bir önceki yazımızda Pfsense’in basit kurulumunu anlatmıştık . (Pfsense Kurulumu)

Kuruluma geçmeden önce squid konusuna kısaca değinmemiz gerekiyor. Squid Linux/unix kullanıcıları için geliştirilmiş proxy yani vekil sunucu yazılımıdır. Squid yazılımının asıl amacı ağ üzerinden gelen http trafiğini üzerine almak ve bizim belirlediğimiz kurallara göre kullanıcılara iletmektir.

Squid özellikle Linux/unix makinalarda çalışacak şekilde tasarlanmıştır. WinNT sürümü de varmış ama ben hiç kullanmadığım için yorum yapamayacağım. Squid yalnızca HTTP proxy’dir ama tranparent proxy ozelliği ile SSL, HTTPs, FTP, gibi protokolleri de destekleme özelliği kazandırabiliyoruz. Squid web sitelerini cache belleğe alır ve kullanıcılara buradan sunar bu sayede kullanıcılarımıza sağladığımız internet hizmetini koyduğumuz kurallar ile istediğimiz şekle büründürebiliriz. Daha önemlisi bant genişliğini verimli kullanmamızı sağlar buna küçük bir örnek vermemiz gerekirse:

Sabah gazete okumak için 300 kullanıcının milliyet.com’a girdiğini ve her birinin milliyet galeri vs.’de aynı anda zaman geçirmeye başladığını düşünelim. 4 Mbps bant genişliğimiz ile ne kadar kaliteli bir internet erişimi sağlayabiliriz, sizce yeterli olur mu?
Veya bir kullanıcının girip tüm bant genişliğini tüketerek download yaptığını düşünelim? Ne yapabiliriz ki?

Yapabileceğimiz şey squid’i devreye sokmaktır. Squid bir siteyi bir kez cache belleğe alacak ve WAN interface milliyet.com için yanlızca bir kez meşgul edilecektir. Aynı siteye tekrar girişlerde web sitesi kullanıcıya squid tarafından sunulacaktır. Bir başka faydası kullanıcı başına bant genişliği atanabilir ve bu sayede tüm bant genişliğini az sayıda kullanıcı işgal edemez. Temel olarak faydası budur.

Squid hakkında genel bir bilgiye sahip olduktan sonra Pfsense’i doğru şekilde kurduğumuzu varsayarak Squid kurulumuna başlıyoruz.

Web browser’ı açarak adres satırına Pfsense makinemizin LAN arayüz Ip’sini yazarak WebGui’ye erişiyoruz ve login oluyoruz.

Dashboard bizi karşıladıktan sonra System>Packages’e tıklıyoruz ve internet üzerinden yükleyebileceğimiz paketler için Package Manager’e erişiyoruz.

Yüklenebilir durumda olan paketleri burada bulunan Avaible Packages kısmında görebiliyoruz ve bu paketler içerisinden squid paketini buluyor ve bu paketin sağ hizasında bulunan “+” kutucuğuna tıklıyoruz. Bize gerçekten squid’i kurmak istiyor musunuz diyor bunu onaylıyoruz. Eğer bu paketleri göremiyorsanız ilk olarak WAN interface’de problem aramaya başlayın(Özellikle pfsense DNS adreslerini kontrol ediniz) . Çünkü paketler internet üzerinden indirilerek kuruluyor.

Kurulum sürecini görebilmemiz için sistem bizi otomatik olarak package installer bölümüne yönlendirecektir. Aşağıdaki şekilde kurulum sona erecektir.

Yukarıdaki gibi kurulumun başarılı olduğunu gördüğümüzde F5 ile sayfayı yeniliyoruz. Installed Packages’de squidin varlığına bakıyoruz ve Services sekmesi altına Proxy Server’in eklendiğini teyit ediyoruz. Bunları gördüysek kurulumumuz sorunsuz bir şekilde gerçekleşmiş demektir.

Services>Proxy Server’a tıklayarak Squid ayarlarına başlıyoruz.

Yukarıda neler yapmışız hemen açıklayama başlayalım:

Proxy Interface : Proxy olarak dinlenecek ara yüzü burada belirtiyoruz. İçerideki kullanıcılara vekil olacağımız için LAN Interfaceyi seçiyoruz.

Alluser on Interface : Buradaki kutuyu işaretlersek LAN Interface üzerinde bulunan bütün kullanıcıları seçmiş oluruz ve Access Control bölümünde kullanıcı seçmemize gerek kalmaz.

Transparent Proxy : Transparent Proxy Linux türevi firewalllarda redirect yeteneğini kullanarak kullanıcı pc’sinde hiç ayar yapmadan internet trafiğini bir Proxy üzerinden geçirmek için kullanılan yöntemdir. Aktif hale getirirsek kullanıcı PC’lerinin web tarayıcılarındaki yerel ağ ayarlarına herhangi bir Proxy girmek zorunda kalmayız.Bu işlem otomatik olarak kullanıcıların outbound http/80 olarak Proxy atamasını gerçekleştiriliyor. 

Bypass proxy for these source IPs: Yazdığımız ip adreslerinin proxy uygulamasından etkilenmeden internete çıkmasını sağladığımız seçenektir. Bu özellik destination ip’leri içinde mevcuttur ama sadece internet hizmeti verilecekse uygulanmasına gerek yoktur.

Enabled Logging : 5651 yasasına göre log tutma zorunluluğumuz var.

Log Store Directory : Log dosyasının yolunu ‘/var/squid/logs’ şeklinde belirtiyoruz.

Log Rotate : Kaç gün log tutulmasını istiyorsak o değeri giriyoruz. Sistem logları girdiğimiz değere eşit periyotlar ile yeniler.

Proxy Port : Proxy hizmetinin hangi port üzerinden verileceğini belirlediğimiz porttur. Bizim yukarıda işaretleyerek aktif hale getirdiğimiz Transparent özelliği 80 no’lu porta gelen istekleri squid ‘in çalıştığı port olan 3128’e yönlendirecektir.(redirection).

(Sonrasındaki hostname veya admin mail adresi kısmını açıklamıyorum herkes anlamıştır.)

En altta bulunan custom options bölümüne ise script girerek bazı ayrıcalıklı durumlara çözüm getirebiliyoruz (Windows update vs gibi )
Bu ayarlar Proxy Server’in çalışması için yeterli temel ayarlardır. Ama bu kadar ayar sistemin performanslı çalışması için yetmez biz devam ediyoruz.
Upstream proxy olayı proxy içinde proxy olayıdır bu sebeple orayı transit geçiyoruz  Cache management ile devam ediyoruz.

Hard Disk Cache Size : Squid cache dosyalarını tutmak için ne kadar bellek kullansın ? Bu sorunun cevabını buraya Mb. cinsinden giriyoruz. Bu değer donanıma göre değişiklik gösterebilir. Kullanıcı sayısı ve ağ yoğunluğuna göre de değişiklik gösterebilir. Ben 10000 Mb olarak cache belleği belirtiyorum. Ama HDD boyutuna yakın bir değer verebilirsiniz.

Memory Cache Size : Bu değer cache belleğe tampon olacak RAM miktarıdır. Burada gireceğimiz değerin donanımın toplam RAM miktarının yarısından fazla olmaması gerekir. Benim PC’de 1024 Mb RAM var bu sebeple ben buraya 512 Mb değerini giriyorum. Bu arada pc sanal makine .

Maximum Object Size: Cache’de tutulacak en büyük dosya boyutunu belirtir. Byte cinsinden ifade edilir. Ben 512000 girdim, yani en büyük dosya 512 Mb olsun.

Level 1 Subdirectories: Bazıları buradaki değerlerin cache’e alınacak web sitelerinin alt site sayısını belirttiğini (site derinliği) iddia etse de bu tamamen bir uydurmadır  Amaç site derinliği değildir. Squid’in kendi disk yapılandırması ile ilgilidir. Cache için kullanılan directorylerin altında kaç tane daha directory yaratabileceğini belirler. Bu değer ne kadar büyük olursa, squid’in ilk açılışı o kadar uzun sürer. Hızınız ya da trafiğiniz 3-4 tane adsl bağlantıdan ibaretse bunu kafanıza takmayınız. Ufak bir network ve kuvvetli bir pfsense makinesi için 32 iyi bir değerdir. Bizim makine dandik bu sebeple 16 giriyoruz.

Ve Access kontrol ile devam ediyoruz.

Allowed Subnets : Proxy interface üzerinde birden fazla subnet varsa buraya dahil edilmelidir. Örn: Bizim yapımızda 192.168.137.0/24 subneti Proxy interface ile aynı subnettedir bu sebeple onu girmemize gerek yok. Ama 192.168.1.0/24 subnetinde olan kullanıcıların da Proxy üzerinden çıkmasını istiyorsak bu kısma dahil etmeliyiz. Ancak sistemimiz proxy arayüzününde içinde olduğu tek subnetten oluşuyorsa boş bırakabiliriz.

Unrestricted IPs : Proxy’e uğramadan internete çıkış izni vereceğimiz kullanıcıların ip adreslerini buraya yazabiliriz.

Banned host addresses : İnternete çıkmasını yasaklamak istediğimiz ip adreslerini buraya yazabiliriz.

White list ve Black List : Bu kısımlara site adresleri yazıyoruz . Resim üzerinde küçük açıklamalarını yazdım. Squid üzerinde site engellemek çok tercih ettiğimiz bir yöntem değil. Biz bu iş için Dansguardian’ı kullanacağız onu ise bir başka yazıda anlatacağım.

Traffic Management ile devam ediyoruz:

Maximum download size : Yerel ağ tarafında kullanıcıların toplamda ne kadar download yapacağını burada sınarlayabiliyoruz. Kb cinsinden gireceğimiz bu değer 0 olursa bu özellik pasif durumdadır.

Maximum Upload Size : Burada aynı şekilde upload değeri limitlenebilir. Buraya girilen değere dikkat edilmesi gerekir sonra herkes aramaya başlıyor  (Sitelere girebildiğimiz halde internet bankacılık işlemlerini yapamıyoruz veya netten form dolduramıyoruz şeklinde şikayetler ) Çünkü kullanıcılar upload işlemine yanıt olarak. “ The request or reply is too large” hatası alıyorlar.

Overall bandwidth throttling : Saniyede yapılacak indirme hızını limitlemek için burayı kullanıyoruz. (Kbps cinsinden)

Per-Host Throttling : Yukarıda genel olarak hızı limitledik burada ise kullanıcı başına hız limitleyebiliyoruz. Değer yine kbps’dir.

Throttle only specific extensions : Burayı pasif durumda bırakırsak tüm dosya türleri devre dışı kalır. Kesinlikle işaretli konumda bırakıyoruz. Sonrasında aşağıdaki dosya türlerini işaret eden seçeneklere download/upload limit işlemi uygulayabiliriz.

Finish transfer if less than x KB remaining : Transfer edilecek dosya boyutu bizim buraya girdiğimiz değerden küçükse transfer işlemi tamamlanır.

Abort transfer if more than x KB remaining : Dosya bizim buraya yazdığımız değerden fazla ise transfer işlemi iptal edilecektir.

Finish transfer if more than x % finished : Transfer edilecek miktar buraya yazdığımız % cinsinden değeri geçerse transfer tamamlanır. Mesela bir dosya transferinde % 95 oldu ama limitlere takılıp iptal edildi. Bunu önlemek için bu sekmeyi kullanabiliriz.

(Auth.Settings ve Local user kısmını Squid, Windows LDAP uyumu konusunda anlatacağım.)

Bu noktadan itibaren squid kurulumunu tamamlamış olduk. Web browserı açıp bağlantı ayarlarında Proxy server adres ve port numarasını yazarsak nete artık Proxy üzerinden çıkabiliriz.

Eğer squid cache performansı sizi tatmin etmiyorsa network buffer size’ini artırabilirsiniz.
Bunun için :

/boot/loader.conf dosyası içindeki kern.ipc.nmbclusters=”0″ satırındaki 0 değerini “32768” yapabilirsiniz. Bu değeri maximum 65536 olarak verebileceğinizi de unutmayın. Bu değişikliği yaparsanız makinenizin durumuna göre reboot süresi 20-30 dk ‘ya kadar uzayabilir. Stabil bir yapınız varsa bu ayarı yapmanızı öneririm.

Eğer /boot/loader_conf dosyasının içi boş ise aşağıdaki gibi doldurursak makina adete uçar :

autoboot_delay=”3″
vm.kmem_size=”435544320″
vm.kmem_size_max=”535544320″
kern.ipc.nmbclusters=”32768″

Diğer bir ufak performans ayarı ise :

Stabil 2.0 sürümünden önceki dağıtımlar için :
Services – Proxy server – Cache management – Hard disk cache system : Ufs

Tüm dağıtımlar için :
System -> Advanced -> Sytem Tunables altındaki vfs.read_max=32 default değerini vfs.read_max=128 yaparsak performansımız artacaktır.

 Konu ile ilgili office word dökümanı: İndir
İyi çalışmalar.

15 yorum

  1. Bunu squid yada nginx proxy/cache modülüyle direk olarak yapamıyoruz; video yayınlayan sitelerin bant genişliklerini korumak için kullandığı mekanizmalar, canlı video için gereken düşük gecikme süreleri, sunucu ve istemcilerin uyumsuz davranışları gibi sorunları çözecek kodlara ihtiyaç var.

    1. Haklısınız ancak küçük ve orta ölçekli kurumlarda yukardaki yapılandırma yeterli olacaktır.Ancak video yayınlayan siteler için durum tabiki aynı değil.
      Yukarıda verimli bant genişliği kulanımından kastım bant genişliği yönetimi değil, vekil sunucunun bant genişliğinin yeterliliğinin sağlanmasına yönelik katkısını ifade etmektir.

  2. video ve arşiv dosyalarına özel hız limitleme yapmak istiyorum. İzlemem gereken yöntem nasıl olmalı?

  3. Wmvare üzerine pfsense kurulu , lan arayüz ip : 192.168.1.30 client makineden ping leyebiliyorum ama web arayüze erişemiyorum..Lütfen yardım.
    Pfsense
    Wan : 192.168.2.100
    Lan : 192.168.2.30

    1. Hangi browser kullanıyorsanız tüm history’i siliniz. Cache vs temizleyiniz.

      Daha sonra pfsense shell’den web servisi restart ediniz.

      Son olarak windows firewall’u kapatınız.

      Bir yerlerde hata yapmadıysanız erişirsiniz.

  4. Muhtemelen kurulum aşamasında interface ip ayarlarında son soruyu yani landan gelen webconfigator(gibi birşeydi ) lan arayüzüne erişim blokelensinmi sorusuna “y” diyorsunuzdur. o soru için “n” kullanmanız gerekiyor.

  5. Great goods from you, man. I have understand your stuff previous to and you are just extremely fantastic.
    I actually like what you’ve acquired here, certainly like what you’re stating and the
    way in which you say it. You make it entertaining
    and you still care for to keep it sensible. I can not wait to read far more from you.
    This is really a terrific web site.

  6. Thanks in support of sharing such a good opinion, piece of
    writing iis pleasant, thats whyy i have read it fully

  7. İyi günler. Benim bir sorum var ve bir türlü çözemedim.
    Squid ile filtreyi kurdum ve sorunsuz çalışmakta. Gerekli yasaklamaları da yaptım gayet güzel çalışıyor.
    Buna ilaveten traffic shaper ayarladım. Bu ayardan sonra trafik sınırlaması olmadığı gibi internet sayfası açtığımda da “sayfa bulunamadı” diyerek sayfa açılmıyor.

    Proxy server ayarlarında transparent modu devre dışı bıraktığımda internete çıkış sağladım ve trafik shaper çok güzel çalışmaya başladı. Fakat bu sefer filtre devre dışı kalıyor. Tam tersi yaptığımda da traffic shaper devre dışı kalıyor.

    Sorun neden kaynaklı olabilir. Bir yerde bir şey mi atladım. Yardımcı olursanız çok memnun olacağım.

    1. Merhaba Ziya, squid içinde “Traffic Management” mevcut. Oradan kullanıcılara hız limiti oluşturabilirsin.

      Öncelikle /etc/resolv.conf altında DNS sunucu tanımlı değilse bir tane ekle.

      İkincisi transparent proxy’de browser ayarlarında proxy ayarı olmasına gerek yok.

      Hala çalışmıyorsa /usr/local/squid/logs/cache.log’da ne var bizimle paylaşabilirsin.

      1. Squid altındaki traffic management bütün kullanıcılara limit koymuş olmayacak mı?
        Benim amacım belli başlı kullanıcılara limit koymak. Bazı ayrıcalıklı kullanıcılar, bu limite takılmasın istiyorum.

        Öte yandan,

        1- limit olayını traffic shaper ile yapıyorum sorunsuz bir şekilde.
        2- Ayrıca site filtrelemeyi de yapıyorum proxy filter ile.

        Sorun şu : proxy server altında “Transparent Proxy” aktif iken yukarıda yazdığım iki madde aynı anda çalışmıyor. Yani bu ikisi aynı aktif olduğunda internete çıkış vermiyor.

        Limiter(AKTİF) + Transparent Proxy(AKTİF) = INTERNETE ÇIKIŞ YOK.
        Limiter(PASİF) + Transparent Proxy(AKTİF) = INTERNETE ÇIKIŞ VAR fakat Limiter çalışmıyor.
        Limiter(AKTİF) + Transparent Proxy(PASİF) = INTERNET ÇIKIŞ VAR fakat filtre çalışmıyor.
        Limiter(PASİF) + Transparent Proxy(PASİF) = INTERNET ÇIKIŞ VAR fakat herşey pasif olduğu için hiçbirşey çalışmıyor.

        İşin özü, ikisini aynı anda çalıştıramadım. Bir sıkıntı olduğu kesin. Forumlara baktım, bunun bir bug olduğundan falan bahsediliyor ve yeni sürümün beklendiği söyleniyor ama ne derece doğru bilinmiyor.

  8. Ayrıca traffic shaper ile hız limiti yapmak için aşağıdaki patern sana yardımcı olur :

    Traffic shaper’da upload/download için 2 ayrı limiter profili oluştur.

    Sonra Firewall>Rules>LAN kısmından uygulamak istediğin subnete veya ip adresine bu limiter profilleri uygula. (En altta Advance Feature bölümünde in/out limiter olarak göreceksin.)

    Firewall’da bir yerlerde takılmadığı sürece problemsiz çalışır.

  9. Bu sorunu bende yaşamaya başladım. Çözebilen varsa izah eder yada kaynak gösterirse iyi bir paylaşım olacaktır.
    Şimdien ilgilenenlerden Allah razı olsun.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir