Bagaimana cara mengatur klien untuk proxy transparan squid?

9

Detail Server

Squid Transparent Proxy Version: 3.3.8
OS: Ubuntu Server 14.04
Server IP: 192.168.1.3

File konfigurasi squid

(tidak termasuk komentar menggunakan grep)

root@ubuntu:~# grep -v '^$\|^\s*\#' /etc/squid3/squid.conf
acl SSL_ports port 443
acl Safe_ports 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 port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl CONNECT method CONNECT
acl mylocalnetwork src 192.168.1.0/24
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access allow mylocalnetwork
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128 transparent
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /opt/squid/cache 10000 14 256
maximum_object_size 128000 KB
cache_swap_low 95
cache_swap_high 99
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 (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200
refresh_pattern -i \.(rpm|cab|deb|exe|msi|msu|zip|tar|xz|bz|bz2|lzma|gz|tgz|rar|bin|7z|doc?|xls?|ppt?|pdf|nth|psd|sis)$ 10080 90% 43200
refresh_pattern -i \.(avi|iso|wav|mid|mp?|mpeg|mov|3gp|wm?|swf|flv|x-flv|axd)$ 43200 95% 432000
refresh_pattern -i \.(html|htm|css|js)$ 1440 75% 40320
refresh_pattern -i \.index.(html|htm)$ 0 75% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 1440 90% 10080
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
store_avg_object_size 13 KB
visible_hostname localhost

Log cumi

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| Loaded Icons.
2014/07/03 22:11:57| HTCP Disabled.
2014/07/03 22:11:57| Pinger socket opened on FD 13
2014/07/03 22:11:57| Squid plugin modules loaded: 0
2014/07/03 22:11:57| Adaptation support is off.
2014/07/03 22:11:57| Accepting NAT intercepted HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=41
2014/07/03 22:11:57| Done reading /opt/squid/cache swaplog (2 entries)
2014/07/03 22:11:57| Finished rebuilding storage from disk.
2014/07/03 22:11:57|         2 Entries scanned
2014/07/03 22:11:57|         0 Invalid entries.
2014/07/03 22:11:57|         0 With invalid flags.
2014/07/03 22:11:57|         2 Objects loaded.
2014/07/03 22:11:57|         0 Objects expired.
2014/07/03 22:11:57|         0 Objects cancelled.
2014/07/03 22:11:57|         0 Duplicate URLs purged.
2014/07/03 22:11:57|         0 Swapfile clashes avoided.
2014/07/03 22:11:57|   Took 0.08 seconds ( 24.94 objects/sec).
2014/07/03 22:11:57| Beginning Validation Procedure
2014/07/03 22:11:57|   Completed Validation Procedure
2014/07/03 22:11:57|   Validated 2 Entries
2014/07/03 22:11:57|   store_swap_size = 12.00 KB
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| pinger: Initialising ICMP pinger ...
2014/07/03 22:11:57| pinger: ICMP socket opened.
2014/07/03 22:11:57| pinger: ICMPv6 socket opened
2014/07/03 22:11:57| Pinger exiting.
2014/07/03 22:11:58| storeLateRelease: released 0 objects

Aturan Iptables

(menggunakan antarmuka tunggal "eth0" untuk sementara waktu)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.3:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Konfigurasi Klien

Masalahnya adalah saya tidak bisa mengakses internet di mesin klien saya dengan IP Squid sebagai Gateway & DNS Primer, seperti yang ditunjukkan di bawah ini.

Di klien Ubuntu

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.3

dns-nameservers 192.168.1.3

Pada klien Windows

masukkan deskripsi gambar di sini

Ketika saya mengubah DNS pada klien Ubuntu ke dns-nameservers 192.168.1.1& klien Windows ke ip router yang sama, 192.168.1.1bukan ip squid (192.168.1.3), maka saya bisa mengakses internet pada keduanya. Ini mungkin bukan cara yang harus dilakukan karena halaman dapat dirender langsung dari router dan mungkin bukan dari server squid menggunakan cache (tentu saja saya dapat melihat log yang dihasilkan di /var/log/squid3/cache.log). Saya juga melihat router saya berkedip untuk halaman yang sudah diakses, ini mungkin berarti ia mengirimkan permintaan melalui internet alih-alih mengambil dari cache squid.

Saya masih belum dikompromikan. Jika saya masih bisa mengakses halaman yang dikunjungi di mesin klien saya dari cache setelah internet dimatikan, saya akan puas.

Bagaimana prosedur untuk mengkonfigurasi klien untuk Squid Transparent Proxy ?, tolong bantu saya?

Perbarui 1

root@ubuntu:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.1.3:3128
    0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth0    192.168.1.0/24       0.0.0.0/0

Perbarui 2

Ini berfungsi pada edisi sebelumnya Ubuntu 10.04(lucid)dengan versi squid Squid Cache: Version 2.7.STABLE7, dan di bawah ini adalah file konfigurasi squid bekerja dan saya bisa mengakses internet di mesin klien ketika gateway & DNS klien diatur ke ip lucid:

root@lucid:~# grep -v '^$\|^\s*\#' /etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl mynet src 192.168.1.0/24    # RFC1918 possible internal network
acl SSL_ports port 443      # https
acl SSL_ports port 563      # snews
acl SSL_ports port 873      # rsync
acl Safe_ports 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 port 280     # http-mgmt
acl Safe_ports port 488     # gss-http
acl Safe_ports port 591     # filemaker
acl Safe_ports port 777     # multiling http
acl Safe_ports port 631     # cups
acl Safe_ports port 873     # rsync
acl Safe_ports port 901     # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow mynet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
cache_dir ufs /var/spool/squid 2000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Package(.gz)*)$    0   20% 2880
refresh_pattern .       0   20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
offline_mode on
coredump_dir /var/spool/squid

