Bahan lain dalam kategori Linux. Caching pelayan proksi telus tanpa nama Sotong

Artikel ini memberikan contoh persediaan cepat caching pelayan proksi Sotong masuk Linux Debian 6. Hasil daripada persediaan adalah keupayaan untuk mengakses Internet melalui pelayan ini melalui protokol: http, https dan ftp.

Biar saya membuat tempahan dengan segera bahawa pelayan yang dihasilkan tidak pelindung lonjakan dan berpotensi terdedah kepada serangan rangkaian.
Pelayan dikonfigurasikan pada OS Linux Debian 6. Semua arahan yang diberikan di bawah mesti dilaksanakan dengan hak superuser (root).

Amaran penting serta-merta: kebenaran dan proksi telus tidak serasi! Anda perlu memilih satu perkara. Amaran kedua: kebenaran melalui proksi akan mengehadkan akses Internet hanya melalui protokol HTTP. Protokol lain: FTP, SMTP, POP3 dan lain-lain akan terus berfungsi secara senyap melalui NAT. Walaupun dalam organisasi kecil ini tidak begitu kritikal, yang paling banyak digunakan (dan disalahgunakan) adalah tepat protokol HTTP, dan salah satu tugas pentadbir ialah menyekat akses pekerja ke Internet melalui penyemak imbas.

Jika anda menggunakan Apteture dan memuat turun pakej daripada rangkaian, saya syorkan anda mengemas kini senarai pakej semasa sebelum pemasangan:

# kemas kini apt-get

Mari mulakan pemasangan Sotong:

# apt-get install squid3

Selepas pemasangan selesai, kami mula mengedit fail konfigurasi sotong. Saya tidak tahu tentang anda, saya secara peribadi merasa lebih mudah apabila tidak ada yang berlebihan dalam fail konfigurasi, iaitu, hanya parameter konfigurasi yang ada. Untuk melakukan ini, mari kita sandarkan konfigurasi sotong asal (supaya terdapat tempat untuk mencari perihalan semua parameter):

cp /etc/squid/squid.conf /etc/squid/squid.conf.original

dan ekstrak dari konfigurasi asal semua yang tidak diulas:

kucing /etc/squid/squid.conf.original | grep -v "^\(#\|$\)" > /etc/squid/squid.conf

Akibatnya, kami akan mempunyai konfigurasi lalai tanpa apa-apa yang mewah. Tetapi saya masih sangat mengesyorkan untuk melihat konfigurasi asal dan membacanya pada masa lapang anda - terdapat banyak perkara menarik di sana!

Nah, akhirnya, mari kita mula mengedit:

nano /etc/squid/squid.conf

Selepas pemasangan, anda perlukan tweak kecil. Buka fail konfigurasi Squid dalam editor, yang sepatutnya terletak di /etc/squid/squid.conf. Dalam fail ini kita dapati baris:

Acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src 192.168.0.0/16

Baris-baris ini perlu diulas. Dan tambah baris anda sendiri dengan parameter anda sendiri rangkaian tempatan. Ia sepatutnya kelihatan seperti ini:

# acl localnet src 10.0.0.0/8
# acl localnet src 172.16.0.0/12
# acl localnet src 192.168.0.0/16
acl localnet src 192.168.1.0/24 # Rangkaian tempatan sendiri

Dalam baris terakhir, bukannya 192.168.1.0/24, anda perlu menggantikan parameter rangkaian anda.

Di bawah komen # TAG: http_access anda perlu mencari talian:

Http_access membenarkan localhost
atau
http_access membenarkan localhost pengurus

Sejurus selepas baris ini tambah baris:

Http_access membenarkan localnet
cache_dir ufs /var/cache/sotong 2048 16 256
mkdir -p /var/cache/sotong
chmod 755 -R /var/cache/sotong

Dengan itu membenarkan akses kepada rangkaian kepada semua komputer pada rangkaian tempatan. Selepas ini, simpan fail squid.conf dan mulakan semula pelayan Squid:

# /etc/init.d/squid mulakan semula

Jika selepas memulakan semula sotong anda mendapat ralat (AMARAN cache_mem lebih besar daripada jumlah ruang cache cakera!) cuma kurangkan nilai parameter cache_mem 8 MB saya tetapkan kepada 32

Jika anda membuat perubahan pada fail konfigurasi kerana ralat, maka Squid harus but semula dengan jayanya. Jika ralat berlaku, anda boleh mengetahui sebab ia berlaku dalam fail Log: /var/log/squid/cache.log
Mengkonfigurasi penyemak imbas untuk berfungsi melalui pelayan Proksi

DALAM pilihan ini tetapan, pelayan kami tidak boleh menghalakan permintaan rangkaian secara automatik ke port pelayan proksi. Oleh itu, pelayar perlu menyatakan secara eksplisit alamat pelayan kami.

Adalah penting bahawa pelayan proksi pada rangkaian tempatan mempunyai alamat IP tetap. Mari kita anggap bahawa milik anda ialah 192.168.1.1. Sebagai contoh, untuk mengkonfigurasi internet Explorer Anda perlu membuka Alat-Pilihan Internet-Sambungan-Tetapan Rangkaian. Dalam tetingkap yang terbuka, semak Gunakan pelayan proksi untuk sambungan tempatan. Tandai kotak Jangan gunakan pelayan proksi untuk alamat tempatan. Dalam medan Alamat, masukkan alamat IP pelayan proksi kami: 192.168.1.1. Dalam medan Port, masukkan port lalai yang digunakan oleh Squid: 3128.

Selepas tetapan ini, penyemak imbas anda akan mengakses rangkaian melalui pelayan proksi baharu kami. Dalam penyemak imbas lain, tetapan adalah serupa dengan yang di atas untuk Internet Microsoft Penjelajah.

Port pelayan proksi boleh ditukar mengikut budi bicara anda dalam fail /etc/squid/squid.conf. Ia diberikan dalam baris:

http_port 3128 telus

Kesimpulan
Memasang dan mengkonfigurasi pelayan proksi caching berdasarkan Squid hanyalah langkah pertama dalam mencipta pintu masuk yang produktif ke Internet. Tidak lama kemudian saya akan memberitahu anda bagaimana untuk menyediakan "Pelayan Proksi Telus", Firewall dan bagaimana anda boleh menyimpan statistik lawatan tapak oleh pengguna rangkaian tempatan.

Adalah sangat penting untuk mengkonfigurasi iptables dengan betul. Pilihan kedua lebih rendah sedikit, saya lebih suka

Pada langkah ini, saya cadangkan anda membuat skrip persediaan, kerana ia berguna sebagai alat universal.1 # vim ./setiptables.sh

#!/bin/bash
LAN=$1
WAN=$2
IP=$3
GW=$4
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to $IP:3128
iptables -t nat -A PREROUTING -i $WAN -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MAQUERADE
iptables -A FORWARD -i $WAN -o $LAN -s $GW/24 -p tcp -m multiport --dport 443,21,22 -j TERIMA
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1

Kami telah melabelkan pembolehubah (untuk kemudahan), 3 peraturan untuk jadual NAT dan 1 untuk FORWARD.
Kami menggunakan port 443,21,22 untuk memintas pelayan proksi.
Selain itu tetapan iptables, dalam skrip ini, kami mendayakan pemajuan paket.
Mari jalankan seperti ini: 1

# sh ./setiptables.sh eth0 eth1 192.168.100.1 192.168.100.0

6) Sediakan autoloading tetapan iptables.
Mari kita simpan tetapan iptables.

# mkdir -p /usr/local/iptables && iptables-save > /usr/local/iptables/session.ipt

Tambahkan arahan autorun ke /etc/rc.local (Saya suka Perl, tetapi yang lain mungkin berbeza).

# perl -i -pe "print "iptables-restore< /usr/local/iptables/session.ipt\n" if $. == 2" /etc/rc.local

Juga, jangan lupa tentang pemajuan paket

# perl -i -pe "cetak "sysctl -w net.ipv4.ip_forward=1\n" jika $. == 3" /etc/rc.local

Pilihan kedua untuk menyediakan iptables firewall

Mari dayakan pemajuan dalam sistem. Dalam fail /etc/sysctl.conf, nyahkomen baris

net.ipv4.ip_forward=1

