Menü
Bedava
kayıt
ev  /  ÜZERİNDE/ İki konfigürasyonlu bir kalamar örneği. CentOS'ta Squid'i yükleme ve yapılandırma

İki konfigürasyonlu bir kalamar örneği. CentOS'ta Squid'i yükleme ve yapılandırma

Tanıtım

Birçok yönetici, İnternet'e erişmek için zamanın ve kanalın makul kullanımı sorunu ile karşı karşıyadır, zamandan ve paradan tasarruf etme olasılığını düşünürken, belirli dosya veya kişilik türleri için hızı sınırlamayı, sonunda belirli ile ilgili her şeyi kaydetmeyi düşünür. İnternete erişmenin yönleri. küresel ağ.

Bu makalenin yardımıyla, en yaygın proxy sunucusu olan Squid'in ayarlarını açık ve anlaşılır bir şekilde açıklamaya çalışacağım.

Kullanıcı erişimi için ilk Squid ayarları

Squid proxy sunucusunu kurma sürecine girmeyeceğiz, ancak doğrudan onu yapılandırmaya gideceğiz.

Kurulumdan sonra yapmamız gereken en temel şey, yerel ağımızın kullanıcılarına erişime izin vermektir. Bunun için http_port, http_access parametreleri kullanılır. Ayrıca yerel ağımız için bir acl (erişim kontrol listesi) oluşturacağız.

Ve bu nedenle, Squid proxy sunucumuzun yalnızca yerel ağımızdaki bilgisayarlara hizmet etmesi ve dış ağdaki "kötü insanların" kanalımızı veya trafiğimizi kullanma olasılığını dışlamak için dış dünyaya görünmez olması gerektiği sürece http_port'a ihtiyacımız var ve Squid proxy kodunda "delikler" algılanırsa, bunları kullanın.

http_access parametresi, belirli kaynaklara, belirli adreslere veya belirli adreslerden belirli sitelere, belirli protokoller, bağlantı noktaları ve Acl (Erişim Kontrol Listeleri) kullanılarak doğrudan belirtilen her şeye erişime izin vermek veya erişimi reddetmek için kullanılır.

Tablo N 1. Bazı alt ağlar.

Adres aralığı

Tam form

kısa form

192.168.0.1-192.168.0.254

192.168.0.0/255.255.255.0

192.168.0.0/24

192.168.20.1-192.168.20.254

192.168.20.0/255.255.255.0

192.168.20.0/24

192.168.0.1-192.168.254.254

192.168.20.0/255.255.0.0

192.168.20.0/16

10.0.0.1-10.254.254.254

10.0.0.0/255.0.0.0

10.0.0.0/8


192.168.0.1'den 192.168.0.254'e kadar adresleri olan bir ağınız olduğunu varsayalım, ardından yeni bir Acl ekleyin (bkz. tablo N1):

Acl LocalNet kaynağı 192.168.0.0/24

3128 numaralı bağlantı noktasında 192.168.0.200 adresinde bulunan bir Squid proxy sunucunuz olduğunu varsayalım, ardından yapılandırma dosyasına şunu yazalım:

http_port 192.168.0.200:3128

Bir sonraki eylemimiz, yerel ağımızın kullanıcıları dışında proxy sunucumuzun kullanımını yasaklamak olacaktır:

Http_access LocalNet'e izin verir
http_access hepsini reddet

Bu durumda, izin ver kelimesi bir izin ve red kelimesi bir yasak anlamına gelir, yani Squid proxy sunucusuna yerel ağ adreslerimizden erişime izin verir ve diğer herkesin erişimini reddederiz.

Squid bunları belirttiğiniz sırayla kullandığından http_access'i belirtirken dikkatli olun.

ACL'leri Öğrenme (Erişim Kontrol Listeleri)

Squid proxy sunucusundaki erişim kontrol sistemi çok esnek ve kapsamlıdır. İzin verilen (izin) veya reddedilen (yasaklama) göstergeli değerlere ve erişim listelerine sahip öğelerden oluşur.

ACL formatı aşağıdaki gibidir:

acl eleman listesi adı

Erişim listesi formatı:

acl_name belirterek Http_access

Squid proxy sunucusunun izin verdiği bazı unsurlara elbette örneklerle bakacağız:

* acl adı kaynak listesi

Bu öğeyi (src) kullanarak, kaynak IP adresini, yani isteğin proxy sunucumuza geldiği istemciyi belirtiriz.

Aşağıdaki örnekte, Vasya Pupkin (Pupkin) ve programlama departmanının (Progs) proxy sunucumuza erişmesine izin vereceğiz ve diğer herkesi reddedeceğiz:

Acl Progs kaynağı 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
http_access Prog'lara izin ver
http_access Pupkin'e izin ver
http_access hepsini reddet

* acl adı dst listesi

Bu öğe (dst), hedef IP adresini, yani proxy sunucu istemcisinin erişmek istediği sunucunun IP adresini belirtir.

