Install Squid-3.4.8 ( Intercept Mode ) di FreeBSD 10 64 bit dengan ZFS file system Bismillahirrohmanirrohiim
. Bahan - bahan :
1. CPU dgn processor 64 bit ( AMD atau Intel ).
2. RAM 4 GB
3. Harddisk 300 GB
4. Flashdisk Minimal 1 GB
5. Win32 Disk Imager , dapat didownload disini : http://sourceforge.net/projects/win32diskimager/
6. Image Freebsd 10 , download disini : http://mfsbsd.vx.sk/files/images/10/amd64/mfsbsd-se-10.0-RELEASE-amd64.img
7. Rokok , Capucino dan obat sakit kepala :p .
Langkah - langkah :
1. Install Win32 Disk Imager di pc windows dan write image freebsd 10 dengan Win32 Disk Imager ke dalam flashdisk.
2. Colokkan flashdisk yang udah di write tersebut ke cpu FreeBSD , set first boot ke Flashdisk di BIOS.
3. CPU akan boot ke flashdisk , tunggu sampai ada perintah untuk login. Loginnya adalah root dan passwordnya adalah mfsroot.
4. Cek dulu nama harddisk , nama flashdisk dan nama Ethernet ( lan ) .
5. Jika Harddisk yang digunakan SATA biasanya nama dimulai dengan nama "ada" . Maka kita cek dengan perintah : ls /dev/ada*.
Hasilnya akan keluar seperti ini : /dev/ada0. Jika ada partisi di Harddisk sebelumnya,
dihancurkan dulu dengan perintah : gpart destroy -F /dev/ada0
6. Cek nama Flashdisk , perintahnya : ls /dev/da* .
Hasilnya akan keluar seperti ini : /dev/da0 /dev/da0a Letak file Install Freebsd ada di /dev/da0a.
Sedangkan /dev/da0 adalah tempat booting freebsd diflashdisk.
7. Cek nama ethernet , perintahnya : ifconfig .
Hasilnya akan keluar seperti ini :
"re0: flags=8843 metric 0 mtu 1500 options=8209b
ether d4:3d:7e:xx:xx:xx"
re0 adalah nama ethernet.
8. Kita mount flashdisk agar bisa digunakan.
Perintahnya : mount /dev/da0a /cdrom
9. Install freebsd ,perintahnya :
zfsinstall -p HDD1 -d /dev/ada0 -u /cdrom/10.0-RELEASE-amd64 -s 4G -V 28
Keterangan :
* -p HDD1 - merename nama pool yang kita buat menjadi HDD1 ,karna nama defaultnya adalah tank.
* Ketika sampai di "-u /cdrom/" tekan tombol TAB maka akan keluar 10.0-RELEASE-amd64.
* -s 4G adalah besarnya partisi swap. Rekomendasinya adalah 2 kali besar RAM.
*-V 28 adalah versi zfs pool yang akan kita pakai. dan ENTER, tunggu sampai instalasi selesai.
Cara cek versi zfs pool : zpool get version
10. Ganti dir root : chroot /mnt
11. Ubah Password root : passwd root .
Masukkan password baru 2 kali.
12. Configurasi ssh agar bisa melakukan remote via putty dan winscp :
ee /etc/ssh/sshd_config Hilangkan tanda
# pada baris berikut dan ganti no menjadi yes :
Port 22 PermissionRootLogin yes ( tekan tombol ESC nanti akan keluar box . Pilih leave editor lalu save ).
13. Set Ip address dan config jaringan lainnya untuk FreeBSD :
echo 'defaultrouter="192.168.1.1"' >> /etc/rc.conf --> gateway untuk freebsd
echo 'hostname="evoproxy"' >> /etc/rc.conf
echo'ifconfig_re0="inet 192.168.1.100 netmask 255.255.255.0"' >> /etc/rc.conf --> ip address freebsd
echo 'sshd_enable="YES"' >> /etc/rc.conf
echo 'gateway_enable="YES"' >> /etc/rc.conf
14. Setelah selesai reboot dengan perintah : reboot . Cabut flashdisk dan kembalikan first boot ke Harddisk.
15. Setelah selesai reboot. Login dengan nama root dan password yang sudah diubah tadi.
16, Selanjutnya membuat partisi cache.
zfs create HDD1/cache
zfs set mountpoint=/cache HDD1/cache
zfs set atime=off HDD1/cache
zfs set quota=200G HDD1/cache Set kuota HDD1/root
zfs set quota=80G HDD1/root Lihat hasilnya : zfs list .
17. Edit /etc/rc.conf dengan menggunakan winscp untuk mengaktifkan unbound dan IPFW :
zfs_enable="YES"
defaultrouter="192.168.1.1"
hostname="evoproxy"
ifconfig_re0="inet 192.168.1.100 netmask 255.255.255.0"
sshd_enable="YES"
local_unbound_enable="YES"
firewall_enable="YES"
firewall_type="open"
firewall_script="/etc/ipfw.rules"
squid_enable="YES" sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
18. Buat file /etc/ipfw.rules :
touch /etc/ipfw.rules
Dan masukkan line berikut :
# Interface where client requests are coming from
IFACE=re0
# The IP Squid is listening on for requests. localhost is safest.
SQUIDIP=127.0.0.1
# Path to ipfw command
IPFW=/sbin/ipfw
${IPFW} -f flush
${IPFW} add 60000 permit ip from any to any
${IPFW} add 100 fwd
${SQUIDIP},3128 tcp from any to any 80 recv
${IFACE}
${IPFW} add 100 fwd
${SQUIDIP},3129 tcp from any to any 443 recv
${IFACE}
19. Edit /etc/sysctl.conf untuk mengaktifkan ip forwarding dan tune up freebsd .
net.inet.ip.forwarding=1 kern.ipc.somaxconn=8192 net.inet.tcp.delayed_ack=0
net.inet.tcp.sendspace=65536 net.inet.udp.recvspace=65536 net.inet.udp.maxdgram=57344
net.local.stream.recvspace=65536 net.local.stream.sendspace=65536 net.inet.icmp.icmplim=300
net.inet.icmp.icmplim_output=0 net.inet.tcp.delayed_ack=0 kern.maxfilesperproc=65536 kern.maxfiles=65536
net.inet.ip.portrange.last=65536
net.inet.ip.portrange.first=10000 kern.maxvnodes=250000
Tune up di /boot/loader.conf :
vfs.zfs.write_limit_override=134217728
Nilai 134217728 = 128 MB Untuk RAM 2 GB ,
Untuk 1 GB = 64 MB (67108864) ,
Selanjutnya anda kalikan saja sesuai dengan RAM yang anda pakai ,
misal jika 4 GB berarti 256 MB ( 268435456 ).
20. Start Unbound : service local_unbound start
Lalu :fetch ftp://FTP.INTERNIC.NET/domain/named.cache -o /var/unbound/root.hints
Edit /var/unbound/unbound.conf :
# Generated by local-unbound-setup server:
username: unbound
directory: /var/unbound
chroot: /var/unbound
pidfile: /var/run/local_unbound.pid
root-hints: /var/unbound/root.hints
# auto-trust-anchor-file: /var/unbound/root.key
include: /var/unbound/forward.conf
21. Buat file resolv.conf :
touch /etc/resolv.conf Edit /etc/resolv.conf :
search evo.net
nameserver 127.0.0.1
options edns0
Jalankan perintah : resolvconf -u
22. Edit /var/unbound/forward.conf :
# Generated by resolvconf
forward-zone:
name: "evo.net"
forward-addr: 203.130.193.74
forward-addr: 202.134.0.155
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
forward-addr: 203.130.196.155
forward-addr: 208.67.220.220
forward-addr: 208.67.222.222
forward-addr: 203.34.118.10
forward-zone:
name: "."
forward-addr: 203.130.193.74
forward-addr: 202.134.0.155
forward-addr: 8.8.8.8
forward-addr: 8.8.4.4
forward-addr: 203.130.196.155
forward-addr: 208.67.220.220
forward-addr: 208.67.222.222
forward-addr: 203.34.118.10
Lalu reboot.
Setelah restart cek apakah unbound sudah jalan :
sockstat -4 | grep unbound
23. Set timezone ke WIB :
tzsetup lalu set tanggal :
date yymmddHHMM contoh : date 201410230116 hasilnya akan seperti ini :
Thu Oct 23 01:16:00 WIB 2014
24. Update ports dan extract :
portsnap fetch
portsnap extract
update database locate agar memudahkan pencarian : /usr/libexec/locate.updatedb
25. Install pkg :
cd /usr/ports/ports-mgmt/pkg
make
make install clean
26. Install package yang diperlukan untuk squid :
pkg install openssl
pkg install fakeroot
pkg install ccze
pkg install libxml2-2.9.1_1
pkg install gmake-3.82_2 ( atau pkg install automake )
pkg install libltdl-2.4.2.418
pkg install perl5-5.16.3_11
27. Download squid
fetch http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.8.tar.gz 28. Extract : tar xzvf squid-3.4.8.tar.gz
29. Masuk kedalam direktori squid-3.4.8 :
cd squid-3.4.8 30. Edit file squid-3.4.8/src/ssl/gadgets.cc,
cari line ini :NID_key_usage ubah menjadi //NID_key_usage Atau anda bisa mempatch nya dengan file ssl.patch seperti dibawah ini.
31. Download patch - patch untuk squid disini :
squid-patch.rar Letakkan file - file tersebut di direktori /root .
32. Patch squid : patch -p0 < /root/anti-forgery.patch patch
-p0 < /root/302_v2_memleak.patch patch
-p0 < /root/patch-compat_Makefile.in patch
-p0 < /root/patch-compat_strlen patch
-p0 < /root/patch-configure patch
-p0 < /root/patch-src_tools.cc patch
-p0 < /root/patch-src-cf.data.pre patch
-p0 < /root/ssl.patch anti-forgery.patch
adalah patch untuk webpage yang menggunakan ip yang berbeda untuk domainnya.
Tanpa patch ini webpage yang menggunakan ip yang berbeda-beda untuk domainnya ,
akan dianggap miss oleh squid, walaupun linknya sama.
Patch lainnya dapat didapatkan dari /usr/ports/www/squid/files
33.Cek cpu freebsd :
sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
34. Cari Safe Flags nya di sini Safe Flags
35. Compile Squid : ./configure --prefix=/usr \
--bindir=/usr/bin \ --sbindir=/usr/sbin \ --libexecdir=/usr/lib/squid \
--sysconfdir=/etc/squid \ --localstatedir=/var \ --libdir=/usr/lib \
--includedir=/usr/include \ --datadir=/usr/share/squid \
--enable-default-err-language=English \ --infodir=/usr/share/info \
--mandir=/usr/share/man \ --disable-dependency-tracking \ --enable-storeio=ufs,aufs,diskd \
--enable-removal-policies=lru,heap \
--disable-linux-netfilter \ --disable-linux-tproxy \
--enable-http-violations \ --enable-pf-transparent \
--enable-ipfw-transparent \ --disable-wccp \
--enable-esi \ --disable-wccpv2 \ --disable-select \
--enable-icap-client \ --enable-kill-parent-hack \
--enable-cache-digests \ --enable-icmp \ --enable-follow-x-forwarded-for \
--enable-x-accelerator-vary \ --enable-zph-qos \ --enable-async-io=32 \
--with-aufs-threads=32 \ --with-swapdir=/var/spool/squid \ --with-default-user=proxy \
--with-logdir=/var/log/squid \ --with-pidfile=/var/run/squid/squid.pid \
--with-large-files \ --with-aio \ --with-dl \ --disable-ident-lookups \
--enable-large-cache-files \ --enable-err-languages=English \ --enable-ltdl-convenience \
--with-filedescriptors=65536 \ --with-openssl \ --enable-ssl \ --enable-ssl-crtd \
--disable-auth \ --disable-ipv6 \ --disable-translation \
--with-pthreads
Jika anda ingin mengetahui opsi apa aja yang bisa ditambahkan kedalam squid ketika compile gunakan perintah ini dalam folder instalasi squid :
#cd squid-3.4.8
#./configure --help
Kemudian :
make all
make install
make install-pinger
36. Buat Dir /var/log/squid/yt dan buat file /tmp/storeid.log:
mkdir /var/log/squid/yt
touch /tmp/storeid.log
chown -R proxy:proxy /tmp/storeid.log
37. Ubah Owner Folder - folder berikut :
chown -R proxy:proxy /var/log/squid
chmod 777 /var/log/squid
chown -R proxy:proxy /cache
chmod 777 /cache
chown -R proxy:proxy /var/spool/squid
chmod 777 /var/spool/squid
chown -R proxy:proxy /var/run/squid
chmod 777 /var/run/squid
38. Download file ini : freebsd conf .rar
Copy copy squid.conf dan store-id.pl ke /etc/squid/
Ubah owner file tersebut ke proxy:proxy
chown -R proxy:proxy /etc/squid
chmod 777 /etc/squid/*
copy squid ke /etc/rc.d/ dan set agar bisa dieksekusi :
chmod +x /etc/rc.d/squid
39.Kemudian buat certificate yang akan digunakan nantinya :
cd /etc/squid mkdir ssl_cert
cd ssl_cert openssl genrsa
-out evo.net.private 2048
openssl req -new -key evo.net.private -out evo.net.csr ( nanti akan diminta untuk input data , dapat di isi terserah yang anda inginkan).
openssl x509 -req -days 3652 -in evo.net.csr -signkey evo.net.private -out evo.net.cert
40. Buat folder database ssl :
cd
mkdir /var/squid
cd /var/squid
mkdir ssl_db
chown -R nobody /var/squid/ssl_db
/usr/lib/squid/ssl_crtd -c -s /var/squid/ssl_db/certs
chown -R proxy:proxy /var/squid/ssl_db
41. Edit file /etc/squid/conf :
Edit line cache_mem dan maximum_object_size_in_memory sesuai dengan besar RAM .
Direkomendasikan jangan terlalu besar seperti ini :
cache_mem 64 MB maximum_object_size_in_memory 32 KB
defaultnya seperti dibawah ini :
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
Edit line : cache_dir aufs /cache 200000 470 256 ,
cari nilai 470 dengan squid calculator jika besar cache anda berbeda dgn ini.
Edit line :
coredump_dir /cache ,
agar squid ketika dijalankan chdir ke direktori pertama cache .
Defaultnya adalah coredump_dir /var/spool/squid
42. Cek Configurasi squid : squid -k parse .
Cek apakah ada yang error .
43. Buat file cache :
squid -z 44.
Debug squid untuk melihat error :
squid -Nd1.
Jika tidak ada error
tekan CTRL + C . lalu jalankan :
/etc/rc.d/squid start Import file /etc/squid/ssl_cert/evo.net.cert
ke browser yang anda gunakan.
Ceklist show hidden files di winscp :
option - preferences - panel.
Agar dapat melihat file hidden di freebsd Untuk memudahkan cek access.log pada squid ,
edit file /root/.cshrc:
Tambahkan ini : alias ceklog "tail -f /var/log/squid/access.log | ccze" dibawah line berikut :
alias h history 25
alias j jobs -l
alias la ls -aF
alias lf ls -FA
alias ll ls -lAF
45. Cek apakah squid sudah jalan :
ps -ax | grep squid ,
atau dengan ini
sockstat -4 | grep
squid setelah itu reboot.
46. Jika ingin menghapus squid :
cd /root/squid-3.4.8
make uninstall rm -rf
/etc/squid/* rm
-rf /etc/squid
47. Jika ingin menghapus file yang tercache :
squidclient -m PURGE url ,
contoh :
squidclient -m PURGE http://steampowered.squid.internal/.steampowered.com
48. Jika digabungkan dgn Mikrotik :
Mode Intercept sample script mikrotik Asumsi IP proxy re0= 192.168.1.100 dan IP Local Client = 192.168.1.0/24
# = Mangle mikrotik =
# Taruh di baris paling awal (sebelum mangle qos)
# /ip fi mangle
# add action=mark-routing chain=prerouting dst-address=!192.168.0.0/16 dst-port=80 new-routing-mark=intercept src-address=192.168.1.0/24
# add action=mark-routing chain=prerouting dst-address=!192.168.0.0/16 dst-port=443 new-routing-mark=intercept src-address=192.168.1.0/24
# /ip firewall nat
# add chain=srcnat out-interface=wan action=masquerade disabled=no to-addresses=0.0.0.0
# = Routing Mikrotik =
# /ip route
# add distance=1 dst-address=0.0.0.0/0 gateway=192.168.1.100 routing-mark=intercept
49. Agar file log squid bisa dirotate automatis ,
edit file /etc/newsyslog.conf dan tambahkan line berikut paling bawah :
/var/log/squid/access.log proxy:proxy 777 7 500 * ZB
/var/run/squid/squid.pid 30
/var/log/squid/cache.log proxy:proxy 777 7 500 * ZB
/var/run/squid/squid.pid 30 /tmp/storeid.log proxy:proxy 777 7 500 * ZB
/var/run/squid/squid.pid 30
50.Untuk Mode Tproxy : ==================
1. Edit /etc/squid/squid.conf :
http_port 3127 http_port 3128 tproxy
https_port 3129 tproxy
ssl-bump generate-host-certificates=on
dynamic_cert_mem_cache_size=4MB key=/etc/squid/ssl_cert/evo.net.private cert=/etc/squid/ssl_cert/evo.net.cert
2. Edit /etc/ipfw.rules :
ipfw -f flush ipfw add 60000 permit ip from any to any
ipfw add 100 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any 80 in via re0
ipfw add 100 fwd 127.0.0.1,3129 tcp from 192.168.1.0/24 to any 443 in via re0
ipfw add 100 fwd 127.0.0.1 tcp from any 80 to 192.168.1.0/24 in via re0
ipfw add 100 fwd 127.0.0.1 tcp from any 443 to 192.168.1.0/24 in via re0
3. Restart Pc proxy.
Setelah restart cek apakah rule firewall sudah diload :
ipfw list
4. Rule di Mikrotik :
# / ip firewall mangle
# add action=mark-routing chain=prerouting comment="TPROXY ROUTING" disabled=no dst-port=80,
443 in-interface=ether3-local-slave new-routing-mark=tproxy_rm passthrough=no protocol=tcp
# add action=mark-connection chain=prerouting disabled=no dst-port=80,
443 in-interface=ether5-local-slave new-connection-mark=tproxy_cm passthrough=yes protocol=tcp src-address=!192.168.1.100
# add action=mark-routing chain=prerouting connection-mark=tproxy_cm disabled=no in-interface=wan new-routing-mark=tproxy_rm passthrough=no
# add action=mark-packet chain=postrouting comment="proxy hit" disabled=yes dscp=12 new-packet-mark=proxy-hit passthrough=no
# /ip firewall nat
# add chain=srcnat out-interface=wan action=masquerade disabled=no to-addresses=0.0.0.0
# = Routing Mikrotik =
# /ip route
# add distance=1 dst-address=0.0.0.0/0 gateway=192.168.1.100 routing-mark=tproxy_rm Note :
ether3-local-slave =
interface ke client 192.168.1.100 =
ip proxy ether5-local-slave =
interface ke proxy wan = interface ke internet
51. Set resolusi youtube dan block iklan youtube ================================= Tambahkan line berikut ke squid.conf :
acl gaHack url_regex -i google-analytics\.com\/ga\.js
acl gaHack url_regex -i google-analytics\.com\/analytics\.js
acl ytHack url_regex -i \/pagead\/js\/lidar\.js
acl ytHack url_regex -i google\.com\/js\/bg\/.*\.js
deny_info http://arbinet.wc.lt/script/gahack.js? gaHack
deny_info http://arbinet.wc.lt/script/yt.js? ytHack http_access
deny gaHack http_access deny ytHack
52. Tambahan untuk xshot dan garena IM :
acl partial_content url_regex -i ^http:\/\/.*(\.garenanow\.com|\.starhub\.com)\/.*\.(exe)$
acl partial_content url_regex -i ^http:\/\/.*\.winnerinter\.co\.id\/.*\.(exe)$
Credit and Thanks to : Allah Subhaana Wata'alaa Source storeid.pl :
https://www.fazar.net Grup Facebook Mikrotik squid Indonesia . Master MikroTiker N SquidLover Source Gahack.js dan yt.js : www.comstuff.net Dan lain lainnya.
Alhamdulillah. Selesai, silahkan menikmati squid di FreeBSD 10. Tutorial ini bisa didownload dalam versi
notepad disini : Tutorial Freebsd 10
http://learningbytutz.blogspot.com/2014/10/install-squid-348-intercept-mode-di.html