如何重建Squid 2.6 Debian软件包,支持X-Forwarded-For标题

如何重建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#

选择SquidSquid常见的包,并安装如下:

dpkg -i squid_2.6.5-6etch4_i386.deb squid-common_2.6.5-6etch4_all.deb

就是这样 - 现在Squid支持X-Forwarded-For头。

链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