Aşağıdaki örnekte, Vasya'nın 194.67.0.0/16 alt ağına erişimini engelleyeceğiz (örneğin, aynı aport.ru'yu içeriyor):

Acl Net194 dst 194.67.0.0/16
http_access Pupkin Net194'ü reddet

* acl dst alan adı listesi

Bu eleman (dstdomain) ile proxy sunucu istemcisinin erişmek istediği etki alanını belirtiyoruz.

Aşağıdaki örnekte, Vasya'nın nnm.ru ve kpnemo.ru warez sitelerine erişimini engelleyeceğiz:

Acl SitesWarez dstdomain .nnm.ru .kpnemo.ru
http_access inkar Pupkin SitesWarez

Kaynak etki alanını belirtmek gerekirse, srcdomain kullanın.

* acl adı [-i] srcdom_regex listesi
* acl adı [-i] dstdom_regex listesi

Bu öğeler, srcdomain ve dstdomain'den yalnızca, bu makalede ele almadığımız normal ifadeleri kullanmaları bakımından farklıdır, ancak yine de bir örnek vereceğiz:

Acl SitesRegexSex dstdom_regex seks
Acl SitesRegexComNet dstdom_regex .com$ .net$
http_access inkar Pupkin SitesRegexSex
http_access inkar Pupkin SitesRegexComNet

Bu örnekte, Vasily Pupkin'in sex kelimesini içeren tüm alanlara ve .com ve .net bölgelerindeki tüm alanlara erişimini engelledik.

-i anahtarı, normal ifadelerdeki karakterlerin büyük/küçük harf durumunu yok sayacak şekilde tasarlanmıştır.

* acl adı [-i] url_regex listesi

Bu öğeyle (url_regex) URL için normal ifade modelini belirtiriz.

Sex kelimesiyle başlayan avi uzantılı dosyaları belirtmeye bir örnek:

Acl NoAviFromSex url_regex -i sex.*.avi$

Yalnızca URL yolu için, yani protokol ve ana bilgisayar (etki alanı) adı hariç olmak üzere bir kalıp belirtmek istemeniz durumunda, urlpath_regex'i kullanın.

Müzik dosyalarını belirtmek için örnek:

* acl acl_name bağlantı noktası listesi

Hedef port numarasının gösterimi, yani proxy sunucumuzun istemcisinin bağlanmak istediği port.

Örnek olarak, herkesin Mirc programını proxy sunucumuz aracılığıyla kullanmasını yasaklayacağız:

Acl Mirc bağlantı noktası 6667-6669 7770-7776
http_access tüm Mirc'leri reddet

* acl acl_name proto listesi

Aktarım protokolünü belirtin.

Örnek olarak yukarıda bahsedilen Vasya'nın proxy sunucumuz üzerinden FTP protokolünü kullanmasını engelleyelim:

Acl ftpproto proto ftp
http_access Pupkin ftpproto'yu reddet

* acl acl_name yöntem listesi

İstemci tarafından http istek yönteminin belirtilmesi (GET, POST).

Vasya Pupkin'in mail.ru web sitesinde postalarını görüntülemesini yasaklamanız gereken bir durumu ele alalım, ancak aynı zamanda sitede kısıtlama olmadan dolaşmasına izin verin, yani Vasya'nın posta kutusuna giriş formu aracılığıyla girmesini yasaklayın. site:

Acl SiteMailRu dstdomain .mail.ru
acl methodpost yöntemi POST
http_access inkar Pupkin methodpost SiteMailRu

Kullanıcı kısıtlamaları

Ülkemizde oldukça sık olarak, tüm kullanıcılar için küresel İnternet'e yeterli erişim kanalı olmadığı ve herkese maksimumu verme arzusu olduğu, ancak aynı zamanda bunlar nedeniyle kanalın "ölmesine" izin vermeme durumu vardır. Dosya indirmeyi sevenler.

Squid proxy araçları, bunun birkaç yolla elde edilmesini sağlar:

    ilk yol, nesne önbelleğe almayı optimize etmektir;

    ikincisi, belirli kullanıcılar için tamamen doğru olmayan zaman sınırıdır;

    üçüncü yol, belirli dosya türleri, kullanıcılar ve Acl aracılığıyla tanımladığımız her şey için hızı sınırlamaktır.

Zaman sınırları

Kullanıcıları zamana göre aşağıdaki gibi sınırlayabilirsiniz:

Acl adı zaman günleri ss:dd-ss:dd

Gün nerede: M - Pazartesi, T - Salı, W - Çarşamba, H - Perşembe, F - Cuma, A - Cumartesi, S - Pazar.

Bu durumda ss:dd SS:DD'den küçük olmalıdır, yani 00:00-23:59 arasında belirtebilirsiniz ancak 20:00-09:00 belirtemezsiniz.

Aynı Vasya'nın her gün sabah 10'dan akşam 3'e kadar İnternet'e erişmesini yasaklayalım:

ACL ZamanıPupkin zamanı 10:00-15:00
http_access inkar Pupkin TimePupkin