seterusnya masa ini kami telah menetapkan semula tetapan firewall (iptables) sepenuhnya.

Menetapkan semula rantai:

$ sudo iptables -F
$ sudo iptables -F -t nat
Kami melarang semua masuk dan membenarkan semua keluar dan penghantaran:
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT TERIMA
sudo iptables -P FORWARD TERIMA
Kami membenarkan anda menerima respons kepada sambungan yang SUDAH ditetapkan:
sudo iptables -A INPUT -m negeri --negeri BERKAITAN, DITUBUHKAN -j TERIMA
Benarkan trafik gelung balik:
sudo iptables -A INPUT -i lo -j TERIMA
Kami membenarkan semua lalu lintas dari kami rangkaian dalaman(mari ambil subnet 222):
sudo iptables -A INPUT -s 192.168.222.0/24 -i eth1 -j TERIMA
Dan, jaminan ketelusan! Kami mengubah hala semua trafik http keluar (ke port 80) ke port sotong 3128:
iptables -t nat -A PREROUTING -s 192.168.222.0/24 -p tcp -m tcp --dport 80 -j REDREECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.222.0/24 -o eth0 -j SNAT --to-source 192.168.56.39

Kami menyemak Internet pada pelanggan. Biar saya ingatkan anda bahawa jika tidak perlu menentukan proksi, anda mesti menetapkan get laluan!
Walau bagaimanapun, selepas but semula pertama, kami akan memahami bahawa semua usaha kami adalah sia-sia.
Mari ajar mereka bagaimana untuk terus hidup!
Jadi, mari simpan semua yang kami lakukan di sini:

iptables-save > /etc/firewall.conf

Silap mata ini tidak berjaya untuk saya dengan sudo (walaupun secara teori sepatutnya...), jadi anda boleh melakukannya dengan log masuk ke root sepenuhnya (su) dan menjalankan arahan, tetapi tanpa sudo.
Sekarang mari kita buat skrip yang memaksa ifupdown untuk menghidupkan semula firewall kami:

nano /etc/network/if-up.d/00-iptables

Mari masukkan yang berikut ke dalamnya:

#!/bin/sh
iptables-restore< /etc/firewall.conf

Mari kita tetapkan hak pelaksanaan:

chmod +x /etc/network/if-up.d/00-iptables

Secara umum, menyediakan pelayan proksi telus selesai, tetapi agar log boleh dibaca, kami perlu melumpuhkan sokongan ipv6 (disebabkan fakta bahawa ipv6 tidak dikonfigurasikan pada penyesuai, akan terdapat banyak amaran) .

Lumpuhkan IPv6 jika tiada siapa yang menggunakannya

Saya cadangkan buat skrip sekali lagi supaya tidak keliru.
nano ./ipv6disable.sh

#!/bin/bash
perl -i -pe "cetak "alias net-pf-10 ipv6 off\n" jika $. == 17" /etc/modprobe.d/aliases.conf
perl -i -pe "cetak "alias net-pf-10 off\n" jika $. == 18" /etc/modprobe.d/aliases.conf
perl -i -pe "cetak "alias ipv6 off\n" jika $. == 19" /etc/modprobe.d/aliases.conf
gema 1 | tee /proc/sys/net/ipv6/conf/all/disable_ipv6
echo "senarai hitam ipv6" | tee -a /etc/modprobe.d/blacklist.conf
STR=$(cat /boot/grub/grub.cfg | sed -n "67p")
STR=$(STR)" ipv6.disable=1"
sed "67d" /boot/grub/grub.cfg > /boot/grub/grub.cfg.backup
cp /boot/grub/grub.cfg.backup /boot/grub/grub.cfg
sed -i 67i\ "$STR" /boot/grub/grub.cfg

DALAM garis besar umum Apa yang berlaku dalam skrip ini:
Pertama, lumpuhkan api ipv6 dalam modul kernel.
Seterusnya, kami menetapkan penanda dalam /proc untuk tidak menggunakan ipv6.
Dan dalam baris 67 /boot/grub/grub.cfg kami menambah parameter ipv6.disable=1.
Gimik dengan tee dan sed ini diperlukan untuk menyimpan tetapan dalam /boot/grub/grub.cfg, kerana peranti di sana ditetapkan bukan oleh /dev/sd* dan oleh UUID.
Walaupun semuanya sentiasa boleh disiapkan dengan tangan.
Sekarang kita perlu memasang pelindung sotong
Jadi, separuh daripada kerja sudah selesai, kini yang tinggal hanyalah memasang pakej SquidGuard dan mengkonfigurasinya. Untuk memasang, tulis dalam terminal dari bawah pengguna akar (hak akar dalam Debian GNU/Linux anda boleh mendapatkannya dengan arahan su, di Ubuntu kami menulis sudo sebelum arahan):

apt-get install squidguard

Selepas pemasangan, muat turun arahan senarai hitam wget dari terminal (perhatian, saiz fail ialah 24 MB!):
wget -c my_blacklists.tar.gz

Dan bongkarkannya ke dalam direktori di mana pangkalan data SquidGuard harus ditempatkan (hak pentadbir diperlukan):

tar zxvf my_blacklists.tar.gz -C /var/lib/squidguard/db

Hasil daripada membongkar, direktori /var/lib/squidguard/db/my akan muncul, mengandungi banyak subdirektori kategori berbeza dengan senarai domain dan alamat tapak yang tidak diingini. Kami menyusun senarai ini berdasarkan tiga senarai hitam yang dimuat turun dari tapak http://www.squidguard.org, http://www.shallalist.de dan http://www.urlblacklist.com. Akibatnya, senarai kami mengandungi lebih daripada 3 juta tapak.

Kini anda perlu mengkonfigurasi gabungan Squid dan SquidGuard dan menyambung senarai hitam kepada mereka. Untuk melakukan ini, tambahkan pada fail squid.conf baris berikut dengan membuka fail dalam editor nano dengan hak pentadbir:

nano /etc/squid/squid.conf

Tambahkan baris ke penghujung fail:

Redirector_bypass dihidupkan
redirect_program /usr/bin/squidGuard
redirect_children 1

mv /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf_original

Muat turun fail konfigurasi squidGuard.conf dari tapak web kami menggunakan arahan wget dalam terminal:
wget -c squidGuard.conf

Salin ke tempat fail lama (dengan hak pentadbir):

cp squidGuard.conf /etc/squid/squidGuard.conf

Selepas menyalin fail konfigurasi, kami memulakan penukaran senarai hitam teks yang anda muat turun dan bongkar ke dalam format pangkalan data Berkeley DB (arahan akan dijalankan untuk beberapa lama - anda perlu menunggu sehingga ia selesai sepenuhnya) dengan menjalankan arahan daripada pentadbir:

squidGuard -d -C semua

Jika semuanya dilakukan dengan betul, maka selepas perintah terminal akan memaparkan banyak mesej tentang penciptaan fail pangkalan data baru, dan pada akhir siri mereka, anda akan melihat sesuatu seperti ini:

16-03-2012 12:51:53 squidGuard 1.4 bermula (1331887787.768)
16-03-2012 12:51:53 kemas kini db selesai
16-03-2012 12:51:53 squidGuard berhenti (1331887913.657)

Apakah yang akan dikatakan oleh kejayaan menyiapkan pangkalan data senarai hitam? Seterusnya, tetapkan hak pelayan Squid kepada fail pangkalan data dengan menjalankan arahan dengan hak pentadbir:

chown -R proksi:proksi /var/lib/squidguard/db/

Dan mulakan semula pelayan Squid dengan menjalankan Debian sebagai root:

/etc/init.d/squid3 mulakan semula

Selepas memulakan semula, hasilnya adalah kerjasama Squid dan SquidGuard akan mengubah hala dari tapak yang tidak diingini ke tapak tersebut. Anda boleh menggantikannya dengan mana-mana halaman lain dengan menukar alamat baris terakhir fail konfigurasi /etc/squid/squidGuard.conf.

Menukar entri dalam senarai domain dan URL
Contoh. Di sebelah fail domains.db dalam folder /var/lib/squiguard/db/direction, buat fail domains.diff. Kami memasukkan satu baris atau beberapa baris ke dalamnya, satu untuk setiap entri:

Tapak web (yang bermaksud memadamkan domain ini daripada pangkalan data)
atau +sysadmin -komi.ru (yang bermaksud tambahkan domain ini pada pangkalan data)

Kami memberi arahan:

(kemas kini pangkalan data db daripada fail diff. Dalam log squidguard anda boleh melihat berapa banyak yang telah ditambah/dipadamkan.)

$ squid3 -k konfigurasi semula

(Baca semula tetapan tanpa dimulakan semula.)
Tidak perlu memadamkan fail domains.diff atau memadamkan entri daripadanya. Fail ini juga berguna semasa kemas kini pangkalan data global. Dan dengan pelbagai kemas kini, tiada pertindihan rekod dalam pangkalan data.

Anda boleh membuat peraturan ubah hala anda sendiri dengan menambah atau mengecualikan kategori tapak yang tidak diingini. Malangnya, adalah mustahil untuk mendapatkan perlindungan 100%, kerana... Tapak baharu dengan kandungan yang tidak menyenangkan muncul sentiasa. Walaupun anda sentiasa mengemas kini senarai hitam. Jika anda memerlukan perlindungan yang kukuh, maka SquidGuard boleh dikonfigurasikan untuk berfungsi dengan senarai putih tapak yang dibenarkan, melarang segala-galanya - tetapi kemudiannya akan ada set tapak yang sangat terhad.

Dan ada satu saat lagi! Mari letakkan statistik tentang siapa, apa, di mana dan mengapa, dinamakan sarg

apt-get install sarg

Ia akan menarik bersama seluruh persaudaraan pakej, dan tidak hairanlah, kerana ia memerlukan pelayan web untuk memaparkan hasilnya.

Kami menyesuaikan konfigurasi (/etc/squid/sarg.conf) agar sesuai dengan diri kami. Berikut adalah baris utama yang perlu diberi perhatian:

Access_log /var/log/squid/access.log
...
output_dir /var/www/squid-reports
...
set aksara UTF-8

Buat direktori terakhir jika ia tidak wujud.
Mari kita lancarkan twill (alangkah baiknya untuk menolak pelancarannya ke cron, saya tidak akan menerangkannya di sini... lagi)

Hooray! Kami pergi dari dalam rangkaian ke pelayan kami, mengagumi laporan di http://IP_SERVER/squid-reports/
Semua lelaki sudah bersedia. Jika anda mempunyai sebarang soalan, tanya, saya akan membantu dalam apa cara yang saya boleh.

Masa yang baik, wahai pembaca sekalian dan tetamu! Dengan artikel ini saya akan mula menerangkan kerja pelayan proksi caching SQUID. Artikel ini kebanyakannya akan menjadi pengenalan dan teori.

Apakah pelayan proksi dan apa itu sotong

Saya akan mulakan dengan asas. sotong ialah pelayan proksi caching untuk HTTP, FTP dan protokol lain. Pelayan proksi untuk HTTP ialah program yang membuat permintaan HTTP bagi pihak program klien (sama ada penyemak imbas atau perisian lain). Proksi mungkin caching atau bukan caching. Caching, sewajarnya, menyimpan semua permintaan ke beberapa storan untuk penghantaran lebih cepat kepada pelanggan, dan bukan caching- hanya menyiarkan HTTP, ftp atau permintaan lain. Sebelum ini, caching trafik memungkinkan untuk mencapai penjimatan trafik yang agak ketara, tetapi pada masa kini, dengan peningkatan kelajuan Internet, ini telah kehilangan sedikit kaitannya. Pelayan proksi boleh dibina dalam hierarki untuk memproses permintaan. Pada masa yang sama, pelayan proksi berinteraksi antara satu sama lain menggunakan protokol ICP.

sotong direka dan boleh bekerja pada kebanyakannya sistem operasi(kedua-dua unix dan tingkap). Berlesen di bawah lesen GNU GPL. Mampu memproses dan menyimpan permintaan HTTP, FTP, gopher, SSL dan WAIS (dialih keluar dalam 2.6), serta DNS. Paling Pertanyaan yang kerap kedai dalam memori capaian rawak. Pada masa ini terdapat 2 versi stabil sotong: 2.7 Dan 3.1 . Perbezaan boleh didapati dalam pautan di akhir artikel. Semua kebergantungan semasa memasang daripada pakej adalah sama. Fail konfigurasi versi 2 serasi dengan versi 3, tetapi versi 3 menambah parameter baharu. Dalam artikel saya akan pertimbangkan versi sotong3. Perlu diingatkan juga bahawa jika anda memasang squid3, ia akan menyimpan fail konfigurasinya /etc/sotong3, serta log lalai dalam squid3 berada dalam direktori /var/log/squid3/, tetapi tidak /var/log/sotong/, kerana banyak penganalisis log "suka berfikir."

Perkataan "disebut berkali-kali" caching"Dan apakah sebenarnya ini - caching? ini kaedah untuk menyimpan objek yang diminta daripada Internet pada pelayan yang terletak lebih dekat dengan komputer yang meminta daripada yang asal. Objek Internet ialah fail, dokumen atau respons kepada permintaan kepada mana-mana perkhidmatan yang disediakan di Internet (contohnya, FTP, HTTP atau gopher). Pelanggan meminta objek Internet daripada cache proksi; jika objek belum dicache, maka pelayan proksi menerima objek (atau dari nod rangkaian yang ditentukan oleh yang diminta alamat URL, sama ada daripada cache ibu bapa atau jiran) dan menghantarnya kepada pelanggan.

Mod pengendalian pelayan proksi sotong

Pelayan proksi Squid boleh beroperasi dalam tiga mod utama berikut:

Mod lutsinar

Dalam mod ini Sambungan HTTP dijalankan oleh pelanggan dialihkan ke pelayan proksi tanpa pengetahuan atau konfigurasi eksplisit mereka. Dalam mod ini, konfigurasi pelanggan tidak diperlukan. Kecacatan kaedah ini : Konfigurasi NAT dan ubah hala trafik diperlukan, pengesahan pelanggan tidak berfungsi, permintaan FTP dan HTTPS tidak diubah hala.

Mod pengesahan

Untuk bekerja dalam mod ini, pelanggan mesti dikonfigurasikan untuk bekerja dengan pelayan proksi (alamat pelayan proksi mesti dinyatakan dalam tetapan sambungan). Pengesahan dan kebenaran pelanggan boleh dilakukan melalui Kerberos, Ldap, NTLM, IP dan Radius. Ia adalah mungkin untuk membina interaksi dengan pelayan Microsoft Direktori Aktif dengan mengesahkan klien ahli domain menggunakan protokol Kerberos, dan kebenaran ahli kumpulan domain yang seterusnya menggunakan LDAP dalam mod telus (pengguna memasukkan kata laluannya hanya apabila mendaftar dalam domain). Untuk kumpulan yang dibenarkan adalah mungkin untuk digunakan pelbagai tetapan kawalan capaian dan QoS (kumpulan kelewatan).

Proksi terbalik

Pelayan proksi menyimpan data keluar. Proksi terbalik Squid menerima data daripada pelayan HTTP bagi pihak klien dan menghantarnya kembali kepada klien (contohnya, ke Internet). Mod ini membolehkan anda:

  • Menggunakan caching, yang mengurangkan beban pada pelayan HTTP;
  • Muatkan pengagihan antara pelayan HTTP;
  • menyamar pelayan HTTP dan ciri-ciri mereka;
  • Mencegah serangan web pada pelayan.

Gambar rajah mod operasi SQUID

mod telus

mod terbalik

mod pengesahan

Dalam rajah yang ditunjukkan, anak panah hijau menunjukkan aliran trafik proksi. Pergerakan aliran ini dalam Linux paling kerap dikawal oleh kuasa dan tetapan penyemak imbas. Di samping itu, selalunya, fungsi penghala dan proksi dilakukan oleh satu mesin.

Memasang SQUID

Sebelum memasang dan mengkonfigurasi sotong, anda mesti memastikan bahawa mesin di mana sotong akan dijalankan mempunyai akses kepada rangkaian luaran dan pelanggan yang akan menggunakan proksi ini mempunyai akses kepada mesin ini. Memasang pelayan proksi sotong, seperti perisian lain di Linux, adalah mungkin cara yang berbeza diterangkan dalam artikel. Saya akan membincangkan cara memasang dari repositori dalam Debian. Jadi, untuk memasang squid anda perlu memasang pakej squid3, untuk melakukan ini jalankan arahan berikut:

Gw ~ # aptitude install squid3 Pakej BAHARU berikut akan dipasang: libltdl7(a) squid-langpack(a) squid3 squid3-common(a) 0 pakej dikemas kini, 4 baru dipasang, 0 pakej ditandai untuk dialih keluar dan 0 pakej tidak dikemas kini . Ia adalah perlu untuk mendapatkan 2,157 kB arkib. Selepas membongkar, 10.3 MB akan diduduki. Adakah anda mahu meneruskan? y Dapatkan:1 http://ftp.ru.debian.org/debian/ squeeze/main libltdl7 i386 2.2.6b-2 Dapatkan:2 http://ftp.ru.debian.org/debian/ squeeze/main squid- langpack semua 20100628-1 Dapatkan:3 http://ftp.ru.debian.org/debian/ squeeze/main squid3-common semua 3.1.6-1.2+squeeze2 Dapatkan:4 http://ftp.ru.debian.org /debian/ squeeze/main squid3 i386 3.1.6-1.2+squeeze2 Menerima 2,157 kB dalam 9s (238 kB/s) Memilih pakej yang tidak dipilih sebelum ini libltdl7. (Membaca pangkalan data... pada masa ini 41133 fail dan direktori dipasang.) Pakej libltdl7 dibongkar (daripada fail.../libltdl7_2.2.6b-2_i386.deb)... Memilih pakej squid-langpack yang tidak dipilih sebelum ini. Pakej squid-langpack dibongkar (daripada fail.../squid-langpack_20100628-1_all.deb)... Memilih pakej squid3-common yang tidak dipilih sebelum ini. Pakej squid3-common dibongkar (daripada fail.../squid3-common_3.1.6-1.2+squeeze2_all.deb)... Memilih pakej squid3 yang tidak dipilih sebelum ini. Pakej squid3 dibongkar (daripada fail.../squid3_3.1.6-1.2+squeeze2_i386.deb)... Pencetus untuk man-db diproses... Pakej libltdl7 (2.2.6b-2) dikonfigurasikan.. Pakej squid-langpack dikonfigurasikan (20100628-1) ... Mengkonfigurasi pakej squid3-common (3.1.6-1.2+squeeze2) ... Mengkonfigurasi pakej squid3 (3.1.6-1.2+squeeze2) ... Mencipta struktur direktori kili 3.x proksi HTTP Squid 2012/02/15 21:29:41| Mencipta Direktori Swap Memulakan Semula Sotong HTTP Proxy 3.x: squid3Mencipta Squid HTTP Proxy 3.x struktur cache ... (amaran). 2012/02/15 21:29:43| Mencipta Direktori Swap.

Seperti yang anda lihat, semasa memasang pakej, terdapat percubaan untuk mencipta direktori cache, tapi sebab ia tidak dikonfigurasikan, maka amaran muncul. Juga, sotong ditambahkan pada permulaan, dilancarkan dan menerima sambungan pada semua antara muka. Tapi sebab ia tidak dikonfigurasikan, akses kepada halaman Internet melalui pelayan adalah terhad. Konfigurasi sotong terletak di /etc/squid3/squid.conf dan terdiri daripada lebih daripada 5.5 ribu baris dan sintaksnya boleh dikatakan tidak berbeza daripada konfigurasi mana-mana perkhidmatan lain. Tidak berbaloi untuk tergesa-gesa menukar beberapa tetapan dengan segera. Kemudian anda tidak akan dapat meraihnya. Mari lihat konfigurasi yang ditawarkan kepada kami secara lalai tanpa komen dan baris kosong:

Gw ~ # grep -v ^# /etc/squid3/squid.conf | grep -v ^$ pengurus acl proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port 80 # https # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt # acl Safe_ports ports acl 4-ports acl pembuat fail acl Safe_ports port 777 # multiling http acl CONNECT kaedah CONNECT http_access benarkan pengurus localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access benarkan localhost http_access deny all http_port 3128 hierarchy_stoplist cgi-bin? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

Seperti yang anda lihat, dalam konfigurasi lalai, pelayan proksi sedang berjalan dan membenarkan permintaan hanya daripada alamat 127.0.0.0/8. Anda harus menyemak dengan teliti keseluruhan senarai dan mengulas baris dengan port perkhidmatan yang tidak diperlukan atau tidak digunakan. Pemahaman yang lebih lengkap tentang konfigurasi ini adalah selepas membaca bahagian berikut. Itu. jika kami melancarkan pelayar konsol lunx menunjuk ke proksi kami, kami boleh melihat halaman yang diberikan:

Gw ~ # # lancarkan pelayar yang menyatakan halaman ya.ru: gw ~ # http_proxy=http://127.0.0.1:3128 lynx ya.ru Mencari "ya.ru" dulu gw ~ # # dalam log kita lihat akses kepada halaman yang ditentukan : gw ~ # cat /var/log/squid3/access.log 1329527823.407 110 127.0.0.1 TCP_MISS/200 9125 GET http://ya.ru/ - DIRECT/93.158.134.203 text/html

Beberapa parameter dalam fail konfigurasi sotong boleh digunakan beberapa kali (contohnya, acl). Sesetengah parameter, terutamanya yang mempunyai satu nilai, hanya boleh digunakan sekali. Pada masa yang sama, apabila menggunakan parameter ini 2 kali atau lebih, ia akan digunakan nilai terakhir. Sebagai contoh:

Logfile_rotate 10 # Pelbagai nilai - yang terakhir ialah 5 logfile_rotate 5

pengurusan sotong

Parameter yang digunakan untuk menyusun sotong pengedaran anda boleh dilihat menggunakan perintah squid3 -v. Sebagai contoh, dalam Debian squeezy squid dibina dengan parameter yang diberikan di bawah:

Awalan=/usr - awalan untuk kunci lain: --mandir=$(awalan)/share/man - direktori untuk menyimpan halaman manual --libexecdir=$(prefix)/lib/squid3 - direktori dengan modul boleh laku (termasuk pembantu) - -sysconfdir=/etc/squid3 - direktori storan konfigurasi --with-logdir=/var/log/squid3 - direktori storan log dan banyak lagi. dan lain-lain...

Menyediakan sotong

Penerangan tentang tetapan sotong3 Saya akan mulakan dengan tetapan asas, yang dinasihatkan untuk dilakukan semasa menyediakan sebarang konfigurasi pelayan proksi. Konfigurasi sotong terletak di /etc/squid3/squid.conf, ini ialah fail konfigurasi utama yang mengandungi semua tetapan. (DALAM Pengedaran Debian dan RedHat juga melihat parameter dari fail konfigurasi permulaan apabila bermula /etc/default/squid3 Dan /etc/sysconfig/squid3, masing-masing). Juga, saya menyebut bahawa terdapat lebih daripada 5 ribu baris dan ia tidak berbaloi untuk tergesa-gesa untuk mengkonfigurasi sesuatu tanpa memahaminya dengan segera. sintaks konfigurasi squid3 klasik: baris dengan # ialah ulasan, parameter ialah baris " nilai parameter", adalah mungkin untuk digunakan. Fail konfigurasi dibahagikan kepada bahagian untuk kemudahan, tetapi adalah penting untuk diingat bahawa parameter dihuraikan "dari atas ke bawah" mengikut keutamaan. Juga, menggunakan sertakan parameter anda boleh menyambungkan fail konfigurasi luaran.

Secara lalai, nama hos yang menjalankan Squid diselesaikan menggunakan gethostname(), bergantung kepada Tetapan DNS, kadangkala tidak dapat menentukan dengan jelas nama yang akan muncul dalam log dan output ralat " Dijana ... oleh server.com (sotong/3.0.STABLE2)" Untuk merekodkan nama hos dengan betul, anda perlu memasukkan nama ini (FQDN??) ke dalam parameter:

Visible_hostname myproxy

Secara lalai, sotong menerima sambungan pada semua antara muka. Jika pelayan kami adalah salah satu daripada antara muka rangkaian melihat ke dalam dunia luar, maka adalah dinasihatkan untuk mengehadkan sambungan hanya pada antara muka rangkaian tempatan (contohnya, 10.0.0.10/24). Bertanggungjawab untuk ini Parameter http_port:

Http_port 10.0.0.10:3128

Cara parameter ini berfungsi boleh dilihat dalam penyenaraian berikut:

Gw ~ # # semak daemon sebelum menyediakannya: gw ~ # netstat -antp | grep squ tcp 0 0 0.0.0.0:3128 0.0.0.0:* DENGAR 25816/(sotong) gw ~ # # perubahan dibuat: gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10 ~:312 # # baca semula konfigurasi gw yang diubah suai ~ # /etc/init.d/squid3 reload Memuat semula fail konfigurasi Proksi HTTP Squid 3.x. selesai. gw ~ # # semak operasi dengan konfigurasi yang diubah: gw ~ # netstat -antp | grep squ tcp 0 0 10.0.0.10:3128 0.0.0.0:* DENGAR 25816/(sotong)

Seperti yang anda lihat, kini daemon hanya berfungsi pada antara muka rangkaian yang ditentukan. Ia juga perlu diperhatikan bahawa versi baru sotong (<3.1) поддерживают задание нескольких параметров http_port. При этом, у разных параметров могут быть указанны дополнительные ключи такие как intercept, tproxy, accel и др., например:

Gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10:3128 http_port 10.0.0.10:3129 tproxy

Parameter ini menetapkan mod pengendalian pelayan proksi. Sebagai contoh, tproxy (sintaks lama - telus) menetapkan mod. Mod ini layak untuk artikel berasingan dan boleh dipertimbangkan pada masa hadapan.

Sekarang anda perlu mengkonfigurasi komputer klien dan menggunakan Internet. Tetapi secara lalai, akses hanya dibenarkan daripada localhost dan apabila cuba mengakses web, pengguna akan menerima ralat "Akses ditolak". Log /var/log/squid3/access.log akan mengandungi sesuatu seperti ini:

1329649479.831 0 10.0.1.55 TCP_DENIED/403 3923 DAPATKAN http://ya.ru/ - TIADA/- text/html

Untuk membolehkan pelanggan rangkaian tempatan berfungsi, adalah perlu konfigurasikan kebenaran menggunakan senarai kawalan akses.

Menyediakan akses sotong

Sebenarnya tetapan akses ialah penerangan objek akses melalui parameter acl, dan kemudian kebenaran atau larangan kerja objek acl yang diterangkan menggunakan parameter "http_access". Format paling mudah untuk tetapan ini adalah seperti berikut:

Acl list_name selection_type ciri selection_type

di mana acl- penghuraian parameter senarai kawalan capaian, yang namanya diberikan oleh nilai senarai nama. Namanya sensitif huruf besar. jenis_pilihan menentukan jenis yang diberikan di bawah akan sepadan ciri_jenis_pemilihan. Ciri ini boleh mengambil nilai yang biasa digunakan seperti src(dari sumber) - sumber permintaan, dst- alamat destinasi, arp- Alamat MAC, srcdomain Dan dstdomain- nama domain sumber dan destinasi, masing-masing, pelabuhan- pelabuhan, proto- protokol, masa- masa dan ramai lagi. Sehubungan itu, nilai ciri_jenis_pemilihan akan terbentuk bergantung kepada jenis_pilihan.

Anda boleh menentukan beberapa baris acl dengan nama dan selection_types yang sama, dalam hal ini data acl akan digabungkan menjadi satu senarai dengan operasi OR logik. Sebagai contoh:

Acl site dstdomain site.com acl site dstdomain site.org # serupa dengan entri: acl site dstdomain site.com site.org

Dalam perkataan, bunyinya seperti ini: senarai akses bernama tapak memiliki semua permintaan yang dihantar ke site.com ATAU site.org. Selain itu, rescue_names adalah sensitif huruf besar-besaran, bermakna tapak acl dan Tapak acl ialah 2 senarai akses yang berbeza.

Setelah senarai akses telah dijana, menggunakan Parameter http_access membenarkan atau menolak akses kepada ACL yang ditentukan. Format panggilan umum ialah:

Http_access allow|tolak [!]list_name

di mana, http_access- parameter yang menentukan peraturan kebenaran berikutnya ( benarkan) atau larangan ( menafikan) akses yang dinyatakan di bawah senarai nama. Walau bagaimanapun, tanda seru pilihan menyongsangkan maksud nama senarai. Iaitu dengan tanda seru maksudnya senarai nama akan berbunyi seperti semua orang kecuali mereka yang tergolong dalam senarai ini. Selain itu, anda boleh menentukan beberapa senarai yang dipisahkan oleh ruang, kemudian akses akan dibenarkan jika ia tergolong dalam semua senarai yang ditentukan. Dalam kes ini, semua peraturan membenarkan mesti dinyatakan sebelum SEMUA peraturan larangan:

Http_access menafikan semua

Soalan munasabah mungkin timbul: mengapa menetapkan peraturan ini jika, sebagai contoh, kami membenarkan akses kepada sotong hanya kepada acl terpilih? Lagipun, selebihnya yang tidak jatuh ke dalam acl ini "melewati" ... Ia mudah. Secara lalai, sotong menggunakan peraturan membenarkan/menafikan yang bertentangan dengan peraturan yang terakhir. Sebagai contoh:

# kami mempunyai satu peraturan membenarkan acl pengguna tertentu: http_access allow user # jika, apabila mengakses sotong, klien tidak termasuk dalam acl ini, maka tindakan penafian akan digunakan padanya. # Dan jika kami mempunyai dua peraturan http_access membenarkan pengguna http_access menafikan pengguna2 # dan klien bukan ahli sama ada pengguna acl atau pengguna acl2, maka allow akan digunakan untuknya. # Iaitu, tindakan bertentangan dengan yang terakhir http_access menafikan pengguna2

Ini, seperti yang mereka katakan, adalah asas. Mari kita lihat contoh mudah. Katakan kita mempunyai 2 rangkaian 10.0.1.0/24 dan 10.0.0.0/24, serta hos 10.0.4.1, yang perlu dibenarkan akses ke Internet. Untuk membenarkan akses, anda perlu membuat perihalan senarai akses baharu dalam bahagian "KAWALAN AKSES" fail squid.conf:

Acl lan src 10.0.1.0/24 10.0.0.0/24 acl lan src 10.0.4.1

Untuk kemudahan yang lebih baik, anda boleh menetapkan peraturan ini dalam fail berasingan, dengan menyatakan laluan kepadanya di lokasi ciri_jenis_pemilihan. di sini:

Gw ~ # # mari buat direktori berasingan untuk menyimpan senarai akses gw ~ # mkdir /etc/squid3/acls/ gw ~ # # letakkan subnet dan hos kami dalam fail berasingan gw ~ # vim /etc/squid3/acls/lan. acl gw ~ # cat /etc/squid3/acls/lan.acl 10.0.1.0/24 10.0.0.0/24 10.0.4.1 gw ~ # # huraikan fail yang dibuat dalam konfigurasi (laluan mesti disertakan dalam petikan) gw ~ # grep lan.acl /etc /squid3/squid.conf acl lan src "/etc/squid3/acls/lan.acl"

Mari benarkan akses senarai akses lan yang dibuat ke Internet dan beritahu sotong untuk membaca semula fail konfigurasi:

Gw ~ # grep lan /etc/squid3/squid.conf | grep acce http_access allow lan gw ~ # service squid3 reload Memuat Semula Sotong HTTP Proxy 3.x fail konfigurasi. selesai.

Untuk meringkaskan bahagian ini secara ringkas, kita boleh mengatakan bahawa acl mengenal pasti permintaan Web dan http_access membenarkan atau menolak permintaan yang dikenal pasti. Kini pelanggan tempatan kami gembira menggunakan Internet selepas menyediakan penyemak imbas mereka!

Mengkonfigurasi tetapan cache sotong

Perkara penting dalam menyediakan sotong ialah menetapkan parameter caching dalam sotong. Lokasi cache ditetapkan parameter cache_dir dalam sotong.conf. Format parameter adalah seperti berikut:

Saiz laluan jenis Cache_dir L1 L2

