<?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>baalchina &#187; Squid</title>
	<atom:link href="http://www.baalchina.net/tag/squid/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.baalchina.net</link>
	<description>baalchina技术日志</description>
	<lastBuildDate>Mon, 19 Jul 2010 08:30:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>最简squid配置教程</title>
		<link>http://www.baalchina.net/2010/01/squid-fast-config/</link>
		<comments>http://www.baalchina.net/2010/01/squid-fast-config/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 02:14:39 +0000</pubDate>
		<dc:creator>baalchina</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[服务器管理]]></category>

		<guid isPermaLink="false">http://www.baalchina.net/2010/01/squid-fast-config/</guid>
		<description><![CDATA[for 刘老大。:lol
首先ssh上去，
vi /etc/hosts

添加你要解析的地址，比如
1.1.1.1 hosts.example.com

其中

1.1.1.1是真实Web服务器的IP地址
hosts.example是服务器的域名

接下来编辑
vi /usr/local/squid/etc/squid.conf

对应添加这两行：
cache_peer_domain example&#160;hosts.example.com 
cache_peer hosts.example.com parent 80 0 originserver no-query name=example&#160;

注意颜色对应。
然后重新配置squid即可。
/usr/local/squid/sbin/squid -k reconfigure

测试通过就ok了。
]]></description>
			<content:encoded><![CDATA[<p>for 刘老大。:lol</p>
<p>首先ssh上去，</p>
<blockquote><p>vi /etc/hosts</p>
</blockquote>
<p>添加你要解析的地址，比如</p>
<blockquote><p>1.1.1.1 hosts.example.com</p>
</blockquote>
<p>其中</p>
<ol>
<li>1.1.1.1是真实Web服务器的IP地址</li>
<li>hosts.example是服务器的域名</li>
</ol>
<p>接下来编辑</p>
<blockquote><p>vi /usr/local/squid/etc/squid.conf</p>
</blockquote>
<p>对应添加这两行：</p>
<blockquote><p>cache_peer_domain <font color="#0000ff">example</font>&#160;<font color="#800000">hosts.example.com</font> </p>
<p>cache_peer <font color="#800000">hosts.example.com</font> parent 80 0 originserver no-query name=<font color="#0000ff">example</font>&#160;</p>
</blockquote>
<p>注意颜色对应。</p>
<p>然后重新配置squid即可。</p>
<blockquote><p>/usr/local/squid/sbin/squid -k reconfigure</p>
</blockquote>
<p>测试通过就ok了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.baalchina.net/2010/01/squid-fast-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Squid的设置（Part II，Troubleshooting，200100128）</title>
		<link>http://www.baalchina.net/2009/08/squid-troubleshooting/</link>
		<comments>http://www.baalchina.net/2009/08/squid-troubleshooting/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 07:51:07 +0000</pubDate>
		<dc:creator>baalchina</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.baalchina.net/2009/08/squid-troubleshooting/</guid>
		<description><![CDATA[WARNING: transparent proxying not supported
2009/08/03 08:22:07&#124; WARNING: transparent proxying not supported

不支持透明代理.
Aug&#160; 7 11:20:29 cache squid[21884]:&#160;&#160;&#160;&#160; Failed to verify one of the swap directories, Check cache.log&#160;&#160; for details.&#160; Run 'squid -z' to create swap directories&#160; if needed, or if running Squid for the first time.      Aug&#160; 7 11:20:29 cache squid[21882]: Squid [...]]]></description>
			<content:encoded><![CDATA[<h2>WARNING: transparent proxying not supported</h2>
<blockquote><p>2009/08/03 08:22:07| WARNING: transparent proxying not supported</p>
</blockquote>
<p>不支持透明代理.</p>
<blockquote><p>Aug&#160; 7 11:20:29 cache squid[21884]:&#160;&#160;&#160;&#160; Failed to verify one of the swap directories, Check cache.log&#160;&#160; for details.&#160; Run 'squid -z' to create swap directories&#160; if needed, or if running Squid for the first time.      <br />Aug&#160; 7 11:20:29 cache squid[21882]: Squid Parent: child process 21884 exited with status 1       <br />[root@cache ~]# /usr/local/squid/sbin/squid -z</p>
</blockquote>
<p>第一次运行的时候需要建立CACHE目录.通过-z参数实现.</p>
<h2>启动报错，Cannot open HTTP Port</h2>
<blockquote><p>Dec 31 01:04:46 cache squid[12484]: Squid Parent: child process 12489 started      <br />Dec 31 01:04:46 cache (squid): Cannot open HTTP Port       <br />Dec 31 01:04:46 cache squid[12484]: Squid Parent: child process 12489 exited with status 1</p>
</blockquote>
<p>非root用户不能启动大于1024的端口，用root启动。另外selinux也会阻挡。关掉，重启。</p>
<p>&#160;</p>
<p>&#160;</p>
<h2>WARNING cache_mem is larger than total disk cache space!</h2>
<blockquote><p>[root@cache squid-3.1.0.13]# /usr/local/squid/sbin/squid -k parse      <br />2009/08/08 15:20:17| Processing Configuration File: /usr/local/squid/etc/squid.conf (depth 0)       <br />2009/08/08 15:20:17| Starting Authentication on port [::]:80       <br />2009/08/08 15:20:17| Disabling Authentication on port [::]:80 (interception enabled)       <br />2009/08/08 15:20:17| Disabling IPv6 on port [::]:80 (interception enabled)       <br /><strong>2009/08/08 15:20:17| WARNING cache_mem is larger than total disk cache space!</strong></p>
</blockquote>
<p>&#160;</p>
<p>cache_men不能超过cache_dir中的一个数值，比如我的cache_dir是</p>
<p>cache_dir ufs /data/squid_log 100 16 256</p>
<p>cache_men被注释掉了，于是报错。</p>
<p>修改为</p>
<p>cache_men 96 MB，OK。</p>
<p>参考：<a title="http://bbs.chinaunix.net/archiver/?tid-114374.html" href="http://bbs.chinaunix.net/archiver/?tid-114374.html">http://bbs.chinaunix.net/archiver/?tid-114374.html</a></p>
<p>&#160;</p>
<h2>ACL的问题</h2>
<p>默认Squid(3.1)不支持反向代理访问的（但是RFC1918的地址可以），是通过squid.conf中的ACL来实现的。</p>
<p>具体现象就是你在172地址访问没问题，但是公网访问就提示Access Denied。</p>
<p>日志显示：</p>
<blockquote><p>1249718043.103&#160;&#160;&#160;&#160;&#160; 0 218.94.50.92 TCP_DENIED/403 3750 GET <a href="http://english.nau.edu.cn/">http://english.nau.edu.cn/</a> - NONE/- text/html</p>
</blockquote>
<p>这时候只需要将squid.conf中默认的</p>
<p>http_access deny all修改为</p>
<p>http_access allow all就可以了。一个很简单的ACL。</p>
<p>&#160;</p>
<h2>重启的时候提示squid: No running copy</h2>
<p>使用squid -k reconfigure重启的时候老是提示</p>
<blockquote><p>[root@cache ~]# /usr/local/squid/sbin/squid -k shutdown      <br />squid: No running copy</p>
<p>&#160;</p>
</blockquote>
<p>解决办法：squid将pid记录在一个文件里面，如果不存在（默认好像不会自己建立），那么就找不到了，虽然这时候squid是在运行的。只要指定一个pid文件就行了。</p>
<blockquote><p>[root@cache ~]#touch /usr/local/squid/var/squid.pid</p>
</blockquote>
<p>再到squid.conf里面加入：</p>
<blockquote><p>pid_filename /usr/local/squid/var/squid.pid</p>
</blockquote>
<p>就搞定了。</p>
<p>&#160;</p>
<h2>2010/01/25 18:09:09| client_side.cc(2949) okToAccept: WARNING! Your cache is running out of filedescriptors</h2>
<p>访问squid发现非常非常之慢，然后找cache.log，发现如上提示。</p>
<p>google了一下，发现是因为打开的文件数超过了linux的限制造成的，修改即可。</p>
<blockquote><p># ulimit -HSn 65536</p>
</blockquote>
<p>修改Linux为65536，并加入到/etc/profile中。</p>
<p>然后重新编译Squid，加入</p>
<blockquote><p>--with-filedescriptors=65536</p>
</blockquote>
<p>参数即可。</p>
<p>参考：</p>
<ol>
<li><a title="http://blog.verycd.com/dash/cmd=showentry&amp;eid=10840" href="http://blog.verycd.com/dash/cmd=showentry&amp;eid=10840">http://blog.verycd.com/dash/cmd=showentry&amp;eid=10840</a> </li>
<li><a title="http://linux.chinaunix.net/bbs/viewthread.php?tid=1028215" href="http://linux.chinaunix.net/bbs/viewthread.php?tid=1028215">http://linux.chinaunix.net/bbs/viewthread.php?tid=1028215</a> </li>
</ol>
<h2>不停的自动关闭</h2>
<p>squid不断地自动关闭，然后发现/var/log/message里面有这个</p>
<blockquote><p>Jan 28 12:20:16 cache-lab squid[6725]: Squid Parent: child process 6741 exited due to signal 25 with status 0     <br />Jan 28 12:20:19 cache-lab squid[6725]: Squid Parent: child process 6744 started      <br />Jan 28 12:20:26 cache-lab squid[6725]: Squid Parent: child process 6744 exited due to signal 25 with status 0      <br />Jan 28 12:20:26 cache-lab squid[6725]: Exiting due to repeated, frequent failures</p>
</blockquote>
<p>singal 25，貌似是因为日志文件太大了。看了一下日志：</p>
<blockquote><p>[root@cache-lab ~]# ll /data/logs/squid/     <br />total 3757392      <br />-rw-r----- 1 nobody nobody 1661531737 Jan 28 15:56 access.log      <br />-rw-r----- 1 nobody nobody&#160;&#160; 34775796 Jan 28 15:56 cache.log      <br />-rw-r----- 1 nobody nobody 2147483647 Jan 27 04:12 store.log</p>
</blockquote>
<p>看到那个著名的<font color="#ff0000">2147483647</font>了...</p>
<p><font style="background-color: #f4f5f7"></font>    <br />暂时把store.log写到/dev/null试试看。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.baalchina.net/2009/08/squid-troubleshooting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Squid反向代理的实现(Part I, Installing and configuration)</title>
		<link>http://www.baalchina.net/2009/08/squiid-reverse-proxy/</link>
		<comments>http://www.baalchina.net/2009/08/squiid-reverse-proxy/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 08:29:06 +0000</pubDate>
		<dc:creator>baalchina</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.baalchina.net/2009/08/squiid-reverse-proxy/</guid>
		<description><![CDATA[目的

很多服务器需要公网加速，但是公网IP有限。 
实现对外提供IPv6服务，但是不是每台服务器都可以直接接入到IPv6网络中（能否通过Squid实现？） 
最新的3.1版本和以前的差别很大！很多文档还是基于2.6之前版本的。务必注意 

Squid下载地址：    http://mirror.aarnet.edu.au/pub/squid/squid/
安装
很简单。
#./configure --prefix=/usr/local/squid
#make
#make install

配置
首先要给日志文件夹写权限
#chmod +777 –R /usr/local/squid/logs

前面说过3.1版本区别很大…比如反向代理的，网上常见文档是这么说的
http://www.linux.gov.cn/netweb/squid.htm#reverseconf
httpd_accel_host virtual      httpd_accel_port 80       httpd_accel_single_host off       httpd_accel_uses_host_header on

然后加上dns解析就行了。但是3.1里面，检测直接报错。实际上3.1里面只需要一条就够了：
http_port 80 transparent

也就是在后面加上transparent参数。
注一下：实际上一开始我理解错了。transparent参数是透明代理的意思，用于正向代理。直接打开虽然可以实现反向代理的功能，但是实际上任何一个用户、网站都可以通过我的cache服务器进行代理访问了（比如通过我的代理服务器访问edu.cn网站）。
正确的反向代理的做法是通过cache_peer这个参数实现的：
http_port 80 accel vhost      
cache_peer xlzx.nau.edu.cn parent 80 0 originserver no-query name=xlzx [...]]]></description>
			<content:encoded><![CDATA[<h3>目的</h3>
<ol>
<li>很多服务器需要公网加速，但是公网IP有限。 </li>
<li>实现对外提供IPv6服务，但是不是每台服务器都可以直接接入到IPv6网络中（能否通过Squid实现？） </li>
<li><strong><span style="color: #ff0000">最新的3.1版本和以前的差别很大！很多文档还是基于2.6之前版本的。务必注意</span></strong> </li>
</ol>
<p>Squid下载地址：    <br /><a href="http://mirror.aarnet.edu.au/pub/squid/squid/">http://mirror.aarnet.edu.au/pub/squid/squid/</a></p>
<h3>安装</h3>
<p>很简单。</p>
<blockquote><p>#<strong>./configure --prefix=/usr/local/squid</strong></p>
<p>#<strong>make</strong></p>
<p>#<strong>make install</strong></p>
</blockquote>
<h3>配置</h3>
<p>首先要给日志文件夹写权限</p>
<blockquote><p>#chmod +777 –R /usr/local/squid/logs</p>
</blockquote>
<p>前面说过3.1版本区别很大…比如反向代理的，网上常见文档是这么说的</p>
<p><a title="http://www.linux.gov.cn/netweb/squid.htm#reverseconf" href="http://www.linux.gov.cn/netweb/squid.htm#reverseconf">http://www.linux.gov.cn/netweb/squid.htm#reverseconf</a></p>
<blockquote><p>httpd_accel_host virtual      <br />httpd_accel_port 80       <br />httpd_accel_single_host off       <br />httpd_accel_uses_host_header on</p>
</blockquote>
<p>然后加上dns解析就行了。但是3.1里面，检测直接报错。实际上3.1里面只需要一条就够了：</p>
<blockquote><p>http_port 80 <strong>transparent</strong></p>
</blockquote>
<p>也就是在后面加上<strong>transparent</strong>参数。</p>
<p><strong>注一下：实际上一开始我理解错了。transparent参数是透明代理的意思，用于正向代理。直接打开虽然可以实现反向代理的功能，但是实际上任何一个用户、网站都可以通过我的cache服务器进行代理访问了（比如通过我的代理服务器访问edu.cn网站）。</strong></p>
<p>正确的反向代理的做法是通过cache_peer这个参数实现的：</p>
<blockquote><p>http_port 80 accel vhost      </p>
<p>cache_peer xlzx.nau.edu.cn parent 80 0 originserver no-query name=xlzx      <br />cache_peer english.nau.edu.cn parent 80 0 originserver no-query name=english </p>
<p>cache_peer_domain xlzx xlzx.nau.edu.cn      <br />cache_peer_domain english english.nau.edu.cn </p>
</p>
</blockquote>
<p>&#160;</p>
<p>http_port监听80端口，accel代表加速模式，vhost代表传递主机名，否则虚拟主机会失效。</p>
<p>解释一下这里的cache_peer含义：</p>
<ol>
<li>cache_peer，监听squid的80 </li>
<li>转向给english.nau.edu.cn的80originserver参数代表将squid本机“伪装”成原始的web服务器(causes this parent peer to be contacted as a origin server.)。但是抓包的时候没有发现区别... </li>
<li>no-query代表不向这台server发送ICP(Squid用于集群的一个协议)请求。单台主机没必要。 </li>
<li>另外cache_peer_domain没有的话，所有域名都会指向第一个主机，而不是根据主机头区分服务。 </li>
</ol>
<p>更多参数参照：http://www.squid-cache.org/Versions/v3/3.1/cfgman/cache_peer.html</p>
<p>这样才是完整的反向代理配置：服务器必须通过我的配置才能通过我的cache被加速。</p>
<p>启动Squid，可以通过/var/log/message或者tail -100 /usr/local/squid/var/logs/cache.log 看到日志。刚开始的时候好像好多日志文件没有建立。</p>
<p>注意日志，可以看到Squid从DNS解析到了域名</p>
<h3>常用命令</h3>
<blockquote><p>#/usr/local/squid/sbin/squid –k parse</p>
</blockquote>
<p>检测squid.conf是否正确。</p>
<blockquote><p># /usr/local/squid/sbin/squid</p>
</blockquote>
<p>启动Squid</p>
<blockquote><p># squid -k shutdown</p>
</blockquote>
<p>不用说了吧</p>
<blockquote><p># squid -k reconfigure</p>
</blockquote>
<p>这个有点类似于#clear bgp * soft in。哈。</p>
<p>&#160;</p>
<p>贴一下我的squid.conf的配置</p>
<blockquote><p>#Cache peer setting </p>
<p>cache_peer xlzx.nau.edu.cn parent 80 0 originserver no-query name=xlzx      <br />cache_peer english.nau.edu.cn parent 80 0 originserver no-query name=english </p>
<p>cache_peer_domain xlzx xlzx.nau.edu.cn      <br />cache_peer_domain english english.nau.edu.cn </p>
<p>#Main Configuration      </p>
<p>http_port 80 accel vhost </p>
<p>cache_mgr baalchina </p>
<p>cache_mem 96 MB      <br />cache_dir ufs /data/squidcache 100 16 256 </p>
<p>access_log /data/logs/squid/access.log squid      <br />cache_log /data/logs/squid/cache.log       <br />cache_store_log /data/logs/squid/store.log </p>
<p>visible_hostname cache.nau.edu.cn </p>
<p>pid_filename /usr/local/squid/var/squid.pid</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.baalchina.net/2009/08/squiid-reverse-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Squid反向代理的实现-DNS部分（Part 0，DNS Config）</title>
		<link>http://www.baalchina.net/2009/08/squid-dns/</link>
		<comments>http://www.baalchina.net/2009/08/squid-dns/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 07:58:00 +0000</pubDate>
		<dc:creator>baalchina</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://www.baalchina.net/2009/08/squid-dns/</guid>
		<description><![CDATA[由于我们采用了Bind的多View设置，加上Squid的设置，所以稍微有点复杂。
&#160;
针对www.nau.edu.cn，假设Cernet IP是1.1.1.1，ChinanetIP是1.1.1.2。
Squid的域名cache.nau.edu.cn，CernetIp是2.2.2.1,ChinanetIP是2.2.2.2
&#160;
对于DNS的chinanet部分，将www.nau.edu.cn解析到cache.nau.edu.cn的CNAME上
Cernet部分，同样解析到cache.nau.edu.cn的CNAME上。
&#160;
这时候我们遇到一个问题，就是用户访问www.nau.edu.cn，得到Ip地址2.2.2.1，然后找到了Squid，Squid去找www.nau.edu.cn，去解析DNS，发现IP是自己，这时候就会产生一个死循环了。
解决办法就是编辑squid的hosts文件：
vi /etc/hosts
加入如下：
www.nau.edu.cn 1.1.1.1
&#160;
让Squid认为www.nau.edu.cn的地址是1.1.1.1，而不是从dns去获取到自己的地址。
&#160;
有点乱，将就着看吧…
]]></description>
			<content:encoded><![CDATA[<p>由于我们采用了Bind的多View设置，加上Squid的设置，所以稍微有点复杂。</p>
<p>&#160;</p>
<p>针对<a href="http://www.nau.edu.cn">www.nau.edu.cn</a>，假设Cernet IP是1.1.1.1，ChinanetIP是1.1.1.2。</p>
<p>Squid的域名cache.nau.edu.cn，CernetIp是2.2.2.1,ChinanetIP是2.2.2.2</p>
<p>&#160;</p>
<p>对于DNS的chinanet部分，将<a href="http://www.nau.edu.cn">www.nau.edu.cn</a>解析到cache.nau.edu.cn的CNAME上</p>
<p>Cernet部分，同样解析到cache.nau.edu.cn的CNAME上。</p>
<p>&#160;</p>
<p>这时候我们遇到一个问题，就是用户访问<a href="http://www.nau.edu.cn">www.nau.edu.cn</a>，得到Ip地址2.2.2.1，然后找到了Squid，Squid去找<a href="http://www.nau.edu.cn">www.nau.edu.cn</a>，去解析DNS，发现IP是自己，这时候就会产生一个死循环了。</p>
<p>解决办法就是编辑squid的hosts文件：</p>
<p><strong>vi /etc/hosts</strong></p>
<p>加入如下：</p>
<p><a href="http://www.nau.edu.cn">www.nau.edu.cn</a> 1.1.1.1</p>
<p>&#160;</p>
<p>让Squid认为<a href="http://www.nau.edu.cn">www.nau.edu.cn</a>的地址是1.1.1.1，而不是从dns去获取到自己的地址。</p>
<p>&#160;</p>
<p>有点乱，将就着看吧…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.baalchina.net/2009/08/squid-dns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