Saya tidak yakin mengapa ini tidak berhasil Ubuntu 14.04dengan versi Squid Squid Cache: Version 3.3.8. Saya pasti kehilangan beberapa pengaturan dalam versi baru cumi-cumi atau dalam destro baru !.

pengguna53864
sumber
1
Saya mungkin menyatakan yang sudah jelas, tetapi bukankah seluruh titik dari konfigurasi proxy transparan yang Anda TIDAK mengkonfigurasi klien?
HBruijn
Tidak, cukup sebutkan konfigurasi server jika bisa men-debug masalah dengan lebih baik !.
user53864
Saya tidak mengerti cara mengkonfigurasi klien squid. Saya tidak bisa mengakses internet pada klien ketika saya menggunakan ip squid (192.168.1.3) sebagai gateway dan server dns primer. Saya pikir ini adalah cara yang tepat untuk mengkonfigurasi klien!
user53864
Tidak ada peringatan atau pesan kesalahan dari squid3 -k parse, semuanya bersih.
user53864
apa output dari perintah ini: "iptables -t nat -L -n -v"?
TBI Infotech

Jawaban:

11

Saya tidak yakin, tapi tolong lihat dengan daftar periksa ini:

Edit file squid.conf dan ubah baris berikut untuk mengaktifkan mode proxy transparan:

http_port 3128

to

http_port 3128 intercept

service squid restart service squid reload

