如何重建Squid 2.6 Debian软件包,支持X-Forwarded-Header
版本1.0
作者:Falko Timme
本文介绍如何重建用于Debian Etch的Squid 2.6软件包,并支持X-Forwarded-For
标题 - 该功能在默认的Debian Etch Squid软件包中未启用。 如果您使用Squid作为网站的反向代理,并在Squid前使用负载平衡器(如HAProxy ),则此功能非常有用 - 它允许我们跟踪客户端的原始IP地址而不是负载均衡器的IP地址(其中Squid显示为客户端)。
从Squid文档:
在到达我们之前,请求可能会通过几个其他代理的链接。 X-Forwarded-For标头将包含链中IP地址的逗号分隔列表,最右边的地址是最新的。 如果请求从此配置项允许的源发送到我们,那么我们将参考X-Forwarded-For标头来查看该主机从哪里接收请求。 如果X-Forwarded-For头包含多个地址,并且如果acl_uses_indirect_client处于打开状态,那么我们会继续追踪,直到达到我们不允许遵循X-Forwarded-For标头的地址,或者直到我们到达第一个地址在列表中。 (如果acl_uses_indirect_client关闭,则不可能通过多个级别的X-Forwarded-For地址进行回溯。)
此过程的最终结果是一个IP地址,我们将其称为间接客户端地址。 根据acl_uses_indirect_client,delay_pool_uses_indirect_client和log_uses_indirect_client选项,该地址可被视为访问控制,延迟池和日志记录的客户端地址。
如果启用该功能,则可以在squid.conf中使用以下配置选项:
- follow_x_forwarded_for
- acl_uses_indirect_client
- delay_pool_uses_indirect_client
- log_uses_indirect_client
我不会保证这将为您工作!
重建Squid
首先我们安装一些编译器和开发工具:
apt-get install devscripts build-essential fakeroot
接下来我们安装Squid源码包
cd /usr/src
apt-get source squid
...和构建新的Squid包的依赖关系:
apt-get build-dep squid
然后我们去到squid目录中的debian
目录...
cd squid-2.6.5/debian
...并打开规则
文件:
vi rules
在那里你应该找到一个开始如下的部分
# Configure the package.
config.status:
$(opt_ac_cv_func_setresuid) \
./configure \
...其次是Squid配置选项。 将-enable-follow-x-forwarding-for-line
添加到配置选项,以便该部分如下所示:
[...] # Configure the package. config.status: $(opt_ac_cv_func_setresuid) \ ./configure \ --prefix=/usr \ --exec_prefix=/usr \ --bindir=/usr/sbin --sbindir=/usr/sbin \ --libexecdir=/usr/lib/squid \ --sysconfdir=$(sysconfdir) \ --localstatedir=/var/spool/squid \ --datadir=/usr/share/squid \ $(with_pthreads) \ $(with_netfilter) \ $(with_arp_acl) \ $(with_epoll) \ --enable-removal-policies=lru,heap \ --enable-snmp \ --enable-delay-pools \ --enable-htcp \ --enable-cache-digests \ --enable-underscores \ --enable-referer-log \ --enable-useragent-log \ --enable-auth="basic,digest,ntlm" \ --enable-carp \ --enable-follow-x-forwarded-for \ --with-large-files \ $(DEB_HOST_ARCH_CPU)-debian-$(DEB_HOST_ARCH_OS) [...] |
接下来上一个目录...
cd ..
...并开始建设过程:
./configure
debuild -us -uc -b
之后,转到/ usr / src
目录...
cd /usr/src
...运行
ls -l
你应该找到新的Squid .deb
包:
server1:/usr/src# ls -l
total 3332
drwxr-xr-x 15 root root 4096 2008-11-26 01:14 squid-2.6.5
-rw-r--r-- 1 root src 273063 2008-11-26 00:41 squid_2.6.5-6etch4.diff.gz
-rw-r--r-- 1 root src 432 2008-11-26 00:41 squid_2.6.5-6etch4.dsc
-rw-r--r-- 1 root src 143884 2008-11-26 01:14 squid_2.6.5-6etch4_i386.build
-rw-r--r-- 1 root src 1135 2008-11-26 01:14 squid_2.6.5-6etch4_i386.changes
-rw-r--r-- 1 root src 655604 2008-11-26 01:14 squid_2.6.5-6etch4_i386.deb
-rw-r--r-- 1 root src 1636886 2006-11-06 12:32 squid_2.6.5.orig.tar.gz
-rw-r--r-- 1 root src 117120 2008-11-26 01:14 squid-cgi_2.6.5-6etch4_i386.deb
-rw-r--r-- 1 root src 86132 2008-11-26 01:14 squidclient_2.6.5-6etch4_i386.deb
-rw-r--r-- 1 root src 442218 2008-11-26 01:14 squid-common_2.6.5-6etch4_all.deb
server1:/usr/src#
选择Squid
和Squid常见的
包,并安装如下:
dpkg -i squid_2.6.5-6etch4_i386.deb squid-common_2.6.5-6etch4_all.deb
就是这样 - 现在Squid支持X-Forwarded-For
头。
链接
- Squid: http : //www.squid-cache.org/
- Debian: http : //www.debian.org/