di mana, menaip- ini adalah algoritma pembentukan cache, mungkin: ufs (sistem fail unix), aufs (ufs tak segerak), diskd(proses luaran untuk mengelakkan sekatan sotong pada cakera I/O). Disyorkan untuk digunakan ufs, walaupun ada yang memuji aufs. Laluan- menentukan lokasi cache dalam sistem fail (mesti wujud dan mempunyai hak akses tulis untuk pengguna di mana sotong sedang berjalan - biasanya proksi). Saiz- menetapkan saiz maksimum selepas itu cache akan mula dikosongkan. Terdapat banyak holivars di Internet untuk parameter ini. Saiz cache yang ideal adalah dari 2 hingga 10 GB bergantung pada bilangan pelanggan. Kira-kira 1 GB cache untuk setiap 100 ribu permintaan/hari. Saya berpegang kepada 5 GB. Dalam Squid, setiap objek cache terletak dalam fail berasingan; fail itu sendiri tidak dibuang di satu tempat, tetapi hierarki direktori dua peringkat digunakan. Bilangan direktori tahap 1 dan 2 dan tentukan parameter L1 dan L2. Nilai ini boleh dibiarkan sebagai lalai. Tetapi untuk membantu anda menavigasi situasi, saya akan memberikan anda petikan daripada bog.pp.ru:

Percubaan menunjukkan bahawa dengan cache 700 MB, hanya 2 direktori peringkat pertama digunakan. Iaitu, untuk struktur direktori cache standard, sejuta objek (9 GB) "selesa" masuk ke dalamnya; jika terdapat lebih banyak daripada mereka, maka anda perlu menambah bilangan direktori peringkat atas

Anda boleh menggunakan beberapa cache_dir. Ini mempunyai kesan positif terhadap prestasi, terutamanya jika cache diletakkan pada cakera yang berbeza. Anda boleh mempercepatkan cache dengan lebih banyak lagi dengan meletakkan cache dalam tmpfs. Bagi setiap parameter cache_dir mungkin dalam bahagian pilihan tentukan parameter baca sahaja (baca sahaja) dan saiz maksimum (saiz objek maksimum).

Saiz maksimum objek dalam cache ditentukan oleh parameter maximum_object_size, nilai lalai ialah 4 MB. Saya meningkatkan nilai ini kepada 60 MB, kerana... Pekerja di rangkaian tempatan selalunya perlu memuat turun fail dari jenis yang sama sehingga saiz yang ditentukan:

Saiz_objek maksimum 61440 KB

Begitu juga? terdapat juga parameter saiz_objek minimum bertanggungjawab untuk saiz minimum objek; secara lalai nilainya ialah "0", iaitu, dilumpuhkan. Saya mengesyorkan meningkatkan nilai parameter ini kepada 2-3 KB, yang akan mengurangkan beban cakera apabila mencari objek kecil.

kapasiti RAM, digunakan oleh sotong dinyatakan dalam parameter cache_mem, nilai lalai ialah 256 MB (dalam versi 3.1). Saya meninggalkan nilai ini sebagai lalai. Anda harus menukar nilai ini hanya jika sotong meminta anda berbuat demikian dalam log. Selepas perubahan ini, anda perlu memulakan semula sotong, dan struktur direktori akan dibuat:

Gw ~ # perkhidmatan squid3 mula Memulakan Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x struktur cache ... (amaran). 2012/02/19 22:58:21| Mencipta Direktori Swap 2012/02/19 22:58:21| /var/spool/squid3 wujud 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/00 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/01 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/02 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/03 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/04 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/05 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/06 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/07 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/08 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/09 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0A 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0B 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0C 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0D 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0E 2012/02/19 22:58:21| Membuat direktori dalam /var/spool/squid3/0F .

Banyak soalan dan jawapan menarik kepada mereka mengenai penggunaan cache dan memori oleh sotong diterangkan.Dengan ini, kita boleh mempertimbangkan penyelesaian standard untuk menyediakan pelayan proksi yang lengkap.

Contoh penyediaan proksi sotong lutsinar

Apa itu proksi telus? Ini ialah mod pengendalian pelayan proksi apabila pelanggan tidak boleh dikonfigurasikan untuk bekerja melalui proksi dan menghantar permintaan ke rangkaian melalui protokol HTTP, seolah-olah klien penyemak imbas bekerja secara langsung dengan pelayan web. Pada masa yang sama, permintaan HTTP keluar dihantar ke port di mana proksi sedang berjalan. Pelayan proksi pula, menukar permintaan HTTP kepada permintaan protokol proksi dan menghantar respons kepada klien, seperti pelayan web. Itu. Interaksi dengan pelayan proksi berlaku secara telus untuk pelanggan.

Adalah penting untuk memahami dan mengetahui! Kaedah ini menyokong protokol HTTP sahaja, dan tidak menyokong gopher, FTP atau proksi lain. Dan juga, Squid tidak boleh berfungsi dalam mod telus dan mod pengesahan pada masa yang sama.

Untuk mengkonfigurasi mod lutsinar, anda mesti:

1. Tetapkan mod lutsinar dalam tetapan proksi. Ini dilakukan dalam Parameter http_port, Sebagai contoh:

Http_port ip:port transparent

2. Balut pengguna peraturan yang sepadan dengan port yang dikehendaki menggunakan iptables:

Iptables -t nat -A PREROUTING -i incoming_interface_name -s local_network_subnet -p tcp --dport 80 -j REDIRECT --to-port squid_port, contoh: iptables -t nat -A PREROUTING -i eth1 -s 10.0.0.0/24 p tcp --dport 80 -j REDdirect --to-port 3128

Semua. Boleh dinikmati oleh pengguna yang dibungkus dan tidak curiga pada pelayan proksi kami.

Penyelesaian masalah

Pertama sekali, diagnostik operasi sotong ialah melayari majalah bertempat di /var/log/squid3. Kebanyakan masalah diselesaikan dengan cara ini. Jika ini tidak membantu menyelesaikan masalah, kemudian tukar daemon kepada mod nyahpepijat dengan arahan sotong3 -k nyahpepijat masalah akan lebih mudah dicari. Sebenarnya, apa itu balak sotong? Fail log mengandungi pelbagai maklumat tentang beban dan prestasi Sotong. Selain maklumat capaian, /pra, ralat sistem dan maklumat tentang penggunaan sumber, seperti memori atau ruang cakera, juga ditulis untuk log.

Format fail log sotong ialah rentetan nilai yang dipisahkan oleh satu atau lebih ruang:

Time.ms response_time ip_src Squid_req_status/HTTP_status byte_snd kaedah URL pengguna squid_her_status/ip_dst MIME

  • masa- masa dalam format unix (Bilangan saat dari 00:00 1970.01.01)
  • Cik- milisaat tepat kepada 3 digit
  • masa tindak balas- masa tindak balas, milisaat
  • ip_src- alamat IP sumber
  • Status_permintaan_sotong- status permintaan sotong (contohnya, TCP_HIT untuk objek cache sebelum ini, TCP_MISS jika objek yang diminta tidak diambil dari cache setempat, UDP_HIT dan UDP_MISS sama untuk permintaan saudara)
  • HTTP_status- Status protokol http (200 untuk berjaya, 000 untuk permintaan UDP, 403 untuk ubah hala, 500 untuk ralat)
  • byte_snd- dihantar, bait sebagai tindak balas termasuk pengepala HTTP
  • kaedah- kaedah permintaan GET atau POST
  • URL- url yang diminta
  • pengguna- nama pengguna yang dibenarkan
  • status_sotong_dia- status hierarki sotong - Hasil pertanyaan kepada cache abang/ibu bapa
  • ip_dst- Alamat IP nod yang diminta
  • MIME- jenis mime

Mari lihat contoh:

1329732295.053 374 10.0.1.55 TCP_MISS/200 1475 DAPATKAN http://www.youtube.com/live_comments? - DIRECT/173.194.69.91 teks/xml

Seperti yang anda lihat, permintaan dibuat di 1329732295.053, respons dari pelayan jauh ialah 374 ms, hos yang meminta halaman mempunyai IP 10.0.1.55, objek yang diminta tidak dipindahkan dari cache setempat (TCP_MISS), pelayan kod respons ialah 200, 1475 bait telah dipindahkan kepada klien menggunakan kaedah GET, URL http://www.youtube.com/live_comments? telah diminta, nama pengguna tidak ditakrifkan, objek diterima terus dari pelayan dengan IP 173.194.69.91, teks itu dihantar kerana mime - teks/xml. Di sini.