Tambahkan entri ke tabel NAT iptables ke lalu lintas masuk port-forward pada antarmuka bagian dalam (sisi LAN) ke server Squid pada port 3128 (dengan asumsi eth0 adalah antarmuka di dalam dengan alamat IP 192.168.1.3

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --untuk (lanjutan) 192.168.1.3:3128

Sekarang Anda dapat melihat iptables Anda, tabel filter default, dan tabel nat, menggunakan perintah berikut

iptables -L -t filter

iptables -L -t nat

Sekarang Anda dapat menambahkan (tambahkan) ke tabel filter iptable dengan perintah berikut, untuk menerima input pada port 3128 untuk Squid

iptables -t filter -A INPUT -p tcp --dport 3128 -j MENERIMA

Coba ini juga

Anda memerlukan satu port 'intersep' dan satu 'forward proxy' dalam konfigurasi walaupun Anda tidak menggunakan forward proxy:

http_port 3129

http_port 3128 mencegat

Catatan : Opsi "transparan" telah ditinggalkan oleh opsi "intersep" sejak 2010.

TBI Infotech
sumber
Saya sudah mengubahnya menjadi interceptseperti yang disarankan oleh HBruijn. Aturan nat Iptables sudah ada dan INPUT ke server proxy tidak diblokir untuk port / sumber apa pun, semua paket yang masuk diizinkan untuk saat ini.
user53864
dapatkah Anda memeriksa port 3129 alih-alih 3128 sebagai http_port 3129 intersep?
TBI Infotech
@ user53864 periksa jawaban yang diperbarui
TBI Infotech
Saya mencoba !, tidak berhasil, hasilnya sama. Saya mencoba dengan 3129 port di squid dan juga mengganti aturan iptables dengan port baru. Saya masih tidak dapat mengakses internet di mesin klien saya.
user53864
Setelah menambahkan keduanya di squid.conf, apa itu laporan log dari squid. http_port 3129 mencegat http_port 3128
TBI Infotech
1

Menurut Squid WiKi Anda memiliki pengaturan yang salah dalam opsi http_port , dengan Squid 3.1+ dan DNAT seharusnya interceptbukan transparent.

http_port 3128 intercept

Meskipun output dari log Squid Anda sepertinya mengindikasikan soket yang dicegat sedang aktif.

Hal kedua adalah bahwa server Linux perlu mengizinkan penerusan TCP-IP sysctl net.ipv4.ip_forward=1

HBruijn
sumber
Saya mengubah pengaturan menjadi intercept, hasilnya sama bahwa saya tidak dapat mengakses internet pada klien dengan 192.168.1.3gateway dan dns primer. Ya, penerusan TCP-IP diaktifkan di sysctl.conf.
user53864
Sebenarnya apa cara yang tepat untuk mengatur klien squid? Haruskah DNS menjadi IP Squid (192.168.1.3) atau IP router umum (192.168.1.1)?
user53864
Pengaturan normal adalah router / gateway default yang diterima klien pada permintaan DHCP mereka memiliki aturan pengalihan, yang memotong lalu lintas keluar ke port TCP 80, dan mengarahkan paket-paket itu ke proxy transparan. Di sana mereka akan diproses dan hasilnya dikembalikan ke klien. DNS yang digunakan tidak masalah.
HBruijn
Jadi seharusnya hanya bekerja dengan pengaturan gateway di klien, saya masih tidak tahu mengapa saya tidak bisa mengakses internet pada klien.
user53864
Saya memperbarui posting saya!
user53864
1

Kesalahan: No forward-proxy ports configure(dalam /var/log/squid3/cache.log)

Baca Wiki .

Dalam pengalaman saya, proxy transparan membutuhkan port NAT ke squid.conf(keduanya)

 http_port 3128
 http_port 8080 intercept
sebix
sumber
0

Setelah hanya menambahkan "intersep" ke opsi http_port, saya masih mengalami masalah dalam kombinasi dengan mode pengalihan iptables, jika klien dikonfigurasi untuk menggunakan proxy:

"GALAT: Tidak ada porta proxy maju yang dikonfigurasi." dan "PERINGATAN: Loop penerusan terdeteksi untuk:"

Setelah melalui pernyataan di atas saya menggunakan ini, sebagai hasil terbaik sekarang:

a) gunakan entri port ganda di squid.conf seperti ini:

http_port 8080
http_port 3128 intercept

Ini akan menampilkan port 8080 sebagai port forward biasa untuk konfigurasi sisi klien dan memberikan port kedua untuk meneruskan traffic yang dialihkan.

b) gunakan aturan iptables seperti ini:

iptables -A PREROUTING -t NAT -i $LAN_IF -p tcp --dport 80 -j REDIRECT --to-port 3128

Seperti ini, Anda akan memiliki port proxy klasik (8080) untuk mengonfigurasi pada klien Anda dan port penegakan untuk lalu lintas yang tidak dienkripsi.

Mengapa Anda ingin melakukan ini? Nah, jika Anda tidak suka HTTPS-traffic melewati proxy (kebutuhan untuk mengkonfigurasi klien biasa) dan jika Anda ingin mendukung, tetapi tidak ingin (atau tidak bisa) mengkonfigurasi, perangkat atau program kurang pintar.

BlueStar88
sumber
Pada Raspbian (dan mungkin yang lain) yang perintah iptables memberikan kesalahan "iptables v1.4.21: tidak dapat menginisialisasi tabel iptables` NAT ': Tabel tidak ada (apakah Anda perlu insmod?) Mungkin iptables atau kernel Anda perlu ditingkatkan . " Mengubah "-t NAT" menjadi "-t nat" menyelesaikan ini.
glennr
-1

Di Ubuntu 14.04 Squid Transparent Proxy Version: 3.3.8, Anda harus menghapus transparan dari konfigurasi http_port 3128 yang saya maksud hanya meninggalkan

http_port 3128

tidak

http_port 3128 transparan

untuk beberapa alasan tidak berfungsi sekarang.

Geyson Rodriguez
sumber
-2

dengan:

http_port 3128
http_port 8080 intercept

berhasil

(Kesalahan: Tidak ada porta proxy maju yang terkonfigurasi di /var/log/squid3/cache.log)

mpman077
sumber