Vasya'nın Mirc programını 13:00 - 14:00 saatleri arasında kullanmasına izin vermek istiyorsanız, şunu yazıyoruz:

Acl ZamanıPupkin zamanı 13:00-14:00
http_access Pupkin Time'a izin verirPupkin Mirc
http_access Pupkin Mirc'i reddet

Peki ya haftanın belirli günlerinde yasaklamanız veya izin vermeniz gerekiyorsa? Squid ayrıca, örneğin Pazartesi ve Pazar günleri 13'ten 14'e kadar bunu yapmanıza izin verir:

Acl ZamanıPupkin zamanı MS 13:00-14:00

Gördüğünüz gibi, bu konuda karmaşık bir şey yok.

Hız sınırları

Squid proxy sunucusunda hız kontrolü havuzlar kullanılarak gerçekleştirilir. Havuz, biranın sürekli olarak ağzına kadar doldurulduğu ve müşterilerin kişisel muslukları aracılığıyla gerektiğinde daha fazla iç tüketim için bardaklarına veya diğer kaplara döküldüğü bir tür bira fıçısıdır.

Havuzlar üç parametre kullanılarak düzenlenir: delay_class, delay_parameters, delay_access. Havuz sayısı, delay_pools parametresi kullanılarak belirtilir.

Havuzlar üç sınıfta olabilir:

    Tüm bira akışı tek bir dokunuşla sınırlıdır (tüm ağ için).

    Tüm bira akışı bir muslukla sınırlıdır, ancak musluk musluklara bölünmüştür (her IP için).

    Bira akışının tamamı bir musluk ile sınırlıdır, ancak musluk alt musluklara (alt ağlara) bölünmüştür ve bunlar da mini musluklara (her IP için) bölünmüştür.

Biçimler:

Delay_pools number_of_declared_pools
delay_access pool_number eylemi acl_name

Eylem, izin vermek (izin vermek) ve reddetmek (yasaklamak) olabilir. Aynı zamanda bu havuz, kendisine izin verilenlere etki eder, yasaklananlara da etki etmez. Tümüne izin ver belirtilirse ve ardından Pupkin'i reddetse, bu sınıf yine de Pupkin'i etkileyecektir, çünkü. Pupkin'in acl'de belirtilen IP adresi Pupkin, acl all adres listesindedir. Bunu aklında tut.

Delay_class pool_number pool_class
delay_parameters pool_number parametreleri

Parametreler havuz sınıfına göre farklılık gösterir:

birinci sınıf için:

Delay_parameters 1 byte_to_whole_network

ikinci sınıf için:

Delay_parameters 1 per_network per_client

üçüncü sınıf için:

Delay_parameters 1 per_whole_network per_subnet per_client

Örneğin, 128 Kb bir kanalımız var (saniyede ortalama 15 Kb) ve Vasya'nın (Pupkin) sadece 4 Kb / s (her şey için küçük bir bardak), programlama departmanına (Prog) sadece 10 vermesini diliyoruz. Kb/sn ve her biri için yalnızca 5 Kb/sn (sadece iki bardak), diğerleri her biri için 2 Kb/sn ve herkes için 10 Kb/sn, mp3 (medya) dosyaları ise 3 Kb/sn ile sınırlandırılmalıdır. herkes için ikincisi (bütün bira fıçısında çok küçük bir musluk var). Sonra yazıyoruz:

Acl Prog kaynağı 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
acl LocalNet kaynağı 192.168.0.0/255.255.255.0
acl media urlpath_regex -i .mp3$ .asf$ .wma$

Delay_pools 4
# ilk limit mp3
gecikme_sınıfı 1 1
gecikme_parametreleri 1 3000/3000
delay_access 1 medyaya izin ver
delay_access 1 hepsini reddet
# zavallı Vasya'yı sınırla
gecikme_sınıfı 2 1
gecikme_parametreleri 2 4000/4000
delay_access 2 Pupkin'e izin verir
delay_access 2 hepsini reddet
# programlama departmanını sınırla
gecikme_sınıfı 3 2
gecikme_parametreleri 3 10000/10000 5000/5000
delay_access 3 Prog'a izin verir
delay_access 3 hepsini reddet
# ve şimdi gerisini kısıtlıyoruz (havuzun ikinci sınıfı)
gecikme_sınıfı 4 2
gecikme_parametreleri 4 10000/10000 2000/2000
delay_access 4 medyayı reddet
delay_access 4 Pupkin'i reddet
delay_access 4 Prog'u reddet
delay_access 4 LocalNet'e izin verir
delay_access 4 hepsini reddet

Sıklıkla şu soru ortaya çıkar, bu kadar küçük bir kanalı şu anda bir şey indiren herkes arasında otomatik olarak paylaşılacak şekilde kullanmanın en iyi yolu nedir? Bu sorunun net bir cevabı var - Squid proxy sunucusunu kullanarak bunu yapmak mümkün değil, ancak yine de bir şeyler yapılabilir:

gecikme_sınıfı 1 2
gecikme_parametreleri 1 -1/-1 5000/15000
delay_access 1 LocalNet'e izin verir
delay_access 1 hepsini reddet

Böylece tüm ağımız ve alt ağlarımız için maksimum kanalı ayırıyoruz (-1 sınırsız anlamına geliyor) ve her kullanıcıya belgenin ilk 15 Kb'sini maksimum hızda indirdikten sonra maksimum 5 Kb / s hız veriyoruz.

Böylece, müşteri tüm kanalı yemeyecek, ancak ilk 15 KB'yi hızlı bir şekilde alacak.

Squid'de nesne önbelleğe almayı optimize etme

Proxy sunucusunun, bu nesnenin önbelleğe alınamadığı veya şaşırtıcı bir şekilde yeni değiştiği web sunucularından gelen başlıklara yanıt vermesine izin verecek kadar sık ​​güncellenmeyen birçok dosya türü vardır. Bu oldukça yaygın bir durumdur.

Bu gibi durumları çözmek için Squid proxy ayarları dosyasındaki refresh_pattern parametresi kullanılır, ancak tamamen formüller vb. dikkate almayacağız.

Refresh_pattern [-i] dize MINV yüzdesi MAXV parametreleri

Bu parametre önbellekteki nesnenin (okunan dosyanın) yaşını, güncellenip güncellenmeyeceğini belirlemek için kullanılır.

MINV (minimum süre) - önbellekteki bir nesnenin yeni olarak kabul edildiği dakika cinsinden süre.

MAXV (maksimum süre) - nesnenin taze olarak kabul edildiği dakika cinsinden maksimum süre.

Seçenekler, aşağıdaki seçeneklerden biri veya birkaçıdır:

    override-expire - nesne süre sonu bilgisini yok sayar ve MINV'yi kullanır.

    override-lastmod - dosya değiştirme tarihi bilgilerini yoksay minv kullan.

    reload-into-ims - müşteriden "belgeleri önbelleğe almayın" (önbellek yok) isteğini sormak yerine, "Değiştirildiyse" isteğini gönderin (Değiştirildiyse-Since)

    yoksay-yeniden yükle - "belgeleri önbelleğe alma" (önbellek yok) veya "belgeyi yeniden yükle" (yeniden yükle) için istemci isteklerini yoksay.


Ve böylece en önemli şeye geliyoruz. Peki, en az hangi tür dosyalar güncellenir? Kural olarak, bunlar çeşitli müzik dosyaları ve resimlerdir.

Nesnelerin tazeliğini ayarlayalım, bunun için resimler ve müzik dosyaları için örneğin 30 gün (43200 dakika) kadar diyelim:

Refresh_pattern -i .gif$ 43200 100% 43200 override-lastmod override-expire
yenileme_pattern -i .png$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .jpg$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .jpeg$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .pdf$ 43200 %100 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .zip $ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .tar$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .gz$ 43200 100% 43200 geçersiz kılma-sonmod geçersiz kılma-sona erme
yenileme_pattern -i .tgz$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .exe 43200$ %100 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .prz$ 43200 100% 43200 geçersiz kılma-sonmod geçersiz kılma-sona erme
yenileme_pattern -i .ppt$ 43200 100% 43200 geçersiz kılma-sonmod geçersiz kılma-sona erme
yenileme_pattern -i .inf$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .swf$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .mid $ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .wav$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme
yenileme_pattern -i .mp3$ 43200 %100 43200 geçersiz kılma-son mod geçersiz kılma-sona erme

Yukarıda gösterilen ayarlar, özü açıklığa kavuşturmak için sadece bir örnektir.

Artık proxy sunucunuzun etkinliğini kontrol edebilirsiniz, kesinlikle artacaktır.

Çözüm

Squid proxy sunucusu tek popüler proxy sunucusu değil, başkaları da var. Ancak istatistiklerin gösterdiği gibi, çoğu insan bu belirli proxy sunucusunu kullanır, ancak aynı zamanda birçok yeni başlayanlar hala ayarlarla ilgili sorunlar yaşar.

Bugün proxy sunucuları hakkında konuşacağız.

Bir proxy sunucusu, bir ağdan diğerine birkaç bilgisayara erişim sağlayan bir şeydir (ancak yönlendiricilerle karıştırılmamalıdır - bunlar tamamen farklı şeylerdir, bir proxy sunucusu uygulama düzeyinde çalışır). Bir proxy sunucusunun en yaygın görevi, küresel ağa erişimi olan bir bilgisayar aracılığıyla kendisine sahip olmayan bilgisayarlar için İnternet erişimi sağlamaktır. Bir Windows bilgisayarının İnternet ağ geçidi olarak kullanılması durumunda bu görevi göz önünde bulundurun.

Bu sorunu çözmek için görsel bir arayüze sahip özel çözümler kullanabilirsiniz - örneğin UserGate, ancak Windows 7 yüklü bir bilgisayarda düzgün çalışmasını sağlayamadım ve ücretli :) Bu nedenle, elimizdeki en iyi çözümü düşünüyorum. * nix-s Squid'den. Bu kreasyonu şu adresten indirebilirsiniz: Squid 2.7 (bu yazının yazıldığı tarihteki en son sürüm)

