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