<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com &#187; Proxy</title>
	<atom:link href="http://spalinux.com/category/proxy/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>Resources for Relaxing Linux System Administrators</description>
	<lastBuildDate>Mon, 26 Jul 2010 09:51:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>วิธีการใช้คำสั่ง wget</title>
		<link>http://spalinux.com/2010/01/using_wget</link>
		<comments>http://spalinux.com/2010/01/using_wget#comments</comments>
		<pubDate>Fri, 22 Jan 2010 08:04:48 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Console]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1047</guid>
		<description><![CDATA[wget เป็นโปรแกรมที่ใช้เพื่อดาวน์โหลดไฟล์จากเว็บไซต์ได้ ในรูปแบบ text console วิธีการใช้งานก็ง่ายคือรันคำสั่ง wget ตามด้วย URL ที่ต้องการดาวน์โหลด ผลลัพธ์ที่ได้จะถูกบันทึกเป็นไฟล์ของเว็บเพจหน้านั้นๆ รูปแบบการใช้งาน $ wget [option]... [URL]... ตัวอย่างเช่น ต้องการดาวน์โหลดเว็บเพจหน้าแรกของ www.google.co.th $ wget 'http://www.google.co.th' --13:52:23--  http://www.google.co.th/            =&#62; `index.html' Resolving www.google.co.th... 72.14.203.147, 72.14.203.103, 72.14.203.104, ... Connecting to www.google.co.th&#124;72.14.203.147&#124;:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html]     [  &#60;=&#62;                                                                                ] 6,726         11.96K/s 13:52:24 (11.96 [...]]]></description>
			<content:encoded><![CDATA[<p>wget เป็นโปรแกรมที่ใช้เพื่อดาวน์โหลดไฟล์จากเว็บไซต์ได้ ในรูปแบบ text console วิธีการใช้งานก็ง่ายคือรันคำสั่ง wget ตามด้วย URL ที่ต้องการดาวน์โหลด ผลลัพธ์ที่ได้จะถูกบันทึกเป็นไฟล์ของเว็บเพจหน้านั้นๆ</p>
<p><span id="more-1047"></span></p>
<h4>รูปแบบการใช้งาน</h4>
<pre>$ <strong>wget</strong> [option]... [URL]...</pre>
<p>ตัวอย่างเช่น ต้องการดาวน์โหลดเว็บเพจหน้าแรกของ www.google.co.th</p>
<pre>$ <strong>wget 'http://www.google.co.th'
</strong>--13:52:23--  http://www.google.co.th/
           =&gt; `index.html'
Resolving www.google.co.th... 72.14.203.147, 72.14.203.103, 72.14.203.104, ...
Connecting to www.google.co.th|72.14.203.147|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]</pre>
<pre>    [  &lt;=&gt;                                                                                ] 6,726         11.96K/s</pre>
<pre>13:52:24 (11.96 KB/s) - `<span style="color: #0000ff;">index.html</span>' saved [6726]</pre>
<p>จากตัวอย่าง ผลลัพธ์ที่ได้จะถูกบันทึกเป็นชื่อ index.html</p>
<p>หมายเหตุ แนะนำให้ใส่เครื่องหมายคำพูด &#8216;  คลอบ URL เพราะบางตัวอักษรอาจมีความหมายใน SHELL</p>
<pre>$ <strong>cat index.html
</strong>&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="content-type" content="text/html; charset=windows-874"&gt;&lt;title&gt;Google&lt;/title&gt;
...</pre>
<p>ระบุออปชั่น &#8216;&#8211;help&#8217; เพื่อดูวิธีการใช้งาน พร้อมทั้งออปชั่นต่างๆ</p>
<pre>$ <strong>wget --help
</strong>GNU Wget 1.10.2 (Red Hat modified), a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...</pre>
<pre>Mandatory arguments to long options are mandatory for short options too.</pre>
<pre>Startup:
  -V,  --version           display the version of Wget and exit.
  -h,  --help              print this help.
  -b,  --background        go to background after startup.
  -e,  --execute=COMMAND   execute a `.wgetrc'-style command.</pre>
<p>ในบทความนี้ขอแนะนำการใช้ออปชั่นที่ผู้เขียนใช้บ่อยๆ</p>
<h4>ดูรายละเอียดการโหลด (debug)</h4>
<p>ระบุออปชั่น &#8216;-d&#8217; เพื่อดูรายละเอียดการดาวน์โหลด เช่นดู HTTP Header, Protocol, Cookie ที่เกิดขึ้นในการดาวน์โหลด</p>
<pre>$ <strong>wget -d 'http://www.google.co.th'
</strong>DEBUG output created by Wget 1.10.2 (Red Hat modified) on linux-gnu.</pre>
<pre>--14:16:24--  http://www.google.co.th/
           =&gt; `index.html'
Resolving www.google.co.th... 72.14.203.105, 72.14.203.106, 72.14.203.99, ...
Caching www.google.co.th =&gt; 72.14.203.105 72.14.203.106 72.14.203.99 72.14.203.104 72.14.203.103 72.14.203.147
Connecting to www.google.co.th|72.14.203.105|:80... connected.
Created socket 3.
Releasing 0x000000000083d390 (new refcount 1).</pre>
<pre>---request begin---
GET / HTTP/1.0
User-Agent: Wget/1.10.2 (Red Hat modified)
Accept: */*
Host: www.google.co.th
Connection: Keep-Alive</pre>
<pre>---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.0 200 OK
Date: Fri, 22 Jan 2010 07:16:29 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=windows-874
Set-Cookie: PREF=ID=79a6955a36392a2d:TM=1264144589:LM=1264144589:S=c99kK7cOeBwCp4KG; expires=Sun, 22-Jan-2012 07:16:29 GMT; path                                             =/;</pre>
<pre>domain=.google.co.th
Set-Cookie: NID=31=h8-gos7iGB-MXzlXOo4C1_CRqzSNE6wu5Os2WBu6C-jm7tPhrlj4kJp1aiENCM66f388IScBzce4Q-6x7rwbfxUUbp2DGAIcxXu1zwSGy6zKH                                            </pre>
<pre>cjUQ2_59hiym_wuaRt2; expires=Sat, 24-Jul-2010 07:16:29 GMT; path=/; domain=.google.co.th; HttpOnly
Server: gws
X-XSS-Protection: 0</pre>
<pre>---response end---
200 OK
cdm: 1 2 3 4 5 6 7 8
Stored cookie google.co.th -1 (ANY) / &lt;permanent&gt; &lt;insecure&gt; [expiry 2012-01-22 14:16:29] PREF ID=79a6955a36392a2d:TM=1264144589                                            </pre>
<pre>:LM=1264144589:S=c99kK7cOeBwCp4KG
cdm: 1 2 3 4 5 6 7 8
Stored cookie google.co.th -1 (ANY) / &lt;permanent&gt; &lt;insecure&gt; [expiry 2010-07-24 14:16:29] NID 31=h8-gos7iGB-MXzlXOo4C1_CRqzSNE6w                                            </pre>
<pre>u5Os2WBu6C-jm7tPhrlj4kJp1aiENCM66f388IScBzce4Q-6x7rwbfxUUbp2DGAIcxXu1zwSGy6zKHcjUQ2_59hiym_wuaRt2
Length: unspecified [text/html]</pre>
<pre>    [  &lt;=&gt;                                                                                ] 6,702          6.21K/s</pre>
<pre>Closed fd 3
14:16:31 (6.20 KB/s) - `index.html' saved [6702]</pre>
<h4>ดาวน์โหลดต่อไฟล์ (continue)</h4>
<p>สามารถดาวน์โหลดไฟล์ต่อจากที่ดาวน์โหลดยังไม่ครบได้</p>
<p>เช่นต้องการดาวน์โหลดไฟล์ iso ที่มีขนาดใหญ่มาก แล้วดาวน์โหลดครั้งแรกยังไม่ครบ</p>
<pre>$ <strong>wget 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:09:51--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving <a href="http://www.mirror.in.th/">www.mirror.in.th</a>... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 724,097,024 (691M) [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 1,090,066     87.82K/s  ETA 2:13:52</pre>
<p>หมายเหตุ ในระหว่างการดาวน์โหลด หากต้องการยกเลิกให้กด [Ctrl-C]</p>
<p>ครั้งแรกดาวน์โหลดไฟล์ได้แค่ 1 Meg กว่าๆ</p>
<pre>$ <strong>ls -l
</strong>total 1080
-rw-r--r-- 1 user1  users  1098754 2010-01-22 14:10 Fedora-11-x86_64-Live.iso</pre>
<p>ถ้าต้องการดาวน์โหลดต่อ ต้องระบุออปชั่น &#8216;-c&#8217;</p>
<pre>$ <strong>wget -c 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:11:46--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving www.mirror.in.th... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 206 <span style="color: #0000ff;">Partial Content</span>
Length: 724,097,024 (691M), 722,998,270 (690M) remaining [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 1,401,045     94.59K/s  ETA 2:04:50</pre>
<pre>$ <strong>ls -l
</strong>total 1384
-rw-r--r-- 1 user1  users  1409733 2010-01-22 14:11 Fedora-11-x86_64-Live.iso</pre>
<h4>จำกัดความเร็วการโหลด</h4>
<p>ต้องการโหลดไฟล์แต่ไม่ต้องการเบียดบังความเร็วการใช้อินเตอร์เน็ตจากคนอื่นมากเกินไป เราสามารถจำกัดความเร็วในการโหลดของเราได้ ด้วยออปชั่น &#8216;&#8211;limit-rate&#8217;</p>
<p>เช่นต้องการจำกัดไว้ที่ 10 KBytes/s</p>
<pre>$ <strong>wget --limit-rate 10000 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--14:25:14--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
           =&gt; `Fedora-11-x86_64-Live.iso'
Resolving www.mirror.in.th... 61.7.253.242
Connecting to www.mirror.in.th|61.7.253.242|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 724,097,024 (691M) [application/octet-stream]</pre>
<pre> 0% [                                                                                     ] 62,618         9.77K/s ETA 20:07:01</pre>
<p>หมายเหตุ หน่วยของออปชั่น &#8216;&#8211;limit-rate&#8217; เป็น bytes per second</p>
<h4>โหลดผ่าน proxy</h4>
<p>หากต้องใช้ proxy ในการโหลด ต้องมีการระบุตัวแปร &#8216;http_proxy&#8217; ไว้ใน shell ก่อนรันคำสั่ง เช่น IP ของ proxy คือ 192.168.1.1 และพอร์ต proxy คือ 3128 ถ้าใช้ BASH สามารถทำได้โดย</p>
<pre>$ <strong>export http_proxy=http://192.168.1.1:3128</strong></pre>
<p>ใช้คำสั่ง wget พร้อมระบุออปชั่น &#8216;&#8211;proxy&#8217; เพื่อให้โหลดผ่าน proxy</p>
<pre>$ <strong>wget --proxy 'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:30:26--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso'</pre>
<pre> 0% [                                                                                     ] 63,434      96.4K/s</pre>
<p>แต่ถ้า proxy ต้องระบุ user, password ด้วย จะขึ้น error ดังนี้</p>
<pre>$ <strong>wget --proxy  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:31:06--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 407 Proxy Authentication Required
2010-01-22 14:31:06 ERROR 407: Proxy Authentication Required.</pre>
<pre>ใช้ออปชั่น '--proxy-user' และ '--proxy-password' เพื่อระบุ user, password ในการใช้ proxy</pre>
<pre>$ <strong>wget --proxy-user=prxuser --proxy-password=prx1234  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:30:26--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso'</pre>
<pre> 0% [                                                                                     ] 63,434      96.4K/s</pre>
<h4>ไฟล์คอนฟิก .wgetrc</h4>
<p>แทนที่จะต้องระบุออปชั่น proxy ทุกครั้ง สามารถสร้างเป็นไฟล์คอนฟิกสำหรับใช้คำสั่ง wget โดยสร้างไฟล์ชื่อ .wgetrc (มีเครื่องหมายจุดนำหน้าชื่อไฟล์ด้วย) ไว้ใน HOME ของผู้ใช้งาน</p>
<pre>$ <strong>cat ~/.wgetrc
</strong>http_proxy=http://192.168.1.1:3128/
proxy_user=prxuser
proxy_password=prx1234</pre>
<p>หลังจากสร้างไฟล์คอนฟิก .wgetrc แล้ว เวลาใช้คำสั่ง wget ก็ไม่ต้องระบุออปชั่นใดๆ อีก</p>
<pre>$ <strong>wget  'http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso'
</strong>--2010-01-22 14:37:46--  http://www.mirror.in.th/osarchive/fedora/releases/11/Live/x86_64/Fedora-11-x86_64-Live.iso
Connecting to 192.168.1.1:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 724097024 (691M) [application/octet-stream]
Saving to: `Fedora-11-x86_64-Live.iso.1'</pre>
<pre> 0% [                                                                                     ] 80,810      95.8K/s</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.gnu.org/software/wget/" target="_blank">GNU Wget</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2010/01/using_wget/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ทดสอบค่าคอนฟิก Squid Cache Size</title>
		<link>http://spalinux.com/2009/07/test_squid_cache_size_configuration</link>
		<comments>http://spalinux.com/2009/07/test_squid_cache_size_configuration#comments</comments>
		<pubDate>Sat, 25 Jul 2009 10:04:52 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[squid cache]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=896</guid>
		<description><![CDATA[บทความนี้แสดงตัวอย่างการทดสอบโดยใช้โปรแกรม wget โหลดไฟล์ผ่าน squid เพื่อดูผลของการตั้งค่า cache size ต่างๆ ว่ามีผลต่อการโหลดไฟล์ การ HIT cache อย่างไร ในแต่ละการทดสอบ มีการแสดงไฟล์ log ของ squid ด้วย คือไฟล์ access_log (/var/log/squid/access_log) เก็บข้อมูลการใช้งาน proxy ว่ามาจากเครื่อง &#8220;client&#8221; ไหน เข้าเว็บไซต์ไหน รวมทั้งบอกผลการ HIT cache หรือไฟล์ที่โหลดนั้น มีอยู่ใน cache หรือยัง store_log (/var/log/squid/store.log) เก็บรายละเอียดการสร้าง &#8220;SWAPOUT&#8221; หรือลบ &#8220;RELEASE&#8221; ไฟล์ cache เครื่องที่ใช้ทดสอบ web client: 192.168.1.2 web server: 192.168.1.1 proxy: 192.168.1.254 คอนฟิกของ squid ในส่วน [...]]]></description>
			<content:encoded><![CDATA[<p>บทความนี้แสดงตัวอย่างการทดสอบโดยใช้โปรแกรม wget โหลดไฟล์ผ่าน squid เพื่อดูผลของการตั้งค่า cache size ต่างๆ ว่ามีผลต่อการโหลดไฟล์ การ HIT cache อย่างไร</p>
<p>ในแต่ละการทดสอบ มีการแสดงไฟล์ log ของ squid ด้วย คือไฟล์</p>
<ul>
<li>access_log (/var/log/squid/access_log) เก็บข้อมูลการใช้งาน proxy ว่ามาจากเครื่อง &#8220;client&#8221; ไหน เข้าเว็บไซต์ไหน รวมทั้งบอกผลการ HIT cache หรือไฟล์ที่โหลดนั้น มีอยู่ใน cache หรือยัง</li>
<li>store_log (/var/log/squid/store.log) เก็บรายละเอียดการสร้าง &#8220;SWAPOUT&#8221; หรือลบ &#8220;RELEASE&#8221; ไฟล์ cache</li>
</ul>
<p><span id="more-896"></span></p>
<p>เครื่องที่ใช้ทดสอบ</p>
<ul>
<li>web client: 192.168.1.2</li>
<li>web server: 192.168.1.1</li>
<li>proxy: 192.168.1.254</li>
</ul>
<p>คอนฟิกของ squid ในส่วน cache size</p>
<pre>maximum_object_size_in_memory 8 KB
maximum_object_size 4096 KB
cache_dir ufs /var/spool/squid 100 16 256</pre>
<h4>คอนฟิก proxy ของโปรแกรม wget</h4>
<p>เพื่อให้โปรแกรม wget โหลดไฟล์ผ่าน proxy ต้องสร้างไฟล์ .wgetrc ใน home directory ของผู้ใช้ที่รันคำสั่ง wget แล้วใส่คอนฟิกดังนี้</p>
<pre>[root@fc11-64min ~]# <strong>cat .wgetrc</strong>
http_proxy = http://192.168.1.254:3128/</pre>
<p>คำอธิบาย</p>
<ul>
<li>192.168.1.254 คือ ip ของ proxy</li>
<li>3128 คือพอร์ตของ proxy</li>
</ul>
<h4>ทดลองโหลดไฟล์ขนาด 7k</h4>
<p>เริ่มต้นทดลองโหดลไฟล์ขนาด 7k (กิโลไบต์) ซึ่งน้อยกว่าค่า &#8220;maximum_object_size_in_memory&#8221; ที่ตั้งไว้ 8 KB</p>
<p>โหลดไฟล์ขนาด 7k ครั้งที่ 1 ขึ้น &#8220;TCP_MISS&#8221; หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ squid จะเก็บไฟล์ไว้ใน cache ด้วย &#8220;SWAPOUT&#8221;</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-7k.bin</strong></pre>
<pre>==&gt; access.log &lt;==
1248507942.812     17 192.168.1.2 <strong><span style="color: #0000ff;">TCP_MISS</span></strong>/200 7417 GET http://192.168.1.1/files/tfile-7k.bin - DIRECT/192.168.1.1 application/octet-stream</pre>
<pre>==&gt; store.log &lt;==
1248507942.810 <strong><span style="color: #0000ff;">SWAPOUT</span></strong> 00 00000001 3F277563988F72945705D5ED41526CA2  200 1248507942 1248505810        -1 application/octet-stream 7000/7000 GET http://192.168.1.1/files/tfile-7k.bin</pre>
<p>โหลดไฟล์ขนาด 7k ครั้งที่ 2 ขึ้น &#8220;TCP_MEM_HIT&#8221; หมายถึง squid มีไฟล์นี้ใน cache บน memory แล้ว สามารถดึงไฟล์จาก memory ได้เลย</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-7k.bin</strong></pre>
<pre>==&gt; access.log &lt;==
1248507971.779      0 192.168.1.1 <span style="color: #0000ff;"><strong>TCP_MEM_HIT</strong></span>/200 7424 GET http://192.168.1.1/files/tfile-7k.bin - NONE/- application/octet-stream</pre>
<h4>ทดลองโหลดไฟล์ขนาด 9k</h4>
<p>ทดลองโหลดไฟล์ 9k ซึ่งมีขนาดมากกว่า &#8220;maximum_object_size_in_memory&#8221; แต่ยังน้อยกว่าค่า &#8220;maximum_object_size&#8221; ซึ่งตั้งไว้ 4096 KB (4 Mbytes)</p>
<p>โหลดไฟล์ขนาด 9k ครั้งที่ 1 ขึ้น &#8220;TCP_MISS&#8221; หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ squid จะเก็บไฟล์ไว้ใน cache ด้วย &#8220;SWAPOUT&#8221;</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-9k.bin</strong></pre>
<pre>==&gt; access.log &lt;==
1248508182.804      3 192.168.1.2 <strong><span style="color: #0000ff;">TCP_MISS</span></strong>/200 12418 GET http://192.168.1.1/files/tfile-9k.bin - DIRECT/192.168.1.1 application/octet-stream</pre>
<pre>==&gt; store.log &lt;==
1248508182.804 <strong><span style="color: #0000ff;">SWAPOUT</span></strong> 00 00000002 CEFDC390A1EE023973CBADC1A78D73C7  200 1248508182 1248508174        -1 application/octet-stream 12000/12000 GET http://192.168.1.1/files/tfile-9k.bin</pre>
<p>โหลดไฟล์ขนาด 9k ครั้งที่ 2 ขึ้น &#8220;TCP_HIT&#8221; หมายถึง squid มีไฟล์นี้ใน cache แต่อยู่บน disk</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-9k.bin</strong></pre>
<pre>==&gt; access.log &lt;==
1248508281.238      0 192.168.1.2 <strong><span style="color: #0000ff;">TCP_HIT</span></strong>/200 12424 GET http://192.168.1.1/files/tfile-9k.bin - NONE/- application/octet-stream</pre>
<h4>ทดลองโหลดไฟล์ขนาด 5M</h4>
<p>ทดลองโหลดไฟล์ 5M ซึ่งมีขนาดน้อยกว่า &#8220;maximum_object_size&#8221; ซึ่งตั้งไว้ 4096 KB (4 Mbytes)</p>
<p>โหลดไฟล์ขนาด 5k ครั้งที่ 1 ขึ้น &#8220;TCP_MISS&#8221; หมายถึง squid ไม่มีไฟล์นี้อยู่ใน cache เมื่อโหลดเสร็จ เนื่องจากมีขนาดไฟล์ใหญ่กว่าขนาด &#8220;maximum_object_size&#8221; โปรแกรม squid จะไม่เก็บไฟล์ไว้ใน cache  ขึ้น &#8220;RELEASE&#8221;</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-5M.bin</strong></pre>
<pre>1248509577.012    197 192.168.1.2 <span style="color: #0000ff;">TCP_MISS</span>/200 5000422 GET http://192.168.1.1/files/tfile-5M.bin - DIRECT/192.168.1.1 application/octet-stream</pre>
<pre>==&gt; store.log &lt;==
1248509577.012 <strong><span style="color: #0000ff;">RELEASE</span></strong> -1 FFFFFFFF 81F5E27F6F4A2D2CFB41BF48899FBFE5  200 1248509576 1248505985        -1 application/octet-stream 5000000/5000000 GET http://192.168.1.1/files/tfile-5M.bin</pre>
<p>ไม่ว่าจะโหลดไฟล์ที่มีขนาดใหญ่กว่า &#8220;maximum_object_size&#8221; โปรแกรม squid จะไม่เก็บ cache ไว้เลย</p>
<h4>ขนาดรวมไฟล์ cache ทั้งหมด</h4>
<p>เมื่อเก็บไฟล์ cache มากจนกระทั่งมีขนาดไฟล์รวมทั้งหมด มากกว่าที่คอนฟิกไว้ในส่วน &#8220;cache_dir&#8221; ในที่นี้คอนฟิกไว้ 100 (100Mbytes)</p>
<p>ตรวจสอบขนาดของ cache_dir ด้วยคำสั่ง du</p>
<pre>[root@fc11-64min ~]# <strong>cd /var/spool/squid</strong>
[root@fc11-64min squid]# <strong>du -sh</strong>
105M    .</pre>
<p>เมื่อทดลองโหลดไฟล์เพิ่มเติม squid จะทำการเก็บไฟล์ใหม่ที่โหลดเสร็จ &#8220;SWAPOUT&#8221; แต่เนื่องจากขนาดมากกว่า &#8220;cache_dir&#8221; ดังนั้นจำเป็นต้องลบบางไฟล์ใน cache ออกไป ด้วย &#8220;RELEASE&#8221;</p>
<p>เช่นทดลองไฟล์ 4M เพิ่มเติม</p>
<pre>[root@fc11-64min ~]# <strong>wget http://192.168.1.1/files/tfile-4M.bin</strong></pre>
<pre>==&gt; access.log &lt;==
1248509870.685     91 192.168.1.2 <strong><span style="color: #0000ff;">TCP_MISS</span></strong>/200 4000422 GET http://192.168.1.1/files/tfile-4M.bin - DIRECT/192.168.1.1 application/octet-stream</pre>
<pre>==&gt; store.log &lt;==
1248509870.683 <strong><span style="color: #0000ff;">SWAPOUT</span></strong> 00 0000000E 93E941E788327BE1F0E0F028A1114B49  200 1248509870 1248505053        -1 application/octet-stream 4000000/4000000 GET http://192.168.1.1/files/tfile-4M.bin
1248509870.758 <strong><span style="color: #0000ff;">RELEASE</span></strong> 00 00000007 E43BBBD8932CA6266141E6BFFB46EFCC   ?         ?         ?         ? ?/? ?/? ? ?</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/07/edit_squid_cache_size_configuration">แก้ไขคอนฟิก Squid Cache Size</a></li>
<li><a href="http://wiki.squid-cache.org/SquidFaq/SquidLogs" target="_blank">SquidFaq/SquidLogs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/test_squid_cache_size_configuration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขคอนฟิก Squid Cache Size</title>
		<link>http://spalinux.com/2009/07/edit_squid_cache_size_configuration</link>
		<comments>http://spalinux.com/2009/07/edit_squid_cache_size_configuration#comments</comments>
		<pubDate>Sat, 25 Jul 2009 09:11:56 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[squid cache]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=889</guid>
		<description><![CDATA[ปกติการติดตั้ง squid โดยใช้คำสั่ง rpm สามารถที่จะใช้งานได้เลย แต่เพื่อเพิ่มประสิทธิภาพการใช้งานของ squid เช่น เพิ่มขนาดของไฟล์ cache เพื่อให้สามารถเก็บไฟล์ได้มากขึ้น ซึ่งมีผลให้โอกาสที่มีการโหลดไฟล์เดียวกันซ้ำ (cache hit) มีสูงมากขึ้น ทำให้ประหยัด bandwidth ที่ต้องใช้ในการโหลดไฟล์จากอินเตอร์เน็ต บทความนี้กล่าวถึงการแก้ไขคอนฟิกของ squid ในส่วนเพื่อเพิ่มขนาดของ cache โดยจะทดสอบบน Fedora 11  คอนฟิกไฟล์ของ squid จะอยู่ที่ /etc/squid/squid.conf ขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory เนื่องจากการเขียนอ่านไฟล์ลงบน memory มีความเร็วมากกว่าบน disk มาก ถ้าเรามีขนาดของ memory มาก แนะนำให้เพื่มขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory เพื่อว่าถ้าการโหลดไฟล์ที่ HIT จะได้ดึงจาก memory ได้เลย โดยดีฟอลต์ ค่าคอนฟิกจะตั้งไว้แค่ 8 KB (กิโลไบต์) [...]]]></description>
			<content:encoded><![CDATA[<p>ปกติการติดตั้ง squid โดยใช้คำสั่ง rpm สามารถที่จะใช้งานได้เลย แต่เพื่อเพิ่มประสิทธิภาพการใช้งานของ squid เช่น เพิ่มขนาดของไฟล์ cache เพื่อให้สามารถเก็บไฟล์ได้มากขึ้น ซึ่งมีผลให้โอกาสที่มีการโหลดไฟล์เดียวกันซ้ำ (cache hit) มีสูงมากขึ้น ทำให้ประหยัด bandwidth ที่ต้องใช้ในการโหลดไฟล์จากอินเตอร์เน็ต</p>
<p>บทความนี้กล่าวถึงการแก้ไขคอนฟิกของ squid ในส่วนเพื่อเพิ่มขนาดของ cache โดยจะทดสอบบน Fedora 11  คอนฟิกไฟล์ของ squid จะอยู่ที่ /etc/squid/squid.conf</p>
<p><span id="more-889"></span></p>
<h4>ขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory</h4>
<p>เนื่องจากการเขียนอ่านไฟล์ลงบน memory มีความเร็วมากกว่าบน disk มาก ถ้าเรามีขนาดของ memory มาก แนะนำให้เพื่มขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้ใน memory เพื่อว่าถ้าการโหลดไฟล์ที่ HIT จะได้ดึงจาก memory ได้เลย</p>
<p>โดยดีฟอลต์ ค่าคอนฟิกจะตั้งไว้แค่ 8 KB (กิโลไบต์) เท่านั้น หากต้องการเพิ่มค่า เช่นเพิ่มเป็น 8 MB สามารถแก้ไขคอนฟิกได้ตามตัวอย่าง</p>
<pre>#  TAG: maximum_object_size_in_memory   (bytes)
#       Objects greater than this size will not be attempted to kept in
#       the memory cache. This should be set high enough to keep objects
#       accessed frequently in memory to improve performance whilst low
#       enough to keep larger objects from hoarding cache_mem.
#
#Default:
# maximum_object_size_in_memory 8 KB
<strong><span style="color: #0000ff;">maximum_object_size_in_memory 8 MB</span></strong></pre>
<h4>ขนาดไฟล์ใหญ่สุดที่จะเก็บ cache ไว้บน disk</h4>
<p>ประโยชน์ของการใช้ squid คือเก็บไฟล์ที่มีการโหลดมาแล้ว ลงบน disk เพื่อให้ครั้งต่อไปถ้ามีผู้โหลดไฟล์นี้ซ้ำ จะได้ดึงจาก disk ได้เลย ไม่จำเป็นต้องไปดาวน์โหลดจากอินเตอร์เน็ตอีกครั้ง</p>
<p>แต่ squid มีคอนฟิกที่ระบุขนาดของแต่ละไฟล์ใหญ่ที่สุด ที่จะเก็บ cache ลงบน disk โดยค่าดีฟอลต์ตั้งไว้แค่ 4096 KB หรือ 4 MB เท่านั้น หมายความว่า ถ้ามีการโหลดไฟล์ขนาดใหญ่กว่านี้  squid จะไม่ทำการเก็บไฟล์ ทำให้ผู้ใช้ที่โหลดไฟล์เดียวกัน ต้องไปดาวน์โหลดใหม่จากอินเตอร์เน็ตทุกครั้ง</p>
<p>ถ้าคุณมีขนาดของ disk ค่อนข้างใหญ่ แนะนำให้เพิ่มค่าคอนฟิกนี้ เช่น ถ้าต้องการเก็บไฟล์ที่มีขนาดใหญ่ถึง 16 MB สามารถแก้ไขคอนฟิกได้ดังนี้</p>
<pre>#  TAG: maximum_object_size     (bytes)
#       Objects larger than this size will NOT be saved on disk.  The
#       value is specified in kilobytes, and the default is 4MB.  If
#       you wish to get a high BYTES hit ratio, you should probably
#       increase this (one 32 MB object hit counts for 3200 10KB
#       hits).  If you wish to increase speed more than your want to
#       save bandwidth you should leave this low.
#
#       NOTE: if using the LFUDA replacement policy you should increase
#       this value to maximize the byte hit rate improvement of LFUDA!
#       See replacement_policy below for a discussion of this policy.
#
#Default:
# maximum_object_size 4096 KB
<strong><span style="color: #0000ff;">maximum_object_size 16 MB</span></strong></pre>
<h4>ขนาดไฟล์ cache รวมทั้งหมดที่เก็บไว้บน disk</h4>
<p>เมื่อมีการใช้งานไปเรื่อยๆ ขนาดของ cache ที่เก็บไว้บน disk ก็มีขนาดเพิ่มขึ้นเรื่อยๆ ไปถึงจุดหนึ่ง เป็นค่าผลรวมขนาดไฟล์ทั้งหมดสูงสุดที่ squid จะอนุญาตให้มีการเก็บไฟล์ไว้ ถ้าไฟล์ใหม่เพิ่มมาอีก ที่เกินจากกนี้ จำเป็นต้องลบบางไฟล์ใน cache ออกไป เพื่อเก็บไฟล์ใหม่นี้ได้</p>
<p>โดยดีฟอลต์ squid อนุญาตให้เก็บไฟล์ cache ได้รวมทั้งหมด ไม่เกิน 100 MB เท่านั้น ถ้ามีขนาด disk ขนาดใหญ่ แนะนำให้เพิ่มค่าคอนฟิกนี้ เช่น เพิ่มให้สามารถเก็บไฟล์ cache ได้ทั้งหมด 200 GB สามารถแก้ไขคอนฟิกได้ดังนี้</p>
<pre>#  TAG: cache_dir
#       Usage:
#
#       cache_dir ufs Directory-Name Mbytes L1 L2 [options]
#</pre>
<pre>#Default:
# cache_dir ufs /var/spool/squid 100 16 256
<strong><span style="color: #0000ff;">cache_dir ufs /var/spool/squid 200000 16 256</span></strong></pre>
<p>หมายเหตุ ขนาดตัวเลขที่ระบุ มีหน่วยเป็น MBytes</p>
<h4>รีโหลดเซอร์วิส squid หลังแก้ไขคอนฟิก</h4>
<p>หลังแก้ไขไฟล์ /etc/squid/squid.conf ทุกครั้ง ต้องรันคำสั่ง service เพื่อรีโหลดคอนฟิกใหม่ให้มีผล</p>
<pre>[root@fc11-64min ~]# <strong>service squid reload</strong></pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/05/configure_squid_proxy_server">คอนฟิก Squid Proxy Server</a></li>
<li><a href="http://spalinux.com/2009/07/test_squid_cache_size_configuration">ทดสอบค่าคอนฟิก Squid Cache Size</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/07/edit_squid_cache_size_configuration/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>จำกัดขนาดไฟล์ที่ดาวน์โหลดผ่าน squid 3.0</title>
		<link>http://spalinux.com/2009/03/limit_download_file_size_by_squid_30</link>
		<comments>http://spalinux.com/2009/03/limit_download_file_size_by_squid_30#comments</comments>
		<pubDate>Sat, 14 Mar 2009 07:54:06 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Proxy]]></category>
		<category><![CDATA[limit download file size]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=476</guid>
		<description><![CDATA[ไม่ว่าจะเพิ่มความเร็วอินเตอร์เน็ตเป็นเท่าไร ดูเหมือนเน็ตก็ยังช้าอยู่เหมือนเดิม ในบทความนี้จะแนะนำอีกวิธีการหนึ่งเพื่อจำกัดขนาดไฟล์ที่สามารถดาวน์โหลดได้ผ่าน squid proxy server โดยสามารถคอนฟิกได้ทั้งแบบจำกัดทั้งหมดทุกคน หรือสามารถแบ่งกลุ่มตามระดับได้ การคอนฟิกในที่นี้เป็นการจำกัดขนาดไฟล์การดาวน์โหลดต่อครั้ง เพื่อป้องกันไม่ให้ผู้ใช้งานดาวน์โหลดไฟล์ขนาดใหญ่ เช่นไฟล์เพลง หนัง ได้ เว็บเซิร์ฟเวอร์ระบบทดสอบ สำหรับการทดสอบ ในที่นี้เราจะสร้างไฟล์ขนาดต่างๆ บนเว็บเซิร์ฟเวอร์ เพื่อดูว่าการคอนฟิกของ squid มีผลอย่างไร [root@web-server test]# cat file-download.html &#60;a href="file-1M.bin"&#62;file-1M.bin&#60;/a&#62;&#60;br&#62; &#60;a href="file-2M.bin"&#62;file-2M.bin&#60;/a&#62;&#60;br&#62; &#60;a href="file-3M.bin"&#62;file-3M.bin&#60;/a&#62;&#60;br&#62; &#60;a href="file-4M.bin"&#62;file-4M.bin&#60;/a&#62;&#60;br&#62; [root@web-server test]# dd if=/dev/zero of=file-1M.bin bs=1000000 count=1 [root@web-server test]# dd if=/dev/zero of=file-2M.bin bs=1000000 count=2 [root@web-server test]# dd if=/dev/zero of=file-3M.bin bs=1000000 count=3 [root@web-server test]# [...]]]></description>
			<content:encoded><![CDATA[<p>ไม่ว่าจะเพิ่มความเร็วอินเตอร์เน็ตเป็นเท่าไร ดูเหมือนเน็ตก็ยังช้าอยู่เหมือนเดิม ในบทความนี้จะแนะนำอีกวิธีการหนึ่งเพื่อจำกัดขนาดไฟล์ที่สามารถดาวน์โหลดได้ผ่าน squid proxy server โดยสามารถคอนฟิกได้ทั้งแบบจำกัดทั้งหมดทุกคน หรือสามารถแบ่งกลุ่มตามระดับได้</p>
<p>การคอนฟิกในที่นี้เป็นการจำกัดขนาดไฟล์การดาวน์โหลดต่อครั้ง เพื่อป้องกันไม่ให้ผู้ใช้งานดาวน์โหลดไฟล์ขนาดใหญ่ เช่นไฟล์เพลง หนัง ได้<br />
<span id="more-476"></span></p>
<h4>เว็บเซิร์ฟเวอร์ระบบทดสอบ</h4>
<p>สำหรับการทดสอบ ในที่นี้เราจะสร้างไฟล์ขนาดต่างๆ บนเว็บเซิร์ฟเวอร์ เพื่อดูว่าการคอนฟิกของ squid มีผลอย่างไร</p>
<pre>[root@web-server test]# <strong>cat file-download.html</strong></pre>
<pre>&lt;a href="file-1M.bin"&gt;file-1M.bin&lt;/a&gt;&lt;br&gt;</pre>
<pre>&lt;a href="file-2M.bin"&gt;file-2M.bin&lt;/a&gt;&lt;br&gt;</pre>
<pre>&lt;a href="file-3M.bin"&gt;file-3M.bin&lt;/a&gt;&lt;br&gt;</pre>
<pre>&lt;a href="file-4M.bin"&gt;file-4M.bin&lt;/a&gt;&lt;br&gt;</pre>
<pre>[root@web-server test]# <strong>dd if=/dev/zero of=file-1M.bin bs=1000000 count=1</strong></pre>
<pre>[root@web-server test]# <strong>dd if=/dev/zero of=file-2M.bin bs=1000000 count=2</strong></pre>
<pre>[root@web-server test]# <strong>dd if=/dev/zero of=file-3M.bin bs=1000000 count=3</strong></pre>
<pre>[root@web-server test]# <strong>dd if=/dev/zero of=file-4M.bin bs=1000000 count=4</strong></pre>
<pre>[root@web-server test]# <strong>ls -l</strong></pre>
<pre>total 9780</pre>
<pre>-rw-r--r-- 1 root root 1000000 2009-03-14 12:28 file-1M.bin</pre>
<pre>-rw-r--r-- 1 root root 2000000 2009-03-14 12:28 file-2M.bin</pre>
<pre>-rw-r--r-- 1 root root 3000000 2009-03-14 12:28 file-3M.bin</pre>
<pre>-rw-r--r-- 1 root root 4000000 2009-03-14 12:28 file-4M.bin</pre>
<pre>-rw-r--r-- 1 root root     168 2009-03-14 12:26 file-download.html</pre>
<p>คอนฟิก ip และ port ของ squid proxy ลงไปใน browser แล้วทดลองเรียกไปที่ web-server (ip: 192.168.1.1) ไฟล์ file-download.html</p>
<p><img class="alignnone size-full wp-image-479" title="list_of_test_file" src="http://spalinux.com/wp-content/uploads/2009/03/list_of_test_file.png" alt="list_of_test_file" width="646" height="215" /></p>
<h4>คอนฟิก reply_body_max_size</h4>
<p>คอนฟิกของ squid ที่ใช้สำหรับการจำกัดขนาดของไฟล์ดาวน์โหลดคือ reply_body_max_size รูปแบบการคอนฟิกคือ</p>
<pre>reply_body_max_size SIZE UNITS [acl ...]</pre>
<p>คำอธิบาย</p>
<ul>
<li><strong>SIZE UNITS</strong> คือขนาดของไฟล์ที่ต้องการจำกัด</li>
<li><strong>acl</strong> เป็นออปชั่น ถ้าไม่ใส่ จะเป็นการจำกัดขนาดไฟล์ทุกคนที่ใช้ผ่าน proxy แต่ถ้าต้องการระบุเป็นกลุ่ม เราสามารถสร้าง acl แล้วนำชื่อ acl นั้นมาต่อท้ายบรรทัดนนี้ได้</li>
<li>ดีฟอลต์คอนฟิกที่ติดตั้งมา ไม่มีการจำกัด</li>
</ul>
<p><strong>หมายเหตุ</strong> รูปแบบการคอนฟิกค่า reply_body_max_size ของเวอร์ชั่น 3.0 จะแตกต่างจากเวอร์ชั่นก่อนหน้า เช่น 2.6 คือตัดคำว่า allow/deny ออกไป</p>
<p>ตัวอย่างคอนฟิกการจำกัดขนาดไฟล์ดาวน์โหลดได้สูงสุด 2 MBytes สำหรับทุกคน</p>
<pre>[root@squid ~]# <strong>cat /etc/squid/squid.conf</strong></pre>
<pre>...</pre>
<pre>reply_body_max_size 2 MB</pre>
<pre>...</pre>
<p>หลังจากเปลี่ยนคอนฟิก squid.conf แล้ว ต้องรีโหลดเซอร์วิสของ squid ด้วย เพื่อให้คอนฟิกใหม่มีผล</p>
<pre>[root@squid ~]# <strong>service squid reload</strong></pre>
<p>ทดลองใช้ browser กดดาวน์โหลดไฟล์ต่างๆ บนหน้า file-download.html ของเครื่องเว็บเซิร์ฟเวอร์</p>
<p>ข้อความเตือนว่าไม่สามารถดาวน์โหลดไฟล์ได้ เนื่องจากขนาดไฟล์มีขนาดใหญ่เกินไป &#8220;The request or reply is too large.&#8221;  (มากกว่า reply_body_max_size)</p>
<p>ตัวอย่างข้อความเตือน เมื่อพยายามดาวน์โหลดไฟล์ขนาด 3MB</p>
<p><img class="alignnone size-full wp-image-480" title="the_request_or_reply_is_too_large" src="http://spalinux.com/wp-content/uploads/2009/03/the_request_or_reply_is_too_large.png" alt="the_request_or_reply_is_too_large" width="895" height="665" /></p>
<h4>แบ่งขนาดไฟล์ดาวน์โหลดเป็นกลุ่ม</h4>
<p>ถ้าเราต้องการยกเว้นสำหรับบางกลุ่มเช่น บางคนจำเป็นต้องดาวน์โหลดไฟล์ขนาดใหญ่ๆ อยู่เสมอ เราสามารถสร้าง acl ขึ้นมาเพื่อระบุการแบ่งกลุ่ม แล้วคอนฟิกเข้ากับ reply_body_max_size เพื่อจำกัดขนาดไฟล์แยกเป็นกลุ่มๆ ตาม acl ได้</p>
<p>เช่น ต้องการให้เครื่องไคลเอนต์ที่มี ip เป็น 192.168.2.0/24 (net_group1) สามารถดาวน์โหลดไฟล์ขนาดสูงสุดได้ถึง 3MB แต่ถ้าเป็นเครื่องไคลเอนต์ที่มี ip  192.168.3.0/24 (net_group2) ดาวน์โหลดไฟล์ขนาดสูงสุดได้แค่ 1 MB สามารถคอนฟิกได้ดังนี้</p>
<pre>[root@squid ~]# <strong>cat /etc/squid/squid.conf</strong></pre>
<pre>...</pre>
<pre># INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS</pre>
<pre>#-------------------------------------------------------------------------------</pre>
<pre>acl net_group1 src 192.168.2.0/24</pre>
<pre>acl net_group2 src 192.168.3.0/24</pre>
<pre>reply_body_max_size 3 MB net_group1</pre>
<pre>reply_body_max_size 1 MB net_group2</pre>
<pre>#-------------------------------------------</pre>
<pre>...</pre>
<p>หลังจากเปลี่ยนคอนฟิก squid.conf แล้ว ต้องรีโหลดเซอร์วิสของ squid ด้วย เพื่อให้คอนฟิกใหม่มีผล</p>
<pre>[root@squid ~]# <strong>service squid reload</strong></pre>
<p>ทดลองใช้ browser จากเครื่อง ip ต่างๆ แล้วกดดาวน์โหลดไฟล์ต่างๆ บนหน้า file-download.html ของเครื่องเว็บเซิร์ฟเวอร์</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/05/configure_squid_proxy_server">คอนฟิก Squid Proxy Server</a></li>
<li><a href="http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1">การกำหนด access list ใน Squid Proxy Server ตอนที่ 1</a></li>
<li><a href="http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_2">การกำหนด access list ใน Squid Proxy Server ตอนที่ 2</a></li>
<li><a href="http://www.squid-cache.org/Doc/config/reply_body_max_size/" target="_blank">Squid configuration directive reply_body_max_size</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/03/limit_download_file_size_by_squid_30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การกำหนด access list ใน Squid Proxy Server ตอนที่ 2</title>
		<link>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_2</link>
		<comments>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_2#comments</comments>
		<pubDate>Sat, 17 Jan 2009 06:12:49 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=436</guid>
		<description><![CDATA[ในตอนที่สองนี้จะอธิบายดีฟอลต์คอนฟิก acl ที่ติดตั้งมากับ Fedora 10 โดยจะแยกเป็นส่วนๆ พร้อมทั้งแนะนำวิธีการแก้ไขคอนฟิกและการ reload เซอร์วิสหลังจากการแก้ไข ดีฟอลต์คอนฟิก acl ของ Squid เวอร์ชั่น squid-3.0.STABLE10 ที่ติดตั้งมากับ Fedora 10 จะแตกต่างจากเวอร์ชั่นก่อนๆ คือ อนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private  (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) มีสิทธิใช้ proxy ซี่งแนะนำให้มีการแก้ไขก่อนนำไปใช้งานจริง อนุญาตให้ใช้งานและจัดการเกี่ยวกับ cache_object ได้จากในเครื่องที่ติดตั้ง (localhost) acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 http_access allow manager localhost http_access deny manager http_access [...]]]></description>
			<content:encoded><![CDATA[<p>ในตอนที่สองนี้จะอธิบายดีฟอลต์คอนฟิก acl ที่ติดตั้งมากับ Fedora 10 โดยจะแยกเป็นส่วนๆ พร้อมทั้งแนะนำวิธีการแก้ไขคอนฟิกและการ reload เซอร์วิสหลังจากการแก้ไข</p>
<p>ดีฟอลต์คอนฟิก acl ของ Squid เวอร์ชั่น squid-3.0.STABLE10 ที่ติดตั้งมากับ Fedora 10 จะแตกต่างจากเวอร์ชั่นก่อนๆ คือ อนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private  (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) มีสิทธิใช้ proxy ซี่งแนะนำให้มีการแก้ไขก่อนนำไปใช้งานจริง</p>
<p><span id="more-436"></span></p>
<hr />
<h4>อนุญาตให้ใช้งานและจัดการเกี่ยวกับ cache_object ได้จากในเครื่องที่ติดตั้ง (localhost)</h4>
<pre>acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8

http_access allow manager localhost
http_access deny manager
http_access allow localhost
</pre>
<hr />
<h4>อนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private สามารถใช้งานได้</h4>
<pre>
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

http_access allow localnet
</pre>
<p>แนะนำให้ปิด (comment) ทั้งสี่บรรทัด ด้านบน แล้วค่อยกำหนด ip address ของไคลเอนต์ที่มีสิทธิใช้งาน proxy ได้อีกที</p>
<p>ปิดการอนุญาตเครื่องไคลเอนต์ที่มี ip address เป็น private</p>
<pre>
#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

#http_access allow localnet
</pre>
<hr />
<h4>ปฏิเสธการเชื่อมต่อโดยใช้พอร์ตของเว็บไซต์ ที่ไม่ใช่พอร์ต Safe_ports</h4>
<p>เบอร์พอร์ต Safe_ports มีดังนี้ 80, 21, 443, 70, 210, 280, 488, 597, 777, 1025-65535</p>
<pre>
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

http_access deny !Safe_ports
</pre>
<hr />
<h4>ปฏิเสธการเชื่อมต่อแบบ SSL ไปยังพอร์ตที่ไม่ใช่พอร์ตเบอร์ 443</h4>
<pre>
acl SSL_ports port 443
acl CONNECT method CONNECT

http_access deny CONNECT !SSL_ports
</pre>
<hr />
<h4>ปฏิเสธการใช้งานอื่นๆ ที่ไม่ match จาก acl ที่กำหนดไว้</h4>
<pre>http_access deny all</pre>
<hr />
<h4>วิธีการแก้ไขไฟล์คอนฟิก /etc/squid/squid.conf</h4>
<p>เพื่อสะดวกในการอ้างอิงภายหลัง การแก้ไขเพิ่มเติม acl ทั้งในส่วนกำหนดชื่อ aclname และการอนุญาตหรือปฏิเสธ ในไฟล์ /etc/squid/squid.conf ให้แก้ไขใต้บรรทัด ที่มีคำว่า</p>
<pre>
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS</pre>
<p>หลังจากแก้ไขไฟล์คอนฟิกของ squid ต้องใช้คำสั่ง service reload เซอร์วิส เพื่อให้คอนฟิกใหม่มีผล</p>
<pre>[root@proxy ~]# <strong>service squid reload</strong></pre>
<p>หากมีข้อผิดพลาดในคอนฟิก จะมี error ฟ้องขึ้นมา ต้องแก้ไขให้ถูกต้อง คอนฟิกใหม่ถึงจะมีผล</p>
<p>ตัวอย่างการกำหนด ip address ผิดในไฟล์คอนฟิก</p>
<pre>
[root@proxy ~]# <strong>service squid reload</strong>
2009/01/17 12:58:36| aclParseIpData: Bad host/IP: '192.168.1.02-'
FATAL: Bungled squid.conf line 643: acl acl_client1 src 192.168.1.02-
Squid Cache (Version 3.0.STABLE10): Terminated abnormally.
CPU Usage: 0.005 seconds = 0.001 user + 0.004 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1">การกำหนด access list ใน Squid Proxy Server ตอนที่ 1</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การกำหนด access list ใน Squid Proxy Server ตอนที่ 1</title>
		<link>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1</link>
		<comments>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1#comments</comments>
		<pubDate>Fri, 16 Jan 2009 18:35:49 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Proxy]]></category>
		<category><![CDATA[access list]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=422</guid>
		<description><![CDATA[คุณสมบัติอย่างหนึ่งของ Squid Proxy Server คือสามารถกำหนดสิทธิในการใช้งาน access list ได้หลายรูปแบบ และค่อนข้างละเอียดมาก เช่นที่ยกตัวอย่างในบทความ คอนฟิก Squid Proxy Server เป็นการอนุญาตเฉพาะเครื่องไคลเอนต์ที่มี ip address ตามที่กำหนด สามารถใช้ proxy ได้ ในบทความนี้จะกล่าวถึงการกำหนดสิทธิในรูปแบบอื่นๆ ที่สามารถทำได้ ตามความต้องการ ส่วนการคอนฟิก access list ใน Squid ไฟล์คอนฟิกหลักของโปรแกรม Squid โดยดีฟอลต์แล้วคือไฟล์ /etc/squid/squid.conf ประกอบด้วยคอนฟิกหลายส่วน (TAG) ด้วยกัน ในบทความนี้เราจะเปลี่ยนเฉพาะในส่วน &#8220;TAG: acl&#8221; และ &#8220;TAG: http_access&#8221; เท่านั้น คำแนะนำ สำรองไฟล์ (backup) /etc/squid/squid.conf ไว้ ก่อนการแก้ไข การคอนฟิกจะมีสองขั้นตอนดังนี้ 1) คอนฟิก TAG: acl ขั้นแรกเพิ่มคอนฟิกในส่วน [...]]]></description>
			<content:encoded><![CDATA[<p>คุณสมบัติอย่างหนึ่งของ Squid Proxy Server คือสามารถกำหนดสิทธิในการใช้งาน access list ได้หลายรูปแบบ และค่อนข้างละเอียดมาก เช่นที่ยกตัวอย่างในบทความ <a href="http://spalinux.com/2008/05/configure_squid_proxy_server">คอนฟิก Squid Proxy Server</a> เป็นการอนุญาตเฉพาะเครื่องไคลเอนต์ที่มี ip address ตามที่กำหนด สามารถใช้ proxy ได้</p>
<p>ในบทความนี้จะกล่าวถึงการกำหนดสิทธิในรูปแบบอื่นๆ ที่สามารถทำได้ ตามความต้องการ</p>
<p><span id="more-422"></span></p>
<h4>ส่วนการคอนฟิก access list ใน Squid</h4>
<p>ไฟล์คอนฟิกหลักของโปรแกรม Squid โดยดีฟอลต์แล้วคือไฟล์ /etc/squid/squid.conf ประกอบด้วยคอนฟิกหลายส่วน (TAG) ด้วยกัน ในบทความนี้เราจะเปลี่ยนเฉพาะในส่วน &#8220;TAG: acl&#8221; และ &#8220;TAG: http_access&#8221; เท่านั้น</p>
<p><strong>คำแนะนำ</strong> สำรองไฟล์ (backup) /etc/squid/squid.conf ไว้ ก่อนการแก้ไข</p>
<p>การคอนฟิกจะมีสองขั้นตอนดังนี้</p>
<h4>1) คอนฟิก TAG: acl</h4>
<p>ขั้นแรกเพิ่มคอนฟิกในส่วน acl เพื่อกำหนดชื่อ (aclname) และชนิด (acltype) ของ access list มีรปแบบคอนฟิกดังนี้</p>
<pre>acl &lt;aclname&gt; &lt;acltype&gt; &lt;argument&gt; ...</pre>
<p>คำอธิบาย</p>
<ul>
<li>&lt;aclname&gt; เป็นชื่อ acl ที่เรากำหนดเอง โดยชื่อชี้จะถูกกำหนดในขั้นตอนที่สองอีกทีว่าจะอนุญาตหรือปฏิเสธ</li>
<li>&lt;acltype&gt; เป็นชนิด access list ที่เราจะใช้ แสดงรายละเอยดในหัวข้อถัดไป</li>
<li>&lt;argument&gt; เป็นค่าพารามิเตอร์ สามารถกำหนดได้หลายค่า ขึ้นอยู่กับ acltype</li>
</ul>
<h4>2) คอนฟิก TAG: http_access</h4>
<p>ส่วนที่สองคือเพิ่มคอนฟิกในส่วน TAG: http_acces เพื่อที่จะอนุญาต (allow) หรือปฏิเสธ (deny) ชื่อ acl (aclname) ที่สร้างไว้ มีรูปแบบคอนฟิกดังนี้</p>
<pre>http_access {allow|deny} [!]&lt;aclname&gt; ...</pre>
<p>คำอธิบาย</p>
<ul>
<li>คอนฟิก http_access เป็นตัวกำหนดว่า aclname ที่ match ได้นั้น จะอนุญาตหรือปฏิเสธการใช้งาน</li>
<li>หากมีหลาย aclname ถูกกำหนดไว้ในบรรทัดเดียวกัน การ match ได้จะต้อง match ชื่อ aclname ทั้งหมด</li>
<li>รูปแบบการ match จะไล่เรียงตั้งแต่บรรทัดแรกจนถึงบรรทัดสุดท้ายที่ขึ้นต้นด้วย http_access</li>
<li>เครื่องหมายตกใจ ! เป็นการ match ในทางตรงกันข้าม</li>
</ul>
<h4>ชนิดของ access list &lt;acltype&gt;</h4>
<p>สามารถดูรายละเอียดทั้งหมดของ acltype ได้จากในไฟล์ /etc/squid/squid.conf แต่ในที่นี้ขอยกตัวอย่างมาเฉพาะที่ใช้กันบ่อยๆ  ดังนี้<strong></strong></p>
<hr />
<span style="color: #0000ff;"><strong>กำหนด ip address : src, dst</strong></span></p>
<p>ตัวอย่าง match ไคลเอนต์ที่มี ip address อยู่ใน subnet 192.168.1.0/24 หรือ 192.168.2.0/24</p>
<pre>acl acl_client1 src 192.168.1.0/24 192.168.2.0/24</pre>
<p>ตัวอย่าง match ไคลเอนต์ที่มี ip address ระหว่าง 192.168.1.1 ถึง 192.168.1.10</p>
<pre>acl acl_range1 src 192.168.1.1-192.168.1.10</pre>
<p>ตัวอย่าง match การเข้าเว็บไซต์ที่มี ip address 10.1.0.1 หรือ 10.9.0.22</p>
<pre>acl acl_server1 dst 10.1.0.1/32 10.9.0.22/32</pre>
<hr />
<span style="color: #0000ff;"><strong>กำหนดชื่อเว็บไซต์ : dstdomain</strong></span></p>
<p>ตัวอย่าง match การเข้าเว็บไซต์ที่มีโดเมนเนมเป็น .useless-website.com</p>
<pre>acl acl_domain1 dstdomain .useless-website.com</pre>
<hr />
<span style="color: #0000ff;"><strong>กำหนดพอร์ต : port</strong></span></p>
<p>ตัวอย่างการ match การเข้าเว็บไซต์ พอร์ต 8080 หรือ พอร์ต 9000</p>
<pre>acl acl_port1 port 8080 9000</pre>
<hr />
<span style="color: #0000ff;"><strong>กำหนดช่วงเวลา : time</strong></span></p>
<p>พารามิเตอร์ที่ใช้กำหนดช่วงเวลามีสองส่วนคือ วัน และเวลา มีรูปแบบคอนฟิกดังนี้</p>
<pre>acl aclname time [day-abbrevs] [h1:m1-h2:m2]</pre>
<p>คำอธิบาย</p>
<ul>
<li>day-abbrevs : เป็นอักษรย่อของวัน ตามด้านล่างนี้</li>
</ul>
<p>S &#8211; Sunday<br />
M &#8211; Monday<br />
T &#8211; Tuesday<br />
W &#8211; Wednesday<br />
H &#8211; Thursday<br />
F &#8211; Friday<br />
A &#8211; Saturday</p>
<ul>
<li>h1:m1 เวลาเริ่มต้น</li>
<li>h2:m2 เวลาสิ้นสุด</li>
<li>h1:m1 ต้องน้อยกว่า h2:m2</li>
</ul>
<p>ตัวอย่างการ match การเข้าเว็บไซต์ระหว่างเวลา 12:00-13:00 ตั้งแต่วันจันทร์ถึงวันศุกร์</p>
<pre>acl acl_time1 time MTWHF 12:00-13:00</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://spalinux.com/2008/05/configure_squid_proxy_server">คอนฟิก Squid Proxy Server</a></li>
<li><a href="http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_2">การกำหนด access list ใน Squid Proxy Server ตอนที่ 2</a></li>
<li>ไฟล์ /etc/squid/squid.conf</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>คอนฟิก Squid Proxy Server</title>
		<link>http://spalinux.com/2008/05/configure_squid_proxy_server</link>
		<comments>http://spalinux.com/2008/05/configure_squid_proxy_server#comments</comments>
		<pubDate>Tue, 13 May 2008 15:23:58 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=17</guid>
		<description><![CDATA[ปัญหาอย่างหนึ่งที่เป็นกันทุกรายในเครือข่ายคือการใช้อินเทอร์เน็ต ไม่ว่าเราจะเพิ่มความเร็วเท่าไรดูเหมือนจะไม่เพียงพอ ใช้ไปสักพักก็เริ่มช้า บทความนี้จอแนะนำการใช้ Proxy Server เพื่อเพิ่มประสิทธิภาพและจำกัดการใช้งานอินเทอร์เน็ต คือทุกเครื่องแทนที่จะออกอินเทอร์เน็ตกันได้อย่างอิสระ เราจะบังคับให้ต้องมาผ่าน proxy server ก่อนเสมอ ถ้าไม่ผ่านก็ใช้เน็ตไม่ได้ ประโยชน์ของการใช้ proxy server มีอยู่หลายอย่างจะขอสรุปคร่าวๆ ดังนี้ เมื่อมีการเรียกไฟล์เดียวกันจากอินเทอร์เน็ต เช่นรูปภาพ เมื่อคนแรกเรียกไฟล์นี้แล้ว proxy จะเก็บไฟล์นี้ไว้ในเครื่อง (cache) เมื่อคนต่อมาเรียกไฟล์เดียวกัน ก็สามารถดึงจาก proxy ได้เลย ไม่ต้องไปเรียกจากอินเทอร์เน็ตอีกครั้ง นี้ถือเป็นจุดมุ่งหมายหลักๆ เลย สำหรับ proxy server เราสามารถระบุช่วงเวลาในการใช้งานได้ ระบุเว็บที่สามารถใช้งานได้ หรือเว็บไหนที่ห้ามไป สามารถที่จะทำสถิติรายงานการใช้งาน เพื่อดูว่าเครื่องไหนใช้งานมากสุด มีหลายโปรแกรมที่สามารถทำหน้าที่เป็น proxy server ได้ บทความนี้จะขอแนะนำการใช้ squid เพื่อติดตั้งบน Fedora Linux 8 ขั้นตอนที่ 1 &#8211; ตรวจสอบและติดตั้ง squid ขั้นแรกตรวจสอบว่าเครื่อง [...]]]></description>
			<content:encoded><![CDATA[<p>ปัญหาอย่างหนึ่งที่เป็นกันทุกรายในเครือข่ายคือการใช้อินเทอร์เน็ต ไม่ว่าเราจะเพิ่มความเร็วเท่าไรดูเหมือนจะไม่เพียงพอ ใช้ไปสักพักก็เริ่มช้า</p>
<p>บทความนี้จอแนะนำการใช้ Proxy Server เพื่อเพิ่มประสิทธิภาพและจำกัดการใช้งานอินเทอร์เน็ต คือทุกเครื่องแทนที่จะออกอินเทอร์เน็ตกันได้อย่างอิสระ เราจะบังคับให้ต้องมาผ่าน proxy server ก่อนเสมอ ถ้าไม่ผ่านก็ใช้เน็ตไม่ได้</p>
<p><span id="more-17"></span></p>
<p>ประโยชน์ของการใช้ proxy server มีอยู่หลายอย่างจะขอสรุปคร่าวๆ ดังนี้</p>
<ul>
<li>เมื่อมีการเรียกไฟล์เดียวกันจากอินเทอร์เน็ต เช่นรูปภาพ เมื่อคนแรกเรียกไฟล์นี้แล้ว proxy จะเก็บไฟล์นี้ไว้ในเครื่อง (cache) เมื่อคนต่อมาเรียกไฟล์เดียวกัน ก็สามารถดึงจาก proxy ได้เลย ไม่ต้องไปเรียกจากอินเทอร์เน็ตอีกครั้ง นี้ถือเป็นจุดมุ่งหมายหลักๆ เลย สำหรับ proxy server</li>
<li>เราสามารถระบุช่วงเวลาในการใช้งานได้</li>
<li>ระบุเว็บที่สามารถใช้งานได้ หรือเว็บไหนที่ห้ามไป</li>
<li>สามารถที่จะทำสถิติรายงานการใช้งาน เพื่อดูว่าเครื่องไหนใช้งานมากสุด</li>
</ul>
<p>มีหลายโปรแกรมที่สามารถทำหน้าที่เป็น proxy server ได้ บทความนี้จะขอแนะนำการใช้ squid เพื่อติดตั้งบน Fedora Linux 8</p>
<p><strong>ขั้นตอนที่ 1 &#8211; ตรวจสอบและติดตั้ง squid</strong><br />
ขั้นแรกตรวจสอบว่าเครื่อง server เรา ติดตั้งโปรแกรม squid หรือยัง ถ้าไม่มีต้องติดตั้งลงไป โดยไฟล์ติดตั้งที่ต้องใช้คือ</p>
<p>ตัวอย่างการติดตั้ง squid บน Fedora 8 (x86_64)<br />
<code><br />
[root@server ~]# <strong>rpm -ivh squid-2.6.STABLE16-2.fc8.x86_64.rpm</strong><br />
[root@server ~]# <strong>rpm -q squid</strong><br />
squid-2.6.STABLE16-2.fc8<br />
[root@server ~]#<br />
</code></p>
<p><strong>ขั้นตอนที่ 2 &#8211; แก้ไขคอนฟิก</strong><br />
เราต้องเปลี่ยนแปลงคอนฟิกไฟล์ของ squid เพื่อให้ใช้งานได้ คอนฟิกที่ดีฟอลต์ที่มาตอนติดตั้งจะไม่สามารถใช้งานจากเครื่องอื่นได้ ใช้ได้แต่จากเครื่อง server ที่ติดตั้งโปรแกรมเอง (ด้วยเหตุผลทางด้านความปลอดภัย ไม่งั้นเครื่องข้างนอกจะสามารถชึ้ proxy มายังเครื่องเรา แล้ว สามารถเรียกเว็บภายในของเราได้)</p>
<p>ไฟล์คอนฟิกหลักของ proxy คือไฟล์ /etc/squid/squid.conf สำหรับเริ่มต้นจะขอแนะนำแก้คอนฟิกพื้นฐานให้สามารถใช้งานได้</p>
<p><strong>2.1 ACCESS CONTROLS</strong><br />
คอนฟิกส่วนนี้จะกำหนดสิทธิในการใช้งาน proxy ว่ามาจากเครื่องไหนได้บ้าง แล้วไปเว็บไซต์ไหนได้บ้าง</p>
<p><code><br />
# ACCESS CONTROLS<br />
# -----------------------------------------------------------------------------<br />
acl all src 0.0.0.0/0.0.0.0<br />
acl manager proto cache_object<br />
acl localhost src 127.0.0.1/255.255.255.255<br />
acl to_localhost dst 127.0.0.0/8<br />
acl SSL_ports port 443<br />
acl Safe_ports port 80 # http<br />
acl Safe_ports port 21 # ftp<br />
acl Safe_ports port 443 # https<br />
acl Safe_ports port 70 # gopher<br />
acl Safe_ports port 210 # wais<br />
acl Safe_ports port 1025-65535 # unregistered ports<br />
acl Safe_ports port 280 # http-mgmt<br />
acl Safe_ports port 488 # gss-http<br />
acl Safe_ports port 591 # filemaker<br />
acl Safe_ports port 777 # multiling http<br />
acl CONNECT method CONNECT<br />
</code></p>
<p>เพิ่ม acl อีกบรรทัดนึงต่อท้ายคอนฟิกส่วนนี้ เพื่อกำหนดเครื่องที่จะมีสิทธิใช้งาน proxy ได้</p>
<p>ตัวอย่างเช่น เราต้องการให้ทุกเครื่องที่อยู่ในเครื่อข่าย 192.168.1.x และ 192.168.2.x ให้สามารถใช้งาน proxy ได้ ให้เพิ่มบรรทัดตามตัวอย่างนี้</p>
<p><code><br />
<strong><br />
acl our_networks src 192.168.1.0/24 192.168.2.0/24<br />
http_access allow our_networks<br />
</strong><br />
</code></p>
<p>อีกตัวอย่างหนึ่งสมมุติว่าเราไม่ต้องการให้ผู้ใช้งานเข้าเว็บไซต์ foo.com หรือ xxx.com เราสามารถเพิ่มคอนฟิกได้ดังนี้</p>
<p><code><br />
<strong><br />
acl ban_websites dstdomain .foo.com .xxx.com<br />
http_access deny ban_websites<br />
</strong><br />
</code></p>
<p>หมายเหตุ ข้อควรระวังการเรียงลำดับของ acl ก่อนหน้าและหลัง มีผลในการอนุญาต (allow) หรือปฏิเสธ (deny) การใช้งาน</p>
<p><strong>2.2 NETWORK OPTIONS</strong><br />
ในส่วนนี้จะกำหนดพอร์ตของ proxy ที่ใช้งาน โดยดีฟอลต์แล้ว จะใช้พอร์ต 3128 ถ้าเราจะแก้ไขก็สามารถเปลี่ยนตัวเลข 3128 ไปเป็นตัวเลขอื่นได้เลย เช่นกำหนดให้ใช้พอร์ต</p>
<p><code><br />
# NETWORK OPTIONS<br />
# -----------------------------------------------------------------------------<br />
# Squid normally listens to port 3128<br />
http_port <strong>3128</strong><br />
</code></p>
<p>หมายเหตุ หลังจากทำขึ้นตอนที่ 3 เพื่อเริ่มต้น squid proxy server แล้ว ทุกครั้งที่แก้ไขไฟล์คอนฟิก /etc/squid/squid.conf ต้องรันคำสั่ง service ทุกครั้งเพื่อให้ค่าคอนฟิกมีผล แนะนำให้ใช้ reload ก็เพียงพอ ไม่จำเป็นต้อง restart โปรแกรมใหม่ เพราะจะช้ามาก</p>
<p><code><br />
[root@server squid]# <strong>service squid reload</strong><br />
[root@server squid]#<br />
</code></p>
<p>ขั้นตอนที่ 3 เริ่มตั้น squid proxy server<br />
หลังจากแก้ไขคอนฟิกเรียบร้อบแล้ว ต้องใช้คำสั่ง service เพื่อเริ่มต้นทำหน้าที่เป็น squid proxy server</p>
<p>ตัวอย่างการเริ่มต้น squid proxy server<br />
<code><br />
[root@server ~]# <strong>service squid start</strong><br />
init_cache_dir /var/spool/squid... Starting squid: .. [ OK ]<br />
[root@server ~]#<br />
</code></p>
<p>ถ้าเราเพิ่งรัน squid proxy server ครั้งแรก จะมีการสร้าง cache directory ขึ้นมา โดยดีฟอลต์แล้วจะอยู่ใน /var/spool/squid/</p>
<p><strong>ขั้นตอนที่ &#8211; 4 ทดสอบจากเครื่อง client</strong><br />
ในที่นี้จะแนะนำการทดสอบการเครื่อง client โดยใช้โปรแกรม Internet Explorer, และ Firefox โดยชี้ไปที่ proxy ที่มี ip 192.168.1.1 พอร์ต 3128</p>
<p>ใน Internet Explorer สามารถเข้าไปได้ที่ Tools -&gt; Internet Options -&gt; Connections -&gt; LAN settings</p>
<p>ตัวอย่างการตั้งค่า proxy ใน Internet Explorer<br />
<a href="http://spalinux.com/wp-content/uploads/2008/05/config_proxy_in_ie1.png"><img class="alignnone size-medium wp-image-20" title="config_proxy_in_ie1" src="http://spalinux.com/wp-content/uploads/2008/05/config_proxy_in_ie1-300x264.png" alt="" width="300" height="264" /></a></p>
<p>ส่วนใน Mozilla Firefox สามารถเข้าไปแก้ไขคอนฟิกได้ที่ Tools -&gt; Options -&gt; Advanced -&gt; Network -&gt; Settings -&gt;</p>
<p>ตัวอย่างการตั้งค่า proxy ใน Mozilla Firefox<br />
<a href="http://spalinux.com/wp-content/uploads/2008/05/configure_proxy_in_firefox.png"><img class="alignnone size-medium wp-image-19" title="configure_proxy_in_firefox" src="http://spalinux.com/wp-content/uploads/2008/05/configure_proxy_in_firefox-285x300.png" alt="" width="285" height="300" /></a></p>
<p><strong>ข้อมูลอ้างอิง</strong></p>
<ul>
<li><a href="http://spalinux.com/2009/01/define_access_list_in_squid_proxy_server_part_1">การกำหนด access list ใน Squid Proxy Server ตอนที่ 1</a></li>
<li><a href="http://www.squid-cache.org/" target="_blank">Squid Official Site</a></li>
<li><a href="http://mirrors.kernel.org/fedora/releases/8/Everything/x86_64/os/Packages/squid-2.6.STABLE16-2.fc8.x86_64.rpm" target="_blank">squid-2.6.STABLE16-2.fc8.x86_64.rpm</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2008/05/configure_squid_proxy_server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