Tercihen diskin kök dizinine indirin ve paketini açın. Oradan hiçbir şey çalıştırmaya çalışmayın - bu programın GUI'si yok - ve bunun sizi korkutmasına izin vermeyin :)
Ardından, konsolu açın - Win + R / cmd / kurulu kalamar ile klasöre gidin (bundan sonra c:\squid kurulum yolu için yazacağım)

C:\
cd c:\kalamar\sbin

Şimdi, squid'i şu komutla bir Windows hizmeti olarak yüklemeniz gerekiyor:

squid -i -f c:/squid/etc/squid.conf -n Squid27

Squid27, prensipte geçerli herhangi bir şey olabilen hizmetin adıdır.

Şimdi c:/squid/etc/ klasöründe bulunan squid.conf ayar dosyasını düzenlemeniz gerekiyor.Orijinal dosyanın yedeğini almanızı tavsiye ederim. Ardından, bu dosyadaki tüm metni silin ve aşağıdakileri yazın:

http_port 3128
acl yerel ağ kaynağı 192.168.3.0/255.255.255.0
acl localhost kaynağı 127.0.0.1/255.255.255.255
acl tümü kaynak 0.0.0.0/0.0.0.0
http_access yerel ağa izin ver
http_access localhost'a izin ver
http_access hepsini reddet

cache_log yok
cache_store_log yok

nerede

  • http_port 3128 - squie'nin çalıştığı sunucudaki port numarası Yani, istemci ayarlarında sunucu adresini ve bu portu belirleyeceğiz;
  • acl yerel ağ kaynağı 192.168.0.0/255.255.0.0- bu satır, proxy'mize bağlanmanın mümkün olduğu ip adresleri aralığını belirtir. Maske /8, /16, /24 (sırasıyla 255.0.0.0, 255.255.0.0, 255.255.255.0 için) olarak belirtilebilir ve adı localnet'tir. Aslında, bu satırla daha fazla çalışacağımız bir değişken ilan ediyoruz. sonraki satır benzer şekilde tüm mevcut ips'lerin belirtildiği all değişkenini bildirir;
  • http_access yerel ağa izin ver - bu satır ile localnet değişkeninde belirtilen ip'den proxy'mize erişime izin veriyoruz;
  • http_access hepsini reddet - Diğer herkesin proxy'ye erişmesini engelleyin. Bu izinler yukarıdan aşağıya doğru çalışır, bu nedenle bu satır en son belirtilmelidir! Aksi halde proxy'ye kimse ulaşamaz :)
  • cache_log yok - gerekli, günlüklerin gigabayta dönüşmemesi için sonraki satırı beğenin)
Ayrıca aşağıdaki seçenekleri de girebilirsiniz:
  • cache_mem 32 MB - RAM'deki ek kalamar önbelleğinin boyutunu belirler;
  • cache_dir ufs c:/squid/var/cache 100 16 256- önbellek klasörünün yolunu, boyutunu MB (100) ve alt klasör sayısını belirler (neden ikincisi - hala anlamıyorum :))
Şimdi aynı klasördeki mime.conf dosyasının adındaki ".default" öğesini kaldırmanız veya bu adla boş bir metin dosyası oluşturmanız gerekir. Bu, önbelleğin oluşumu için gereklidir. Konsolda şu komutu yazıyoruz (sbin klasöründe olmak üzere):

squid -z -f c:\squid\etc\squid.conf

Prensip olarak, proxy'mizi başlatmaya hazırız. Komut satırına yazıyoruz (veya Hizmetler'e gidip fare ile çalıştırabilirsiniz :)

net başlangıç ​​Squid27

Durmak:

net stop kalamar27

Yeniden yapılandırma:

squid -n Squid27 -f c:/squid/etc/squid.conf -k yeniden yapılandır

Bu proxy'de hala birçok şey yapabilirsiniz, örneğin, farklı kullanıcılar için zaman, hız, belirli sitelere erişimi reddetme vb. makale - bu tür materyalleri İnternette bulmak kolaydır.

Sistemi güncelliyoruz:

firewalld'ye bir kural ekleyin:

güvenlik duvarı-cmd --kalıcı --add-port=3128/tcp

* nerede 3128 - proxy sunucumuzun yapılandırılacağı bağlantı noktası.

ve firewalld'yi yeniden başlatın:

güvenlik duvarı-cmd --yeniden yükle

Squid'i yükleme ve yapılandırma

Proxy sunucusunu aşağıdaki komutla ayarlayın:

yum kalamar yükleyin

Ve düzenleme için yapılandırma dosyasını açın:

vi /etc/squid/squid.conf

İstemci bilgisayarların ağı standart olandan (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8) farklıysa, onu acl'ye eklemeniz gerekir, örneğin:

acl yerel ağ kaynağı 217.66.157.0/24