Beberapa perkara terakhir tentang sotong3

Dalam artikel itu, saya menyemak prinsip asas pelayan proksi, serta tetapan asas yang membolehkan anda melaksanakan pelayan caching mudah, serta mengatur operasi sotong dalam mod telus. Squid menyokong beberapa pilihan kebenaran (melalui IP, melalui LDAP, MySQL, NTLM, dll.), keupayaan untuk mengehadkan lebar jalur saluran dan mengawal akses kepada sumber Internet. Saya akan mempertimbangkan operasi SQUID dengan pelbagai kaedah kebenaran dan contoh kawalan lalu lintas dalam artikel berikut.

Sebagai permulaan, mari kita bayangkan bahawa kita mempunyai rangkaian biasa yang bersambung ke Internet melalui satu pintu masuk (pelayan proksi Squid dipasang di sini). Mari kita anggap alamat IP get laluan ialah 192.168.1.1. Semua komputer lain di rangkaian menerima tetapan IP melalui DHCP. Komputer pada rangkaian adalah berbeza, Windows XP/7, Ubuntu, dan siapa tahu apa. Anda tidak boleh mengawasi semua orang. Tetapi kita mesti mengira trafik, sambil mempercepatkan akses ke Internet, kita mesti mengawal (sekurang-kurangnya dari "orang bodoh") akses ke Internet, dll. Sotong mempunyai keupayaan yang luas untuk pembalakan, menyekat akses, dll. Oleh itu, kita perlu semua komputer pada rangkaian tidak dapat memintas pelayan proksi Squid kami. Oleh itu, dalam apa jua keadaan, kami perlu menghantar (tutup, ke hadapan) permintaan komputer pelanggan hanya melalui pelayan proksi Squid.

Menyediakan pemajuan port

Apabila pelanggan rangkaian tempatan mengakses tapak luaran, Squid mesti memintas permintaan secara telus untuk pelanggan dan memprosesnya mengikut peraturannya - memutuskan kandungan yang hendak disampaikan, sama ada untuk log aktiviti pengguna, dan sama ada pengguna ini boleh mengakses Internet. Tugas kami adalah untuk memastikan bahawa tidak perlu membuat sebarang tetapan penyemak imbas pada klien itu sendiri. Pelanggan baru sahaja menyambung ke rangkaian tempatan dan sudah bekerja melalui pelayan proksi kami dan TIADA cara lain. Itu. walaupun seseorang ingin memintas proksi kami, mereka tidak lagi akan dapat melakukannya tanpa helah.

Port forwarding dalam FreeBSD

Jika FreeBSD dipasang pada gateway kami dan firewall lalai ialah IPFW, maka untuk melaksanakan tugas ini kami mesti memasang port forwarding pada gateway:

# Ubah hala ke proksi tempatan
/sbin/ipfw tambah 0170 fwd 127.0.0.1,3128 tcp daripada 192.168.1.0/24 kepada mana-mana 80

  • 0170 - nombor peraturan (dalam kes anda boleh jadi apa-apa).
  • fwd 127.0.0.1,3128 - di mana kami akan menghantar paket, - dalam kes kami, ke Squid kesayangan kami yang berjalan di port 3128 di pintu masuk - ...
  • dari 192.168.1.0/24 - ... dihantar oleh komputer pada rangkaian tempatan...
  • ke mana-mana 80 - ... ke mana-mana tapak web di Internet

