Transparent proxy with Squid and Cisco router

[Network Diagram]
[LAN:Client]<——>[Cisco Router]<——–>{Internet Clound}<——–>[Linux]
Loopback Interface:
LAN Interface:
Internet Interface:
Linux box:
Reference h**p://
Configuration on Linux (Ubuntu 10.10 Server)
$ sudo apt-get install squid3
$ sudo vi /etc/squid3/squid.conf
http_port 3128 intercept
acl lan_client src
http_access allow lan_client
wccp_version 4
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_assignment_method hash
wccp2_service standard 0 password=cisco
$ modprobe ip_gre
$ ip tunnel add wccp0 mode gre remote local dev eth0
$ ifconfig wccp0 netmask up
$ sudo vi /etc/sysctl.conf
$sudo sysctl -p
$ sudo iptables -A INPUT -p udp -s –dport 2048 -j ACCEPT
$ sudo iptables -A INPUT -p 47 -s -j ACCEPT
$ sudo iptables -t nat -A PREROUTING -i wccp0 -p tcp –dport 80 -j REDIRECT –to-port 3128
$ sudo /etc/init.d/squid3 start
$ ip tunnel show
gre0: gre/ip  remote any  local any  ttl inherit  nopmtudisc
wccp0: gre/ip  remote  local  dev eth0  ttl inherit
$ ifconfig wccp0
wccp0     Link encap:UNSPEC  HWaddr 3D-5A-AF-24-00-00-88-E0-00-00-00-00-00-00-00-00
inet addr:  P-t-P:  Mask:
RX packets:1744 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:272018 (272.0 KB)  TX bytes:0 (0.0 B)
$ sudo tail -f /var/log/squid3/cache.log
$ sudo tail -f /var/log/squid3/access.log
Configuration on Cisco Router
#sh ver
Cisco IOS Software, 3800 Software (C3825-ADVIPSERVICESK9-M), Version 12.4(10), RELEASE SOFTWARE (fc1)
Technical Support:
Copyright (c) 1986-2006 by Cisco Systems, Inc.
Compiled Wed 16-Aug-06 05:13 by prod_rel_team
conf t
ip wccp web-cache version 2
ip wccp web-cache redirect-list wccp_client password cisco
ip access-list standard wccp
interface loopback0
ip address
interface x/y
desc ## LAN ##
ip address
ip wccp web-cache redirect in
interface x/y
desc ## Internet ##
ip address
#sh ip wccp web-cache
Global WCCP information:
Router information:
Router Identifier:         
Protocol Version:                    2.0
Service Identifier: web-cache
Number of Service Group Clients:     1
Number of Service Group Routers:     1
Total Packets s/w Redirected:        2176
Process:                           3
Fast:                              0
CEF:                               2173
Redirect access-list:                wccp_client
Total Packets Denied Redirect:       648454
Total Packets Unassigned:            0
Group access-list:                   -none-
Total Messages Denied to Group:      0
Total Authentication failures:       0
Total Bypassed Packets Received:     0
#sh ip wccp web-cache detail
WCCP Client information:
WCCP Client ID:
Protocol Version:        2.0
State:                   Usable
Initial Hash Info:       00000000000000000000000000000000
Hash Allotment:          256 (100.00%)
Packets s/w Redirected:  2176
Connect Time:            01:11:08
Bypassed Packets
Process:               0
Fast:                  0
CEF:                   0

How to login with SSH without enter password

How to login with SSH without enter password
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/XXXX/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

$scp .ssh/ mylogin@

$ssh mylogin@

[Linux] เพิ่มความสามารถให้ squid cache video ได้

โดยปกติแล้ว squid ไม่สามารถ cache พวก youtube ได้ซึ่งถ้ามัน cache ได้ก็จะ ประหยัด bandwidth ได้มาก
Download program จาก h**p://
ผมลอง test install บน
– Ubuntu 9.04
– Squid 2.7 STABLE3
– Lighttpd
– Videocache 1.9.2