veya dosya yoluyla:

acl localnet kaynağı "/etc/squid/acl_localnet"

* alıntılar gereklidir
** bir dosya oluşturmanız gerektiğinde /etc/kalamar/acl_localnet ve her satırdan izin verilen IP adreslerini listeleyin.

Tüm trafiğe izin vermek için aşağıdaki satırı ekleyin:

http_access hepsine izin ver

* yasaklayıcı olandan daha yüksek olması önemlidir - http_access hepsini reddet

Önbellek için bir dizin oluşturun:

cache_dir ufs /var/spool/kalamar 4096 32 256

* nerede ufs- dosya sistemi (SQUID için ufs en uygunudur); /var/spool/kalamar- önbellek depolama dizini; 4096 - önbellek için ayrılacak megabayt cinsinden alan miktarı; 32 - önbelleği barındırmak için oluşturulacak birinci düzey katalogların sayısı; 256 — önbelleği barındırmak için oluşturulacak ikinci düzey katalogların sayısı.

Şimdi aşağıdaki komutla önbellek için klasör yapısını oluşturuyoruz:

Ve zaten kalamar başlatabilirsiniz:

systemctl kalamar başlat

Otomatik çalıştırmayı etkinleştirmeyi unutmayın:

systemctl kalamar etkinleştir

muayene

Tarayıcı ayarlarına giriyoruz ve bir proxy sunucusunun kullanımını yapılandırıyoruz. Örneğin, Mozilla Firefox'ta ayarlar aşağıdaki gibi yapılmalıdır:

* nerede 192.168.163.166 — Proxy sunucumun IP adresi.

Şimdi 2ip.ru sitesini açıyoruz. Yükledikten sonra harici IP adresini göreceğiz - bu, yapılandırılmış SQUID'in çalıştığı ağa karşılık gelmelidir.

Şeffaf proxy

Şeffaf Proxy, bilgisayarınızın tarayıcısını yapılandırmanıza gerek kalmadan otomatik olarak bir proxy sunucusu kullanmanıza olanak tanır. Kullanıcılar, trafiğin kalamardan geçtiğinin farkında bile olmayabilirler.

vi /etc/squid/squid.conf

Çizgiyi buluyoruz:

Ve onu aşağıdaki forma getiriyoruz:

http_port 3128 şeffaf

Ve kalamar yeniden başlatın:

systemctl kalamar yeniden başlat

Kalamar + HTTPS

CentOS 7'de kalamar için https'yi özel olarak yapılandırmam gerekmiyordu - her şey varsayılan olarak çalıştı.

Giriş ve şifre yetkilendirme

Yapılandırma dosyasını açın:

vi /etc/squid/squid.conf

Aşağıdakileri ekleyin:

auth_param temel programı /usr/lib64/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param temel çocuklar 25
auth_param temel bölge SQUID PROXY
auth_param temel kimlik bilgileri 3 saat
acl auth_users proxy_auth GEREKLİ

* nerede /usr/lib64/kalamar/basic_ncsa_auth- ncsa_auth'un konumu (sisteme bağlı olarak farklı bir dizinde bulunabilir); /etc/squid/auth_users- oturum açma bilgileri ve şifreleri içeren bir dosya; çocuklar 25 25 eşzamanlı bağlantıya izin verir; kalamar vekili- selamlama için isteğe bağlı bir ifade; kimlik bilgilerittl 3 saat oturumu 3 saat tutacak, ardından kullanıcı adınızı ve şifrenizi yeniden girmeniz gerekecek.

http_access reddet !Safe_ports

Ekleriz:

http_access auth_users'a izin ver

Kullanıcılarla bir dosya oluşturun ve ilk oturum açma ve parola çiftini oluşturun:

htpasswd -c /etc/squid/auth_users kullanıcı1

* sistem bir hata döndürürse " bash: htpasswd: komut bulunamadı» komutu ile htpasswd'yi kurun yum httpd araçlarını yükleyin

İkinci bir kullanıcı oluşturun:

htpasswd /etc/squid/auth_users user2

Ve kalamar yeniden başlatın:

systemctl kalamar yeniden başlat

Giden ağ arayüzü

Sunucumuzun birden fazla harici IP adresi olabilir. Varsayılan olarak, tüm giden istekler varsayılan ağ geçidi arabiriminden geçer. Kalamar ile farklı arayüzler üzerinden çalışabilmek için konfigürasyona ekliyoruz.

Squid, sayfa yanıt sürelerini azaltmak ve ayrıca ağ trafiğini filtrelemek için çoğunlukla sık istenen web içeriğini önbelleğe almak için kullanılan popüler bir proxy sunucusudur. HTTP, FTP, TLS, SSL, Internet Gopher ve HTTPS gibi birçok farklı protokolü destekler. Ve bu şey, yavaş bir İnternet bağlantısıyla çok faydalı olabilir. Squid başlangıçta bir Unix arka plan programı olarak geliştirildi, ancak Windows için birkaç bağlantı noktası yayınlandı. Squid, GNU Genel Kamu Lisansı altında dağıtılmaktadır.