Sekarang perhatian! Peraturan ini mesti ditambah SEBELUM peraturan NAT(Terjemahan Alamat Rangkaian) akan menerima permintaan ini. Biar saya terangkan sedikit secara bukan akademik: apakah yang NAT lakukan? Dalam kes kami, NAT menukar alamat sumber (menggantikan IP tempatan pelanggan dengan IP luaran get laluan dan mengingati pelanggan dalaman mana permintaan itu. Agar Squid memproses permintaan daripada pelanggan, ia tidak perlu untuk menukar apa-apa - ia boleh mengendalikannya sendiri. Oleh itu Sotong mesti menerima pakej dalam bentuk asalnya dan memutuskan sendiri apa yang perlu dilakukan seterusnya.

Di samping itu, NAT dan Squid masih perkara yang berbeza, dan paket yang dialamatkan, katakan, 2.3.4.5:80 tidak mengandungi maklumat tentang cara untuk pergi ke Squid (ke port 3128 pintu masuk). Dan paket itu hanya akan diproses oleh NAT. Sotong tidak akan pernah melihat bungkusan itu. Oleh itu, tugas kami adalah untuk memberikan Squid paket yang dihantar oleh pelayar pengguna. Saya akan menerangkan menggunakan sebahagian daripada konfigurasi ipfw sebagai contoh:

Cmd="ipfw -q add" $skip="skipto 5000" pif="xl1" #antara muka luaran... # Ubah hala ke proksi setempat $cmd 0170 fwd 127.0.0.1,3128 tcp daripada 192.168.1.0/24 kepada mana-mana 80 # NAT $cmd 0200 alihkan ip natd daripada mana-mana kepada mana-mana masuk melalui $pif # Benarkan penyata kekalkan keadaan. $cmd 0201 keadaan semak # POP3/POP3S $cmd 0325 $langkau tcp dari mana-mana kepada mana-mana 110 keluar melalui $pif tetapan keadaan simpan $cmd 0326 $langkau tcp dari mana-mana kepada mana-mana 995 keluar melalui $pif tetapan keadaan # WWW (HTTP/HTTPS/..) $cmd 0350 $langkau tcp daripada mana-mana kepada mana-mana 80 melalui $pif tetapan keadaan simpan $cmd 0352 $langkau tcp daripada mana-mana kepada mana-mana 443 keluar melalui $pif tetapan keadaan simpan # Ini skipto lokasi untuk peraturan stateful keluar $cmd 5000 alihkan ip natd daripada mana-mana kepada mana-mana keluar melalui $pif ...

Dalam konfigurasi di atas, permintaan untuk membuka tapak pertama kali diproses oleh peraturan 0170, yang membungkus permintaan dalam Squid. Squid (seperti mana-mana program lain) juga memenuhi keperluan firewall - hanya untuknya peraturan 0170 tidak terpakai, tetapi peraturan 0350 membenarkan Squid menghantar permintaan ke Internet. Untuk mengakses Internet tanpa Squid, anda perlu mengulas peraturan 0170. Dalam kes ini, Squid tidak akan menerima apa-apa, dan semua permintaan pelayar daripada rangkaian tempatan akan diproses mengikut peraturan 0350.

Pemajuan port dalam Linux

Jika Linux dipasang pada gerbang kami, maka arahan di atas akan kelihatan seperti ini:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

di mana eth0 ialah antara muka dalaman.

Jika tidak, maksud ubah hala, dsb. adalah serupa dengan cara ia dijelaskan untuk ipfw. Hanya peraturan untuk membina fail konfigurasi ipfw dan iptables berbeza. Contoh peraturan iptables boleh dikaji.

Itu sudah diselesaikan. Sekarang kita perlu mengarahkan Squid bahawa ia harus memproses paket yang pada asalnya tidak ditujukan kepadanya. Mari hidupkan mod transparensi Sotong.

Sotong Lutsinar dalam sotong.conf

Sekarang yang tinggal hanyalah untuk mengkonfigurasi Squid dalam mod tidak kelihatan, i.e. menerima paket yang dimajukan secara automatik dan memprosesnya. Dalam versi Squid yang berbeza, pasukan yang berbeza bertanggungjawab untuk ini. Menyediakan Squid versi 2.6.* kelihatan seperti ini:

http_port 127.0.0.1:3128 lutsinar # Sotong berjalan dalam mod lutsinar

Semak fail konfigurasi squid.conf dengan teliti untuk arahan pendua - Saya menghabiskan dua jam masa saya beralih ke forum untuk mendapatkan bantuan dengan "masalah bukan standard", sementara saya tidak mempedulikan fakta bahawa baris pertama mendayakan mod operasi sotong biasa:

http_port 3128 # Sotong berfungsi seperti biasa

Hampir semuanya. Mulakan semula Squid, gunakan peraturan firewall dengan arahan pemajuan port tambahan - kini mana-mana komputer pada rangkaian tempatan, mengakses Internet melalui gerbang kami, tidak akan dapat memintas Squid kami, yang telah menjadi telus kepada semua orang. Sekarang cuba sediakan proksi pada sesetengah komputer - komputer sepatutnya tidak boleh mengakses Internet. Nampak macam tu je. Jika anda mempunyai soalan atau nasihat, komen dialu-alukan, terutamanya memandangkan menyediakan Sotong yang telus dan pemajuan port pada umumnya merupakan topik "sakit" di forum.

Kelebihan dan kekurangan

Salah satu kelebihannya ialah keyakinan mutlak bahawa semua permintaan pada port 80 (standard untuk web) akan diproses oleh Squid. Sehubungan itu, akan ada log, statistik untuk bos dan tidak perlu berlari-lari dan menetapkan semuanya secara manual.

Kelemahannya termasuk:

  • ketidakupayaan (sekurang-kurangnya dengan cara yang mudah) untuk membenarkan pengguna mengakses Internet;
  • Jika Squid tiba-tiba ranap, akses ke tapak akan dihentikan. Oleh itu, pentadbir perlu sama ada memastikan bahawa semuanya akan OK, atau dapat menukar konfigurasi tembok api dari jauh, atau menulis skrip yang secara automatik menyemak sama ada Squid digantung pada port 3128, dan jika tidak, kemudian melancarkannya.

Mengkonfigurasi Sotong dalam mod lutsinar selesai. Itu sahaja sekarang.

Squid ialah pakej berkuasa yang melaksanakan proksi permintaan yang melaluinya dan mempunyai pelbagai keupayaan. Pada rangkaian tempatan, ia paling kerap digunakan sebagai proksi caching telus. Mari kita konfigurasikan 3 ciri utama sotong mengikut urutan.

1. Mula-mula, pasang sotong (untuk Debian 6)

Apt-get install squid3

2. Fail konfigurasi squid.conf terletak di /etc/squid3/. Ia mengandungi kira-kira 5.5 ribu baris. Tetapi ia tidak begitu menakutkan; sebahagian besar fail ini adalah ulasan terperinci tentang tetapan. Terpulang kepada anda untuk memutuskan cara lebih mudah untuk membuat perubahan pada fail. Anda boleh menyingkirkan semua yang tidak perlu dalam fail dengan cara ini

# pergi ke folder squid cd /etc/squid3 # buat salinan sandaran fail tetapan cp squid.conf squid.conf_backup # dapatkan dari squid.conf_backup fail bersih dengan tetapan tanpa komen dalam squid.conf cat squid.conf_backup | egrep -v "^#|^$" > squid.conf

dan dapatkan fail "telanjang" dengan kandungan berikut:

Acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports ports # http acl Safeports ports 2_ports 443 # HTTPS ACL Safe_ports Port 70 # Gopher ACL Safe_ports Port 210 # WAIS ACL Safe_ports Port 1025-65535 # Port tidak berdaftar ACL Safe_ports Port 280 # HTTP-Mgmt ACL # multiling http acl CONNECT kaedah CONNECT http_access benarkan pengurus localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access benarkan localhost http_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320

Apa yang tinggal ialah membuat perubahan yang diperlukan dalam baris. Pilihan kedua ialah mengedit keseluruhan fail tanpa membersihkannya. Yang juga agak mudah jika anda tahu cara menggunakan carian dalam editor vi. Dalam kes ini, anda akan mempunyai banyak ulasan berguna pada tetapan untuk membantu anda.

Untuk mencari teks dalam editor vi, tekan kekunci “/”. Jika anda berada dalam mod penyuntingan, anda perlu keluar daripadanya untuk menghantar arahan kepada editor dengan menekan “Esc”. Kami mendapat urutan tindakan berikut: “/” > “masukkan perkataan carian” > “Enter”.

Sekarang kami mengedit fail dan membuat tetapan asas. Jika baris yang diperlukan tidak ada, kemudian tambahkannya atau nyahkomennya.

Vi /etc/squid3/squid.conf # Benarkan akses kepada proksi hanya dari rangkaian yang ditemui acl localnet src 172.16.0.0/24 http_access allow localnet http_access allow localhost # Secara lalai, port pengendalian proksi ialah 3128 # Oleh kerana proksi kami akan telus, kami menunjukkan # ini serta alamat antara muka dengan port di mana proksi akan berfungsi # permintaan dalam iptables akan dialihkan ke port yang sama http_port 172.16.0.1:3128 transparent

3. Kami menyediakan caching permintaan

# Menetapkan direktori cache dan mengkonfigurasinya # ufs - kaedah untuk menyimpan fail pada cakera # /var/spool/squid3 - folder cache # 5000 - saiz cache dalam megabait # 16 - bilangan folder peringkat pertama dalam cache # 256 - nombor daripada folder peringkat ke-2 dalam cache cache_dir ufs /var/spool/squid3 5000 16 256 # kami akan mengehadkan saiz minimum fail cache untuk memudahkan pemacu keras # atau anda boleh kehilangan keseluruhan titik cache jika ia berfungsi dengan perlahan saiz_objek_minimum 2 KB # kami juga akan mengehadkan saiz maksimum_objek_saiz maksimum 61440 KB

4. Sotong, dikonfigurasikan secara lalai, menambah beberapa pengepalanya pada permintaan http. Dalam kes ini, dua pengepala pertama mengandungi ip klien (atau malah beberapa ips, dalam kes rantaian proksi). Jika kita tidak memerlukan ini, sebagai contoh, kita tidak mahu mendedahkan IP dalaman kawasan tempatan kita, maka menjadikan sotong tanpa nama adalah sangat mudah

Melalui off forwarded_for delete

Selepas melengkapkan semua tetapan, ia patut menyemak ketiadaan nama permintaan pada halaman http://checker.samair.ru Jika semuanya dilakukan dengan betul, hasilnya akan menjadi mesej "Resume: Anda menggunakan tanpa nama tinggi (elit) proksi.”

Ini melengkapkan perubahan pada fail. Akhirnya squid.conf sepatutnya kelihatan seperti ini

Pengurus Acl proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl localnet src 172.16.0.0/24 # RFC1918 port dalaman yang mungkin acl3_port SSL port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports # 4mgt Safe_ports # http gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT kaedah CONNECT http_access benarkan pengurus localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access benarkan localnet http_access1 deny localhost http_1. 3128 transparent hierarchy_stoplist cgi-bin ? cache_dir ufs /var/spool/squid3 5000 16 256 minimum_object_size 2 KB maximum_object_size 61440 KB coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh:_pattern4c ^1go00 refresh:_pattern4c -bin/| \?) 0 0% 0 refresh_pattern . 0 20% 4320 melalui off forwarded_for delete

Untuk menggunakan tetapan, hentikan sotong

Servis sotong3 berhenti

Sediakan direktori cache sotong

Sotong3 -z

Melancarkan proksi

Servis sotong3 mula

Jika anda belum menukar tetapan yang berkaitan dengan cache proksi, maka anda boleh menjalankan satu arahan. Tetapan akan diterima secara automatik tanpa memulakan semula sotong.

Squid3 -k konfigurasi semula

5. Yang tinggal hanyalah mengkonfigurasi ketelusan proksi. Ini memastikan bahawa pengguna rangkaian tempatan boleh bekerja melalui proksi tanpa disedari, i.e. pengguna tidak perlu mengkonfigurasi atur cara untuk berfungsi dengan proksi. Ketelusan dipastikan dengan hanya mengubah hala permintaan http dari port 80 ke port pelayan proksi menggunakan tembok api iptables dan mendayakan mod proksi telus dalam sotong itu sendiri. Kami membuat perubahan pada tetapan sotong di atas. Tambahkan satu baris lagi pada peraturan iptables:

Iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Pastikan untuk menentukan dalam parameter antara muka yang dikehendaki di mana proksi akan berfungsi: -i eth0. Ini akan menyelamatkan anda daripada masalah dengan mengakses pelayan web daripada Internet jika terdapat lebih daripada satu antara muka aktif, jika terdapat satu pada pelayan ini pada masa hadapan. Dan juga demi keselamatan proksi.