เริ่มจาก Ubuntu
$sudo apt-get install python-urlgrabber
ส่วน module ของ python-iniparse_0.3.1-1_all.deb ต้องไป download จาก h**p://
$sudo dpkg -i python-iniparse_0.3.1-1_all.deb
ส่วนโปรแกรม videocache จาก
$tar xvfz videocache-1.9.2.tar.gz
$cp videocache-1.9.2
$sudo cp -r videocache /usr/share/
$sudo cp videocache-sysconfig.conf /etc/videocache.conf
$cd /var/www
$sudo mkdir videocache
$sudo videocache/tmp videocache/youtube videocache/metacafe videocache/dailymotion videocache/google videocache/redtube videocache/xtube videocache/vimeo videocache/wrzuta videocache/youporn videocache/soapbox videocache/tube8 videocache/tvuol videocache/bliptv videocache/break
$sudo chown -R proxy:proxy videocache <-- user,group proxy เป็น user ของ process squid
$sudo mkdir /var/log/videocache
$sudo chown -R proxy:proxy /var/log/videocache
แก้ไข config ของ videocache
$sudo vi /etc/videocache.conf
cache_host = x.x.x.x <== เป็น ip ของ server
proxy = http://x.x.x.x:3128/ <== เป็น ip และ port ของ squid
base_dir = /var/www/videocache/ <== เป็นที่เก็บ cache ของ videocache ซึ่งจะต้องมีการเรียกใช้ผ่าน lighttpd ด้วยครับ
logdir = /var/log/videocache/
$sudo vi /etc/lighttpd/lighttp.conf
server.document-root = “/var/www/”
server.port = 80

$sudo vi /etc/squid/squid.conf
โดยเพิ่มที่ด้านล่างของไฟล์ ได้เลยครับ
# –BEGIN– videocache config for squid
url_rewrite_program /usr/bin/python /usr/share/videocache/
url_rewrite_children 7
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i .youtube.[a-z][a-z]/videoplayback .youtube.[a-z][a-z]/videoplay .youtube.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i .google.[a-z][a-z]/videoplayback .google.[a-z][a-z]/videoplay .google.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplayback?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplay?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/get_video?
acl videocache_allow_url url_regex -i proxy[a-z0-9-][a-z0-9][a-z0-9][a-z0-9]?
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?*)flv
acl videocache_allow_url url_regex -i
acl videocache_allow_url url_regex -i[0-9][0-9][0-9][0-9]?
acl videocache_allow_url url_regex -i*)/flv/
acl videocache_allow_url url_regex -i*).flv
acl videocache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]? mobile[a-z0-9]?[a-z0-9]?[a-z0-9]?
acl videocache_allow_url url_regex -i*).flv
acl videocache_allow_url url_regex -i .video[a-z0-9]?[a-z0-9]?*).(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram)
acl videocache_allow_url url_regex -i*).(flv|mp4)
acl videocache_allow_dom dstdomain
acl videocache_deny_url url_regex -i http://[a-z][a-z]
url_rewrite_access deny videocache_deny_url
url_rewrite_access allow videocache_allow_url
url_rewrite_access allow videocache_allow_dom
redirector_bypass on
# –END– videocache config for squid

ดูจาก forum ของ ครับต้องแก้ code ของ ด้วย

$sudo vi /usr/share/videocache/