Bu eğitimde, Squid'i Ubuntu 16.04'e nasıl kuracağınızı öğreneceksiniz. Sadece bu talimatları sırayla izleyin ve squid ubuntu'yu yüklemek herhangi bir soruna neden olmaz. Squid oldukça özellikli bir programdır ve tüm özelliklerini bu makalede ele alamıyoruz, ancak tamamen özelleştirip kullanabilmeniz için temel bilgileri ele almaya çalışacağız. Kurulumla başlayalım.

Squid'i Ubuntu'ya kurmanın birkaç yolu vardır, en yaygın olanlardan biri apt yardımcı programını kullanarak resmi depolardan yüklemektir.

İlk önce Ctrl+Alt+T ile bir terminal açın ve paket dizinini güncelleyin:

Paket listesini güncelledikten sonra, aşağıdaki komutu yürüterek proxy sunucusunu kurmaya devam edebilirsiniz:

sudo apt kalamar yükleyin

Ardından yardımcı program kuruluma devam etmeniz gerekip gerekmediğini soracak, Y girin ve indirme ve kurulumun tamamlanmasını bekleyin:

Ardından ayara geçebilirsiniz.

Kalamar Kurulumu

Sunucu yapılandırma dosyası /etc/squid dizininde bulunur. Squid'in sürümüne bağlı olarak, klasörün adı ve dosyanın kendisi farklılık gösterebilir, örneğin /etc/squid3/squid.conf veya /etc/squid/squid.conf. Tüm ayarlar bu dosyadadır. Bir göz atalım.

vim /etc/squid3/squid.conf

Dosya açıldığında şöyle bir şey göreceksiniz:

Dosya, çeşitli ayar seçeneklerinin yanı sıra bunların kullanımına ilişkin birçok belge içerir. Birçoğuna dokunmayacağız, ancak ana olanları ele alacağız.

Giriş kontrolu

Öncelikle proxy sunucumuz için istemci erişim kurallarını ayarlamamız gerekiyor. Squid kurumsal bir program olarak tasarlandı ve evde kullansanız bile squid 3 konfigürasyonunun da yapılması gerekiyor.

Bunun için acl listesi kullanılır. bu normal bir nesne listesi, şimdi hiçbir şey ifade etmiyor. Bunlar ip adresleri, portlar vb olabilir. Daha sonra programa bu liste ile ne yapacağını, erişime izin vermesini veya erişimini reddetmesini söyleyeceğiz. Bir acl listesi oluşturmak için sözdizimi şöyledir:

acl list_name list_type list_item

Aynı isim ve tipte birkaç dizi olabilir ve bunlardan bir liste elde edilir. Listenin adı isteğe bağlı olabilir, daha sonra kullanacağız. Liste türü çok daha ilginç. Şunlardan biri olabilir:

  • kaynak- bağlantının geldiği ip adresi, müşteri adresi;
  • dst- bağlantının hedefinin ip adresi, istemcinin erişmek istediği sunucunun adresi;
  • dstdomain- bağlantı hedef etki alanı;
  • srcdomain- müşteri etki alanı;
  • arp- müşterinin ağ kartının MAC adresi;
  • zaman- bağlantının yapıldığı zaman;
  • Liman- istemcinin erişmeye çalıştığı bağlantı noktası;
  • proto- bağlantının kurulduğu protokol;
  • yöntem- veri aktarım yöntemi, örneğin, GET - HTTP veri aktarımı, POST - HTTP'de form veri aktarımı, CONNECT - sunucu bağlantı isteği;
  • http_status- Sunucu cevabı;
  • tarayıcı- istemci tarayıcısı;
  • url_regex- erişilen url adresi.

Bunlar tüm liste türlerinden uzaktır, ancak başlangıç ​​için bu kadarı yeterlidir ve daha ayrıntılı bilgiler aynı yapılandırma dosyasındadır.

Yerel ağdan sunucuya erişmek için bir liste ekleyelim:

acl yerel ağ kaynağı 192.168.0.0/16

Ana ağ hizmetlerinin portlarında ve ayrıca 1024'ün üzerindeki kayıtsız portlarda trafiğe izin vermek için bir Safe_ports listesi oluşturalım:

acl Safe_ports bağlantı noktası 80 # http
acl Safe_ports bağlantı noktası 21 # ftp
acl Safe_ports bağlantı noktası 443 # https
acl Safe_ports bağlantı noktası 70 # engelleyici
acl Safe_ports bağlantı noktası 210 #wais
acl Safe_ports bağlantı noktası 1025-65535 # kayıtsız bağlantı noktası
acl Safe_ports bağlantı noktası 280 # http-mgmt
acl Safe_ports bağlantı noktası 488 # gss-http
acl Safe_ports bağlantı noktası 591 # dosya oluşturucu
acl Safe_ports bağlantı noktası 777 # çoklu işlem http

