Setting Ubuntu Proxy

perintah-perintah pada squid
squid -k shutdown atau service squid stop    "stop squid"
squid -d1 atau service squid start            "start squid"
tail -f /var/log/squid/access.log|ccze        "cek log akses"
tail -f /var/log/squid/cache.log|ccze        "cek log cache"
tail -f /var/log/squid/store.log|ccze        "cek log store"
tail -f /var/log/squid/access.log|grep HIT  "cek HIT log saja" 

menonaktifkan cache youtube
 acl denyYT dstdomain .youtube.com
cache deny denyYT


  install modul readbackwards untuk perl
 # sudo apt-get update
# sudo apt-get install libfile-readbackwards-perl

kemudian pastikan squid sudah running dalam transparent mode dan akses ke port 80 sudah di belokkan ke port squid (biasanya 3128) menggunakan iptables.

caranya membuat iptable di ubuntu
apt-get install iptables
iptables –help


Install Paket yg di butuhkan :
sudo apt-get update  (enter)
 sudo apt-get install squid (enter)
 sudo apt-get install squid squidclient squid-cgi (enter)
sudo apt-get install gcc (enter)
sudo apt-get install build-essential (enter)
sudo apt-get install sharutils (enter)
sudo apt-get install ccze (enter)
sudo apt-get install libzip-dev (enter)
sudo apt-get install automake1.9 (enter)
sudo apt-get install multitail (enter) 
sudo apt-get install acpid (enter) ( agar proses shutdown bisa dilakukan dgn menekan tombol power dipc )
sudo  apt-get install libfile-readbackwards-perl 

Tambahan command buat cek acces log client

# tail -f /var/log/squid/access.log | ccze (text akan berwarna warni)
untuk menampilkan access log HIT saja
#tail -f /var/log/squid/access.log |grep HIT
Atau anda ingin menampilkan access log buat satu kata kunci misal : youtube
#tail -f /var/log/squid/access.log | grep i youtube | grep HIT
Atau melihat access untuk satu ip address
#tail -f /var/log/squid/access.log | grep i 192.168.1.2


Cara mengecek besarnya data yang telah tercache
df -h (enter)

remove cache dan rebuild kembali dgn perintah 
squid -f /etc/squid/squid.conf -z


error youtube
 ini jamunya di storeurl sisipkan :