if enable_google_cache:
if (host.find(‘’) > -1 or host.find(‘’) > -1 or re.compile(‘.youtube.[a-z][a-z]’).search(host) or re.compile(‘^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$’).match(host)) and (path.find(‘videoplayback’) > -1 or path.find(‘videoplay’) > -1 or path.find(‘get_video’) > -1) and path.find(‘get_video_info’) < 0:
type = ‘YOUTUBE’
arglist = params.split(‘&’)
dict = {}
for arg in arglist:
dict[arg.split(‘=’)[0]] = arg.split(‘=’)[1]
if dict.has_key(‘video_id’):
video_id = dict[‘video_id’]
elif dict.has_key(‘docid’):
video_id = dict[‘docid’]
elif dict.has_key(‘id’):
video_id = dict[‘id’]
video_id = None
if video_id is not None:
new_url = submit_video(pid, client, type, url, video_id)
log(format%(pid, client, ‘-‘, ‘URL_ERROR’, type, ‘docid not found in ‘ + new_url))

จากนั้น start process ของ squid และ lighttp
$sudo /etc/init.d/squid start
$sudo /etc/init.dlighttpd start
ดู logging จาก /var/log/squid/access.log, /var/log/videocache/videocache.log
$sudo tail -f /var/log/squid/access.log
$sudo tail -f /var/log/videocache/videocache.log

เมื่อเราเปิด video จาก youtube ดูในครั้งที่ 2 จะมีการเปิดจาก cache ครับสังเกตุง่ายๆครับว่าตรงมุมซ้ายด้านล่างของ firefox จะเห็นเป็น ip ของ server

[Linux] script สำหรับ check process แบบง่ายๆๆๆๆ

สืบเนื่องมาจากเปิด transmission-daemon ไว้แล้วมัน crash บ่อยเลยอยากให้มี script ไว้ตรวจสอบแล้ว restart อัติโนมัติ

pid=`ps -ef|grep transmis|grep -v grep|awk ‘{print $2}’`
if [ -z “$pid” ]; then
echo “Process NOT running, Start process now!”
/etc/init.d/transmission-daemon restart
date >> /home/ubuntu/Ubuntu/psmon.log
echo “Process running”
$chmod 755
แล้วเรียก script ใน crontab ทุกๆ 5 นาที
$crontab -e
*/5 * * * * /home/ubuntu/Ubuntu/

[Linux] ใช้ wireshark บน text mode

ผมติดการใช้งาน wireshark แต่พอดีมาใช้บน linux แล้วเป็น text mode command line ใช้ tcpdump มันแสดงผลไม่สวยเห็น wireshark มีบน text เหมือนกันชื่อ tshark

$sudo apt-get install tshark
$sudo tshark -i eth0 -V -f “host”
ตัวอย่างมีการ capture interface eth0 โดยมี filter ที่มี src หรือ dst เป็น แล้วแสดงผลเป็น tree คล้ายๆ GUI

[Linux] ทำ FTP caching

ต้องการทำ ftp caching ให้ install package frox
vi /etc/frox.conf
Port 2121
#^– ifconfig eth0:1 inet netmask up
User frox
Group frox
WorkingDir /var/spool/frox
LogLevel 20
LogFile /var/spool/frox/frox-log
PidFile /var/run/
APConv yes
BounceDefend yes
CacheModule local
CacheSize 10240
CacheAll yes
CacheOnFQDN yes
MaxForks 10
MaxForksPerHost 10
ACL Allow * – *

[Linux] Compile cacti-spine แล้ว error

ผมใช้ ubuntu 8.10 เวลาจะ compile cacti-spine เองมัน error
ubuntu@hybitz:~/cacti-spine-0.8.7a$ ./configure
configure: error: cannot run /bin/bash config/config.sub

libtoolize –force
automake –add-missing
make install

Tunning TCP window size ของ Windows

ผมลอง FTP ระหว่าง linux กับ XP ไป Siteเดียวกัน Link เดียวกัน ปรากฏว่าผล download ของ Linux ดีกว่า เลยต้องปวดหัว ดูจาก packet ก็น่าจะเกี่ยวกับ window size เลยไปถามพี่ google พี่แกก็เลยบอกมาว่าไปดูที่ h**p:// ซึ่งหลังจาก tunning registry แล้วก็ Ok เลย


The names/values I installed are:



131400 (decimal)



131400 (decimal)