İki liste daha oluşturalım - SSL_ports ve connect, connect metodunun sadece ssl bağlantıları için kullanılmasına izin verin. Bu, istemcinin bizimkilerin üzerine başka proxy'ler kullanmasını önleyecektir:

acl SSL_ports bağlantı noktası 443

acl bağlantı yöntemi CONNECT

Dediğim gibi bu listeler tek başına bir şey ifade etmez ve sunucunun çalışmasını hiçbir şekilde etkilemez. Listeyi uygulamak için http_access yönergesini kullanmanız gerekir. Sözdizimi:

http_access eylem listesi_adı

Eylem izin verilebilir (izin verilir) veya reddedilebilir (yasaklanabilir). şimdi Safe_ports'ta belirtilenler dışındaki tüm bağlantı noktalarına erişimi reddedelim:

http_access reddet Bağlan !SSL_ports

Şimdi bu bilgisayardan erişime izin verelim (acl list localhos önceden tanımlanmıştır):

http_access localhost'a izin ver

Yerel ağdan erişime izin verelim:

http_access yerel ağa izin ver

Ve diğer her şeyi yasaklayın:

http_access hepsini reddet

Diğer ayarlar

Erişim kontrolü en önemli bileşenlerden biridir, ancak squid ubuntu'nun yapılandırılması henüz tamamlanmamıştır. Daha birçok ilginç parametre var, bunlardan sadece birkaçını ele alacağız:

http_port- programın çalışacağı ip adresini ve portu ayarlar. Proxy'yi yalnızca aşağıdaki yapıya sahip bu bilgisayarda çalıştırabilirsiniz:

http_port localhost:3218

Veya yerel ağda:

https_port- https bağlantılarının kabul edileceği ip adresini ve portu ayarlar. Bu makalede https ile çalışmayı ele almıyoruz.

önbellek_mem- nesneleri önbelleğe almak için ayrılan bellek miktarı.

cache_dir - önbelleği depolamak için klasörü ayarlamanıza izin verir. Varsayılan olarak, tüm önbellek RAM'de depolanır. Sözdizimi:

cache_dir dosya sistemi klasör size_in_mb L1 L2

L1 ve L2 - birinci ve ikinci seviyelerin alt klasörlerinin sayısı. Dosya sistemi, verilerin diske nasıl yazılacağını belirler. Örneğin:

cache_dir aufs /var/spool/squid 100 16 256

coredump_dir- bir hata durumunda bellek dökümünün kaydedileceği dizin.

yenileme_pattern- önbellekteki nesnelerin ömrünü uzatmanıza izin veren çok ilginç bir parametre. Sözdizimi:

yenileme_pattern -i Düzenli ifade min_time yüzde max_time parametreler

  • Düzenli ifade- parametrenin uygulanması gereken nesneleri belirtir;
  • min_time- nesnenin taze olduğu kabul edilene kadar geçen süre;
  • max_time- nesne taze olana kadar dakika cinsinden maksimum süre;

parametreler şunlar olabilir:

  • geçersiz kılma-sona erme- sona erme başlığını yoksay;
  • geçersiz kılma-lastmod- dosyanın son değişiklik tarihini görmezden gelin;
  • ims'e yeniden yükle- önbelleğe almamak yerine bir If-Modified-Since isteği gönderin;
  • yoksay-yeniden yükle- istemci isteklerini yoksay, önbelleğe almayın.

Örneğin:

yenileme_pattern -i \.gif$ 43200 100% 43200 geçersiz kılma-son mod geçersiz kılma-sona erme

Squid ubuntu kurulumu tamamlandıktan sonra başka ayarlara ihtiyacınız olabilir. Ancak bunlar bu makalenin kapsamı dışındadır. Şimdi değişikliklerinizi kaydedin, dosyayı kapatın ve Squid'i yeniden yükleyin:

sudo hizmeti squid3 yeniden başlatma

Bu komut bir hata döndürürse, başka bir tane deneyin:

sudo hizmeti kalamar yeniden başlatma

Proxy sunucumuzun çalışmasını kontrol etmek için kalır. Bu, herhangi bir tarayıcı kullanılarak yapılabilir. Tarayıcı ayarlarınızı açın ve proxy'yi yapılandırın. Bunu Mozilla Firefox'ta nasıl yapacağınızı size göstereceğim. Farklı bir tarayıcınız varsa, örneğin Google Chrome, proxy'nin orada nasıl yapılandırıldığını anlayacağınızı düşünüyorum.

İstemci tarafı kurulumu

Bir tarayıcı açın, şuraya gidin: Ayar --> bunlara ek olarak --> . sonra tıklayın Ayarlar kısımda Bağ ve seçin proxy'yi manuel olarak yapılandır:

alanında HTTP proxy'si Squid sunucusunun kurulu olduğu makinenin IP adresini ve bağlantı noktası alanında - bağlantı noktası numarası 3128'i belirtin. Bu bağlantı noktası Squid'de varsayılan olarak kullanılır, ancak bağlantı noktası numarasını /etc/squid/squid kullanarak değiştirebilirsiniz. konf