#Untuk ALL Youtube ( range & non range )
} elsif ($X[1] =~ /(youtube|google).*videoplayback\?/){
@itag = m/[&?](itag=[0-9]*)/;
@id = m/[&?](id=[^\&]*)/;
@range = m/[&?](range=[^\&\s]*)/;
@begin = m/[&?](begin=[^\&\s]*)/;
@redirect = m/[&?](redirect_counter=[^\&]*)/;
print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/@itag&@id&@range@begin@redirect\n";



The requested URL could not be retrieved
kesalahannya


 cari line yang ada http_gzip nya
tambahkan #' didepannya seperti ini #http_gzip_types


 Bagaimana melakukan caching youtube dengan Lusca?

Pertama, carilah tag konfigurasi seperti dibawah ini pada squid.conf, kemudian hapus:
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
 acl
 youtube dstdomain .youtube.com
cache allow youtube
cache allow all
minimum_object_size 512 bytes
maximum_object_size 128 Mb
quick_abort_min -1 KB

acl speedtest dstdom_regex -i speedtest.*\.
acl store_rewrite_list urlpath_regex .*\/speedtest\/.*\.(jpg|txt)
acl store_rewrite_list urlpath_regex .*\.ak\.fbcdn\.net\/
 Selanjutnya, ambil url redirectornya (credits mas ucok_karnadi)

cd /etc/squid
wget http://tempat-sampah.googlecode.com/svn/storeurl.pl
chmod +x /etc/squid/storeurl.pl
chown proxy:proxy /etc/squid/storeurl.pl
 Berikut ini isi storeurl.pl : 

#!/usr/bin/perl
# $Rev$


$|=1;
while (<>) {
    @X = split;
        $x = $X[0] . " ";

        #facebook
if (m/^http\:\/\/.*(profile|photo).*\.ak\.fbcdn\.net(\/h(profile|photos)-ak-)(snc|ash|prn)[0-9]?(.*)/) {
        print $x . "http://facebook.SQUIDINTERNAL" . $2  . "fb" .  $5  . "\n";

        #Speedtest
} elsif (m/^http\:\/\/.*\/speedtest\/(.*)\?.*/) {
        print $x . "http://speedtest.SQUIDINTERNAL/speedtest/" . $1 . "\n";

        #BLOGSPOT
} elsif (m/^http:\/\/[1-4].bp.(blogspot.com.*)/) {
        print $x . "http://blog-cdn." . $1  . "\n";

        #AVAST
} elsif (m/^http:\/\/download[0-9]{3}.(avast.com.*)/) {
        print $x . "http://avast-cdn." . $1  .  "\n";

        #KAV
} elsif (m/^http:\/\/dnl-[0-9]{2}.(geo.kaspersky.com.*)/) {
        print $x . "http://kav-cdn." . $1  .  "\n";

        #AVG
} elsif (m/^http:\/\/update.avg.com/) {
        print $x . "http://avg-cdn." . $1  .  "\n";

        #maps.google.com
} elsif (m/^http:\/\/(cbk|mt|khm|mlt|tbn)[0-9]?(.google\.co(m|\.uk|\.id).*)/) {
        print $x . "http://" . $1  . $2 . "\n";

        #gstatic and/or wikimapia
} elsif (m/^http:\/\/([a-z])[0-9]?(\.gstatic\.com.*|\.wikimapia\.org.*)/) {
        print $x . "http://" . $1  . $2 . "\n";

        #maps.google.com
} elsif (m/^http:\/\/(khm|mt)[0-9]?(.google.com.*)/) {
        print $x . "http://" . $1  . $2 . "\n";

        #Untuk ALL Youtube ( range & non range )
} elsif ($X[1] =~ /(youtube|google).*videoplayback\?/){
        @itag = m/[&?](itag=[0-9]*)/;
        @id = m/[&?](id=[^\&]*)/;
        @range = m/[&?](range=[^\&\s]*)/;
        @begin = m/[&?](begin=[^\&\s]*)/;
        @redirect = m/[&?](redirect_counter=[^\&]*)/;
        print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/@itag&@id&@range@begin@redirect\n";

        #Google
} elsif (m/^http:\/\/www\.google-analytics\.com\/__utm\.gif\?.*/) {
        print $x . "http://www.google-analytics.com/__utm.gif\n";

                        #Cache High Latency Ads
} elsif (m/^http:\/\/([a-z0-9.]*)(\.doubleclick\.net|\.quantserve\.com|\.googlesyndication\.com|yieldmanager|cpxinteractive)(.*)/) {
        $y = $3;$z = $2;
        for ($y) {
        s/pixel;.*/pixel/;
        s/activity;.*/activity/;
        s/(imgad[^&]*).*/\1/;
        s/;ord=[?0-9]*//;
        s/;&timestamp=[0-9]*//;
        s/[&?]correlator=[0-9]*//;
        s/&cookie=[^&]*//;
        s/&ga_hid=[^&]*//;
        s/&ga_vid=[^&]*//;
        s/&ga_sid=[^&]*//;
        # s/&prev_slotnames=[^&]*//
        # s/&u_his=[^&]*//;
        s/&dt=[^&]*//;
        s/&dtd=[^&]*//;
        s/&lmt=[^&]*//;
        s/(&alternate_ad_url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&ref=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&cookie=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/[;&?]ord=[?0-9]*//;
        s/[;&]mpvid=[^&;]*//;
        s/&xpc=[^&]*//;
        # yieldmanager
        s/\?clickTag=[^&]*//;
        s/&u=[^&]*//;
        s/&slotname=[^&]*//;
        s/&page_slots=[^&]*//;
        }
        print $x . "http://" . $1 . $2 . $y . "\n";

                        #cache high latency ads
} elsif (m/^http:\/\/(.*?)\/(ads)\?(.*?)/) {
        print $x . "http://" . $1 . "/" . $2  . "\n";

} elsif (m/^http:\/\/(www\.ziddu\.com.*\.[^\/]{3,4})\/(.*?)/) {
        print $x . "http://" . $1 . "\n";

                        #cdn, varialble 1st path
} elsif (($X[1] =~ /filehippo/) && (m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(.*)\.([a-z0-9]{3,4})(\?.*)?/)) {
        @y = ($1,$2,$4,$5);
        $y[0] =~ s/[a-z0-9]{2,5}/cdn./;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        #rapidshare
} elsif (($X[1] =~ /rapidshare/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?)([a-z]*\.[^\/]{3}\/[a-z]*\/[0-9]*)\/(.*?)\/([^\/\?\&]{4,})$/)) {
        print $x . "http://cdn." . $3 . "/SQUIDINTERNAL/" . $5 . "\n";

} elsif (($X[1] =~ /maxporn/) && (m/^http:\/\/([^\/]*?)\/(.*?)\/([^\/]*?)(\?.*)?$/)) {
        print $x . "http://" . $1 . "/SQUIDINTERNAL/" . $3 . "\n";

                        #domain/path/.*/path/filename
} elsif (($X[1] =~ /fucktube/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?[^\/]*\/[^\/]*)\/(.*)\/([^\/]*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
        @y = ($1,$2,$4,$5,$6);
        $y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "/" . $y[3] . "." . $y[4] . "\n";

                        #like porn hub variables url and center part of the path, filename etention 3 or 4 with or without ? at the end
} elsif (($X[1] =~ /tube8|pornhub|xvideos/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?(\.[a-z]*)?)\.([a-z]*[0-9]?\.[^\/]{3}\/[a-z]*)(.*?)((\/[a-z]*)?(\/[^\/]*){4}\.[^\/\?]{3,4})(\?.*)?$/)) {
        print $x . "http://cdn." . $4 . $6 . "\n";

                        #for yimg.com video
} elsif (m/^http:\/\/(.*yimg.com)\/\/(.*)\/([^\/\?\&]*\/[^\/\?\&]*\.[^\/\?\&]{3,4})(\?.*)?$/) {
        print $x . "http://cdn.yimg.com/" . $3 . "\n";

                        #for yimg.com doubled
} elsif (m/^http:\/\/(.*?)\.yimg\.com\/(.*?)\.yimg\.com\/(.*?)\?(.*)/) {
        print $x . "http://cdn.yimg.com/"  . $3 . "\n";

                        #for yimg.com with &sig=
} elsif (m/^http:\/\/([^\.]*)\.yimg\.com\/(.*)/) {
        @y = ($1,$2);
        $y[0] =~ s/[a-z]+([0-9]+)?/cdn/;
        $y[1] =~ s/&sig=.*//;
        print $x . "http://" . $y[0] . ".yimg.com/"  . $y[1] . "\n";

                        #youjizz. We use only domain and filename
} elsif (($X[1] =~ /media[0-9]{1,5}\.youjizz/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?\.[^\/]*)\/(.*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
        @y = ($1,$2,$4,$5);
        $y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        #general purpose for cdn servers. add above your specific servers.
} elsif (m/^http:\/\/([0-9.]*?)\/\/(.*?)\.(.*)\?(.*?)/) {
        print $x . "http://squid-cdn-url/" . $2  . "." . $3 . "\n";

                        # spicific extention
# } elsif (m/^http:\/\/(.*?)\.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|wmv|3gp|mp(4|3)|exe|msi|zip|on2|mar|swf).*?/) {
        # @y = ($1,$2);
        # $y[0] =~ s/((cache|cdn)[-\d]*)|([a-zA-A]+-?[0-9]+(-[a-zA-Z]*)?)/cdn/;
        # print $x . "http://" . $y[0] . "." . $y[1] . "\n";

                        #generic http://variable.domain.com/path/filename."ex", "ext" or "exte"
                        #http://cdn1-28.projectplaylist.com
                        #http://s1sdlod041.bcst.cdn.s1s.yimg.com
} elsif (m/^http:\/\/(.*?)(\.[^\.\-]*?\..*?)\/([^\?\&\=]*)\.([\w\d]{2,4})\??.*$/) {
        @y = ($1,$2,$3,$4);
        $y[0] =~ s/([a-z][0-9][a-z]dlod[\d]{3})|((cache|cdn)[-\d]*)|([a-zA-A]+-?[0-9]+(-[a-zA-Z]*)?)/cdn/;
        print $x . "storeurl://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        # all that ends with ;
} elsif (m/^http:\/\/(.*?)\/(.*?)\;(.*)/) {
        print $x . "http://" . $1 . "/" . $2  . "\n";

} else {
        print $x . $X[1] . "\n";
}
}

Jalankan lusca anda, dan monggo cek Youtube dan access.log untuk memastikan video cachingnya berjalan baik.
Catatan :
Youtube biasanya suka gonta ganti coding, yang mengakibatkan storeurl.pl tidak dapat melakukan redirect dengan benar. Oleh karena itu, biasakan mengupdate storeurl.pl dengan versi terbaru.

menambahkan storeurl terbaru untuk caching video Youtube
 #!/usr/bin/perl

$|=1;
while (<>) {
    @X = split;
        $x = $X[0] . " ";

        #facebook
if (m/^http\:\/\/.*(profile|photo).*\.ak\.fbcdn\.net(\/h(profile|photos)-ak-)(snc|ash|prn)[0-9]?(.*)/) {
        print $x . "http://facebook.SQUIDINTERNAL" . $2  . "fb" .  $5  . "\n";

        #Speedtest
} elsif (m/^http\:\/\/.*\/speedtest\/(.*)\?.*/) {
        print $x . "http://speedtest.SQUIDINTERNAL/speedtest/" . $1 . "\n";
      
        #reverbnation
} elsif (m/^http:\/\/[a-z0-9]{4}\.reverbnation\.com\/.*\/([0-9]*).*/) {
                    print $x . "http://reverbnation.com.SQUIDINTERNAL/" . "$1" . "\n";

        #BLOGSPOT
} elsif (m/^http:\/\/[1-4].bp.(blogspot.com.*)/) {
        print $x . "http://blog-cdn." . $1  . "\n";

        #ytimg
} elsif (m/^http:\/\/i[1-4]\.ytimg\.com(.*)/) {
        print $x . "http://cdn.ytimg.com" . $1  . "\n";

        #AVAST
} elsif (m/^http:\/\/download[0-9]{3}.(avast.com.*)/) {
        print $x . "http://avast-cdn." . $1  .  "\n";

        #KAV
} elsif (m/^http:\/\/dnl-[0-9]{2}.(geo.kaspersky.com.*)/) {
        print $x . "http://kav-cdn." . $1  .  "\n";

        #AVG
} elsif (m/^http:\/\/update.avg.com/) {
        print $x . "http://avg-cdn." . $1  .  "\n";

        #maps.google.com
} elsif (m/^http:\/\/(cbk|mt|khm|mlt|tbn)[0-9]?(.google\.co(m|\.uk|\.id).*)/) {
        print $x . "http://" . $1  . $2 . "\n";

        #gstatic and/or wikimapia
} elsif (m/^http:\/\/([a-z])[0-9]?(\.gstatic\.com.*|\.wikimapia\.org.*)/) {
        print $x . "http://" . $1  . $2 . "\n";

        #maps.google.com
} elsif (m/^http:\/\/(khm|mt)[0-9]?(.google.com.*)/) {
        print $x . "http://" . $1  . $2 . "\n";
      
        # for ALL Youtube ( range & non range )
        # first you need do this
        # install package dependencies "apt-get install libfile-readbackwards-perl"
        # add line below to your squid config and remove "#"
      
        # strip_query_terms off
        # acl yutub url_regex -i .*youtube\.com\/.*$
        # acl yutub url_regex -i .*youtu\.be\/.*$
        # logformat squid1 %{Referer}>h %ru
        # access_log /var/log/squid/yt.log squid1 yutub
        # acl redirec urlpath_regex -i .*&redirect_counter=1&cms_redirect=yes
        # acl redirec urlpath_regex -i .*&ir=1&rr=12
        # cache deny redirec
        # acl reddeny url_regex -i c\.youtube\.com\/videoplayback.*redirect_counter=1.*$
        # acl reddeny url_regex -i c\.youtube\.com\/videoplayback.*cms_redirect=yes.*$
        # storeurl_access deny reddeny

} elsif ($X[1] =~ m/^http\:\/\/.*(youtube|google).*videoplayback.*/){
        @itag = m/[&?](itag=[0-9]*)/;
        @CPN = m/[&?]cpn\=([a-zA-Z0-9\-\_]*)/;
        @IDS = m/[&?]id\=([a-zA-Z0-9\-\_]*)/;
        $id = &GetID($CPN[0], $IDS[0]);
        @range = m/[&?](range=[^\&\s]*)/;
        print $x . "http://video-srv.youtube.com.SQUIDINTERNAL/id=" . $id . "&@itag@range\n";

        #Google
} elsif (m/^http:\/\/www\.google-analytics\.com\/__utm\.gif\?.*/) {
        print $x . "http://www.google-analytics.com/__utm.gif\n";

                        #Cache High Latency Ads
} elsif (m/^http:\/\/([a-z0-9.]*)(\.doubleclick\.net|\.quantserve\.com|\.googlesyndication\.com|yieldmanager|cpxinteractive)(.*)/) {
        $y = $3;$z = $2;
        for ($y) {
        s/pixel;.*/pixel/;
        s/activity;.*/activity/;
        s/(imgad[^&]*).*/\1/;
        s/;ord=[?0-9]*//;
        s/;&timestamp=[0-9]*//;
        s/[&?]correlator=[0-9]*//;
        s/&cookie=[^&]*//;
        s/&ga_hid=[^&]*//;
        s/&ga_vid=[^&]*//;
        s/&ga_sid=[^&]*//;
        # s/&prev_slotnames=[^&]*//
        # s/&u_his=[^&]*//;
        s/&dt=[^&]*//;
        s/&dtd=[^&]*//;
        s/&lmt=[^&]*//;
        s/(&alternate_ad_url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&url=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&ref=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/(&cookie=http%3A%2F%2F[^(%2F)]*)[^&]*/\1/;
        s/[;&?]ord=[?0-9]*//;
        s/[;&]mpvid=[^&;]*//;
        s/&xpc=[^&]*//;
        # yieldmanager
        s/\?clickTag=[^&]*//;
        s/&u=[^&]*//;
        s/&slotname=[^&]*//;
        s/&page_slots=[^&]*//;
        }
        print $x . "http://" . $1 . $2 . $y . "\n";

                        #cache high latency ads
} elsif (m/^http:\/\/(.*?)\/(ads)\?(.*?)/) {
        print $x . "http://" . $1 . "/" . $2  . "\n";

} elsif (m/^http:\/\/(www\.ziddu\.com.*\.[^\/]{3,4})\/(.*?)/) {
        print $x . "http://" . $1 . "\n";

                        #cdn, varialble 1st path
} elsif (($X[1] =~ /filehippo/) && (m/^http:\/\/(.*?)\.(.*?)\/(.*?)\/(.*)\.([a-z0-9]{3,4})(\?.*)?/)) {
        @y = ($1,$2,$4,$5);
        $y[0] =~ s/[a-z0-9]{2,5}/cdn./;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        #rapidshare
} elsif (($X[1] =~ /rapidshare/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?)([a-z]*\.[^\/]{3}\/[a-z]*\/[0-9]*)\/(.*?)\/([^\/\?\&]{4,})$/)) {
        print $x . "http://cdn." . $3 . "/SQUIDINTERNAL/" . $5 . "\n";

} elsif (($X[1] =~ /maxporn/) && (m/^http:\/\/([^\/]*?)\/(.*?)\/([^\/]*?)(\?.*)?$/)) {
        print $x . "http://" . $1 . "/SQUIDINTERNAL/" . $3 . "\n";
      
                        #domain/path/.*/path/filename
} elsif (($X[1] =~ /fucktube/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?[^\/]*\/[^\/]*)\/(.*)\/([^\/]*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
        @y = ($1,$2,$4,$5,$6);
        $y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "/" . $y[3] . "." . $y[4] . "\n";

                        #like porn hub variables url and center part of the path, filename etention 3 or 4 with or without ? at the end
} elsif (($X[1] =~ /tube8|pornhub|xvideos/) && (m/^http:\/\/(([A-Za-z]+[0-9-.]+)*?(\.[a-z]*)?)\.([a-z]*[0-9]?\.[^\/]{3}\/[a-z]*)(.*?)((\/[a-z]*)?(\/[^\/]*){4}\.[^\/\?]{3,4})(\?.*)?$/)) {
        print $x . "http://cdn." . $4 . $6 . "\n";

                        #for yimg.com video
} elsif (m/^http:\/\/(.*yimg.com)\/\/(.*)\/([^\/\?\&]*\/[^\/\?\&]*\.[^\/\?\&]{3,4})(\?.*)?$/) {
        print $x . "http://cdn.yimg.com/" . $3 . "\n";
      
                        #for yimg.com doubled
} elsif (m/^http:\/\/(.*?)\.yimg\.com\/(.*?)\.yimg\.com\/(.*?)\?(.*)/) {
        print $x . "http://cdn.yimg.com/"  . $3 . "\n";

                        #for yimg.com with &sig=
} elsif (m/^http:\/\/([^\.]*)\.yimg\.com\/(.*)/) {
        @y = ($1,$2);
        $y[0] =~ s/[a-z]+([0-9]+)?/cdn/;
        $y[1] =~ s/&sig=.*//;
        print $x . "http://" . $y[0] . ".yimg.com/"  . $y[1] . "\n";
                      
                        #youjizz. We use only domain and filename
} elsif (($X[1] =~ /media[0-9]{1,5}\.youjizz/) && (m/^http:\/\/(.*?)(\.[^\.\-]*?\.[^\/]*)\/(.*)\/([^\/\?\&]*)\.([^\/\?\&]{3,4})(\?.*?)$/)) {
        @y = ($1,$2,$4,$5);
        $y[0] =~ s/(([a-zA-A]+[0-9]+(-[a-zA-Z])?$)|([^\.]*cdn[^\.]*)|([^\.]*cache[^\.]*))/cdn/;
        print $x . "http://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        #general purpose for cdn servers. add above your specific servers.
} elsif (m/^http:\/\/([0-9.]*?)\/\/(.*?)\.(.*)\?(.*?)/) {
        print $x . "http://squid-cdn-url/" . $2  . "." . $3 . "\n";

                        # spicific extention
# } elsif (m/^http:\/\/(.*?)\.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|wmv|3gp|mp(4|3)|exe|msi|zip|on2|mar|swf).*?/) {
        # @y = ($1,$2);
        # $y[0] =~ s/((cache|cdn)[-\d]*)|([a-zA-A]+-?[0-9]+(-[a-zA-Z]*)?)/cdn/;
        # print $x . "http://" . $y[0] . "." . $y[1] . "\n";

                        #generic http://variable.domain.com/path/filename."ex", "ext" or "exte"
                        #http://cdn1-28.projectplaylist.com
                        #http://s1sdlod041.bcst.cdn.s1s.yimg.com
} elsif (m/^http:\/\/(.*?)(\.[^\.\-]*?\..*?)\/([^\?\&\=]*)\.([\w\d]{2,4})\??.*$/) {
        @y = ($1,$2,$3,$4);
        $y[0] =~ s/([a-z][0-9][a-z]dlod[\d]{3})|((cache|cdn)[-\d]*)|([a-zA-A]+-?[0-9]+(-[a-zA-Z]*)?)/cdn/;
        print $x . "storeurl://" . $y[0] . $y[1] . "/" . $y[2] . "." . $y[3] . "\n";

                        # all that ends with ;
} elsif (m/^http:\/\/(.*?)\/(.*?)\;(.*)/) {
        print $x . "http://" . $1 . "/" . $2  . "\n";

} else {
        print $x . $X[1] . "\n";
}
}


sub GetID
{
$id = "";
use File::ReadBackwards;
my $lim = 200 ;
my $ref_log = File::ReadBackwards->new('/var/log/squid/yt.log');
while (defined($line = $ref_log->readline))
{
if ($line =~ m/.*youtube.*\/watch\?.*v=([a-zA-Z0-9\-\_]*).*\s.*id=$IDS[0].*/){
$id = $1;
last;
}
if ($line =~ m/.*youtube.*\/.*cpn=$CPN[0].*[&](video_id|docid|v)=([a-zA-Z0-9\-\_]*).*/){
$id = $2;
last;
}
if ($line =~ m/.*youtube.*\/.*[&?](video_id|docid|v)=([a-zA-Z0-9\-\_]*).*cpn=$CPN[0].*/){
$id = $2;
last;
}
last if --$lim <= 0;
}
if ($id eq ""){
$id = $IDS[0];
}
$ref_log->close();
return $id;
}
 https://code.google.com/p/tempat-sampah/source/browse/storeurl.pl

Yang perlu dicatat adalah untuk menggunakan storeurl tersebut anda harus menginstal modul ReadBackwards untuk Perl. Silakan download di :http://search.cpan.org/~uri/File-ReadBackwards-1.05/ReadBackwards.pm
Untuk pemakai Ubuntu, anda juga dapat menginstal modul ini menggunakan apt-get.
 # sudo apt-get update
# sudo apt-get install libfile-readbackwards-perl

Mengatasi Wifi Bermasalah Pada Laptop



Pernahkan anda mengalami Wifi Bermasalah Pada Laptop, berikut mungkin menjadi salah satu dari masalah wifi pada laptop anda :
1. Driver sudah masuk
2. Lampu sudah menyala
3. Tetapi tidak bisa mendeteksi adanya sinyal Wifi yang ada disekitar anda (biasanya pada Operating System Windows XP)
itu bisa saja karena service Wireless Zero Configuratio belum dijalankan, berikut cara mengatasi Wifi yang bermasalah pada laptop yang tidak mendeteksi sinyal wifi :
1. Buka Start - Run
2. Ketik: services.msc
3. Klik 2x Wireless Zero Configuration
4. pada Startup Type, Jika masih manual, ubah jadi “Automatic
5. Klik Start
6. Klik OK

Setting Mikrotik mode Bridge, Modem ADSL Speedy PPOE supaya Wifi Modem bisa digunakan

Modem dari Speedy sekarang sudah menggunakan Wifi, agar ketika kita menggunakan Laptop/Gadget lainya bisa terkoneksi maka kita perlu Setting Modem dengan mode PPOE, sedang Client Warnet masuk ke Mikrotik untuk diatur Bandwidthnya. Berarti yang harus dilakukan adalah Setting Modem dengan mode PPOE, sedang Setting Mikrotik dengan Mode Bridge. Berikut contoh setting di Mikrotiknya :

IP Modem : 192.168.2.1
IP client 192.168.2.2 sampai 192.168.2.254

1. Tancapkan Kabel LAN ke Mikrotik
- Ether1 ke Meodem
- Ether2 ke Komputer

2. Masukkan IP di PC
- Ip Address=192.168.2.2
- Netmask =255.255.255.0
- Gateway =192.168.2.1
- DNS = 8.8.8.8

3. Buka Winbox, klik menu “Bridge” dan klik +
- Name = Speedy
- Pengaturan yang lain biarin aja
- Pemudian klik “OK”

4. Klik Tab Menu “Port” klik +
- Interface = “ether1
- Bridge = Speedy 
- klik “OK”

5. Masih di Tab Menu “Port” klik tanda +
- Interface = “ether2
- Bridge = Speedy 
- klik “OK”

6. kembali ke Tab Menu “Bridge” klik “Setting” beri tanda centang pada “Use Ip Firewall” klik “OK”

7. cek koneksi, ping 8.8.8.8 -t jika sudah Reply from 8.8.8.8 byte=XX time=XXms TTL=XX
maka internet sudah konek, sekarang tinggal pindah kabel yang ada di mikrotik ether2 ke Switch HUB

8. selanjutnya tinggal mengatur bandwidth setiap client

*Perlu di ingat, bahwa yang menggunakan wifi tidak terlimit bandwidthnya.

Key Eset Nod 32 Mei 2014

Username dan Password Eset Nod32 Mei 2014

Username: EAV-0107583681
Password: axshhrftus
Expiration: 22/09/2014

Username: EAV-0109795830
Password: cch6fc27j5
Expiration: 11/06/2014

Username: EAV-0109795841
Password: emreudeksn
Expiration: 11/06/2014

Username: EAV-0109795848
Password: evsde458e4
Expiration: 11/06/2014

Username: EAV-0109795855
Password: tmfm3abard
Expiration: 11/06/2014

Username: EAV-0109795868
Password: fpfffs48jt
Expiration: 11/06/2014

Username: EAV-0109795876
Password: jadspn549n
Expiration: 11/06/2014

Username: EAV-0110045170
Password: ksfbjnds9j
Expiration: 14/06/2014

Username: EAV-0110045181
Password: u2tmr2bkn8
Expiration: 14/06/2014

Username: EAV-0110045197
Password: 2m9da4v2sx
Expiration: 14/06/2014

Username: EAV-0110045206
Password: 2v6rmbj6fs
Expiration: 14/06/2014

Username: EAV-0110045227
Password: cbrm6s7ks9
Expiration: 14/06/2014

Username: EAV-0110045240
Password: vts95vsra7
Expiration: 14/06/2014

Username: EAV-0110394687
Password: ur8eamskex
Expiration: 20/06/2014

Username: TRIAL-0110910602
Password: c85kkbb6ah
Expiration: 18/07/2014

Key ESET NOD 32 Expiration date: 01/29/2014




Updated Date: October 31, 2013 (Posted: 10/31/2013)
Username: TRIAL-0098387169
Password: h6nmrbk4r4
Expiration date: 01/29/2014

Username: TRIAL-0098387205
Password: p4fjj8jc67
Expiration date: 01/29/2014


Username: TRIAL-0098387241
Password: s96bs6xbcd
Expiration date: 01/29/2014


Username: TRIAL-0098387269
Password: njdeexh52v
Expiration date: 01/29/2014


Username: TRIAL-0098385711
Password: f4xttaxb2f
Expiration date: 01/29/2014


Username: TRIAL-0098385654
Password: 9jmc8nmv4k
Expiration date: 01/29/2014


Username: TRIAL-0098385625
Password: refacrs65m
Expiration date: 01/29/2014


Username: TRIAL-0098385586
Password: t3dhjpsm24
Expiration date: 01/29/2014

Username: TRIAL-0098387461
Password: cc9mxhc8am
Expiration date: 01/29/2014

Username: TRIAL-0098387492
Password: a8hc459hc8
Expiration date: 01/29/2014


Username: TRIAL-0098387519
Password: b3484bbc8k
Expiration date: 01/29/2014


Username: TRIAL-0098387434
Password: 7rr5vcxtve
Expiration date: 01/29/2014


Username: TRIAL-0098387402
Password: ju59e2a6km
Expiration date: 01/29/2014


Username: TRIAL-0098387363
Password: dbsbt8jva7
Expiration date: 01/29/2014


Username: TRIAL-0098387339
Password: cebsxtbe7r
Expiration date: 01/29/2014


Username: TRIAL-0098387300
Password: fv45rn6uvj
Expiration date: 01/29/2014

Konfigurasi Proxy Eksternal di Mikrotik

PROXY Merupakan :
1. Sebuah mesin yang berfungsi sebagai Cache Server => Cache Server adalah Data Sementara
2. Guna menyimpan informasi halaman web yang pernah diambil sebelumnya
3. Cache tersimpan di Server dan dapat diakses oleh Client
Keuntungan PROXY :
1. Menghemat Bandwidth
2. Dapat melakukan filtering situs yang tikda baik contoh : Por** dan situs-situs yang tidak diinginkan
Dan masih banyak lagi

Disini saya hanya mengkonfigurasi antara Squid Proxy dengan Mikrotik"

Topologi IP  :

1. 192.168.0.2     # Internet
2. 192.168.10.1   # Local
3. 192.168.1.2     # Proxy

Hal yang pertama membuat NAT untuk jalur proxy ke mikrotik:

 

Tab Action :



Selanjut membuat NAT untuk mengalihkan akses client dari port 80 HTTP ke IP & Port Proxy Eksternal :

Membuat Address List :



Membuat NAT untuk membelokan port 80 ke 3128 :



Tab Advanced :



Tab Action :



Selanjutnya menambahkan ip route dan mangle :

IP Route :



Mangle :



Tab Action :




Kemudian memberi Iptables di Squid proxy Eksternal :
Agar Client dan dapat mengakses dari Port 3128 Iptables :
Taruh Iptables berikut di # /etc/rc.local : dan sesuai topologi IP masing-masing.

route add default gateway 192.168.1.1
iptables -A PREROUTING -t nat -j REDIRECT -p tcp -s 192.168.10.0/24 -d 0/0 --dport 80 --to-ports 3128
iptables -A INPUT -p tcp -s 0.0.0.0/0 -d 192.168.1.2 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 192.168.1.2 --sport 3128 -d 0.0.0.0/0 -m state --state ESTABLISHED -j ACCEPT



Source

NAT (Network Address Translation)

NAT (Network Address Translation)


NAT adalah pengalihan suatu alamat IP ke alamat yang lain. Dan apabila suatu paket dialihkan dengan NAT pada suatu link, maka pada saat ada paket kembali dari tujuan maka link ini akan mengingat darimana asal dari paket itu, sehingga komunikasi akan berjalan seperti biasa.

Kenapa orang-orang menggunakan NAT ?

  1. Koneksi Modem ke Internet.
    Kebanyakan ISP akan memberikan satu alamat IP pada saat anda melakukan dial up ke internet. Anda dapat mengirim paket ke alamat mana saja yang anda inginkan tetapi balasannya hanya akan diterima oleh satu alamat IP yang anda miliki.Apabila anda ingin menggunakan banyak komputer seperti jaringan dalam rumah anda untuk terhubung dengan internet dengan hanya satu kink ini, maka anda membutuhkan NAT.
    Cara ini adalah NAT yang paling umum digunakan sekarang ini, sering disebut sebagai masqurading.
  2. Banyak Server
    Terkadang anda ingin mengubah arah paket yang datang ke jaringan anda. Hal ini disebabkan anda hanya memiliki satu alamat IP, tapi anda ingin semua orang dapat mengakses komputer yang berada di belakang komputer yang memiliki alamat IP yang asli. Apabila anda dapat mengubah tujuan dari paket yang masuk, anda dapat melakukan ini.
    Tipe NAT seperti ini disebut port-forwarding.
  3. Transparent Proxy
    Terkadang anda ingin seakan-akan setiap paket yang melewati komputer anda hanya ditujukan untuk komputer anda sendiri. Hal ini digunakan untuk membuat transparent proxy : Proxy adalah program yang berada di antara jaringan anda dan dunia luar, dan membuat keduanya dapat saling berkomunikasi. Bagian transparannya dikarenakan jaringan anda tidak akan mengetahui bahwa dia menggunakan proxy kecuali proxynya tidak bekerja.
    Program squid dapat dikonfiguraasi untuk bekerja seperti ini, dan hal ini disebut redirection atau transparent proxy.

Dua Tipe NAT

NAT terdiri atas dua macam tipe: Source NAT (SNAT) dan Destination NAT (DNAT) Source NAT adalah ketika anda mengubah alamat asal dari paket pertama dengan kata lain anda merubah dari mana koneksi terjadi. Source NAT selalu dilakukan setelah routing, sebelum paket keluar ke jaringan. Masquerading adalah contoh dari SNAT.
Destination NAT adalah ketika anda mengubah alamat tujuan dari paket pertama dengan kata lain anda merubah ke mana komunikasi terjadi. Destination NAT selalu dilakukan sebelum routing, ketika paket masuk dari jaringan. Port forwarding, load sharing dan transparent proxy semuanya adalah bentuk dari DNAT.

Menggunakan NAT di Linux

Untuk membuat NAt anda harus membuat aturan NAT yang akan memberitahu kernel koneksi apa yang harus diubah. Untuk ini kita menggunakan tool iptables dan membuatnya untuk mengubah tabel NAT dengan memberikan option "-t nat".
Tabel aturan NAT berisi 3 bagian yang disebut "chain", setiap aturan akan diperiksa secara berurutan sampai ada satu yang tepat. Kedua chain disebut PREROUTING (untuk Destination NAT, ketika paket pertama kali masuk), dan POSTROUTING (untuk Source NAT, ketika paket pergi). Yang ketiga, OUTPUT akan diabaikan. Tabel di bawah akan menggambarkannya :
      _____                                     _____
     /     \                                   /     \
   PREROUTING -->[Routing ]----------------->POSTROUTING----->
     \D-NAT/     [Decision]                    \S-NAT/
                     |                            ^
                     |                            |  
                     |                            |
                     |                            |
                     |                            |
                     |                            |
                     |                            |
                     --------> Local Process ------
 
Pada setiap node di atas, ketika paket melewati kita melihat koneksi apa yang diasosiasikan dengannya. Apabila hal itu adalah koneksi yang baru, kita melihat chain pada tabel nat yang berperan untuk mengetahui apa yang akan kita lakukan dengan paket tersebut.

Source NAT

Untuk melakukan Source NAT anda harus merubah asal dari koneksi. Hal ini dilakukan di chain POSTROUTING, pas sebelum keluar. Hal ini sangat penting, dikarenakan berarti tools lain yang di dalam router itu (routing, packet filtering) akan melihat paket itu tidak berubah. Hal ini juga berarti opsi '-o' (outgoing interface) juga bisa digunakan.
Source dispesifikasikan dengan menggunakan '-j SNAT', dan juga opsi '--to-source' untuk menspesifikasikan sebuah alamat IP, range alamat IP dan port atau range port (hanya untuk protokol UDP dan TCP) yang sifatnya optional.
Mengubah alamat asal ke 1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Mengubah alamat asal ke 1.2.3.4, 1.2.3.5, or 1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
Mengubah alamat asal ke 1.2.3.4, port 1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023

Masquerading

Terdapat kasus yang khusus untuk Source NAT yang disebut masquerading, sebaiknya hanya digunakan untuk alamat IP yang dinamik, seperti menggunakan dialup secara standar (untuk alamat IP yang statis, gunakan SNAT si atas). Anda tidak perlu menempatkan alamat asal apabila anda menggunakan masquerading, dikarenakan alamat asal akan memakai alamat dari interface tempat paket itu keluar. Hal ini akan memudahkan apabila ada penggantian alamat IP dari interface tersebut, sehingga keslaahan da[at dihindari.
Masquerade semua paket yang keluar dari ppp0
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Destination NAT

Destination NAT dilakukan pada chain PREROUTING, pas ketika paket masuk, hal ini berarti semua tools di dalam router akan melihat paket akn pergi ke tujuan yang sebenarnya . Hal ini juga berarti bahwa opsi '-i' (incoming interface) bisa digunakan.
Destination NAT dispesifikasikan dengan menggunakan '-j DNAT' dan opsi '--to-destination' menspesifikasikan sebuah alamat IP, range alamat IP dan range dari port (hanya untuk protokol UDP dan TCP) yang sifatnya optional.
Merubah alamat tujuan ke 5.6.7.8
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
Merubah alamat tujuan ke 5.6.7.8, 5.6.7.9, or 5.6.7.10
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
Merubah alamat tujuan dari lalu lintas web ke 5.6.7.8 port 8080
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 5.6.7.8:8080

Redirection

Terdapat kasus khusus dari Destination NAT yang disebut redirection. Redirection adalah pengarahan dari paket yang masuk dari posrt tertentu diarahkan ke port lain, dimana setiap port menandakan aplikasi jaringan yang berbeda.
Mengirim dari port 80 lalu lintas web ke squid (transparent) proxy
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Dalam hal ini squid harus dikonfigurasi sehingga dia tahu paket yang masuk adalah transparent proxy.