控件開發基礎

博客园 首页 新随笔 联系 订阅 管理
本实验操作系统选用 CentOS release 5.6 (Final)

实验目的实现 Squid 代理服务器 编译源码 伪造HTTP_X_FORWARDED_FOR  请求头 .使其显示任意IP 

过程如下: 

1.下载对应系统的squid源码版本

Squid源码连接:http://www.squid-cache.org/Versions/

 本次实验下载:http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE21.tar.gz

命令: wget  http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE21.tar.gz

2.解压修改编译源码 一次执行如下命令

 yum -y install gcc perl make

tar xzf squid-2.6.STABLE21.tar.gz

cd squid-2.6.STABLE21

         修改代码文件 http.c  

  /* append X-Forwarded-For */

    if (opt_forwarded_for) {
    strFwd = httpHeaderGetList(hdr_in, HDR_X_FORWARDED_FOR);
    strListAdd(&strFwd,"112.121.182.45"',');
    httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strBuf(strFwd));
    stringClean(&strFwd);
    }
 
cd squid-2.6.STABLE21
./configure --prefix=/usr/local/squid --disable-internal-dns
make
make install

3.设置配置文件  

 /usr/local/squid/etc/squid.conf 如下配置

visible_hostname nginxs.com
http_port 3128
icp_port 3130
cache_log /dev/null
cache_store_log none
pid_filename /var/run/squid.pid
maximum_object_size 32768 KB
acl all src 0.0.0.0/0.0.0.0
http_access allow all
icp_access allow all
dns_nameservers 8.8.8.8
header_access Via deny all

 

chmod -R 777 /usr/local/squid/var

 /usr/local/squid/sbin/squid -z

/usr/local/squid/sbin/squid start

echo "/usr/local/squid/sbin/squid start" >> /etc/rc.local

vi /etc/rc.local

不出意外 现在可以打开IE 挂上代理IP测试了
 
对于修改之后重新编译
make   uninstall
make   clean
 
对于启动出现错误 squid: Cannot open HTTP Port
原来是Selinux防火墙阻止了,把SELinux关闭掉之后,便可以正常启动squid服务了!

vi /etc/selinux/config
改成SELINUX=disabled

 

header_access Via deny all
header_access X-Forwarded-For deny all
header_access Server deny all
header_access X-Cache deny all
header_access X-Cache-Lookup deny all

CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录。
shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/nginx,提示多了这句/bin/bash^M: bad interpreter。
网上找了资料才知道
如果这个脚本在Windows下编辑过,就有可能被转换成Windows下的dos文本格式了,这样的格式每一行的末尾都是以\r\n来标识,它的ASCII码分别是0x0D,0x0A。如果你将这个脚本文件直接放到Linux上执行就会报/bin/bash^M: bad interpreter错误提示。
解决方法很简单,首先你先要检查一下看看你的脚本文件是不是这个问题导致的,用vi命令打开要检查的脚本文件,然后用
:set ff?
命令检查一下,看看是不是dos字样,如果是dos格式的,继续执行
:set ff=unix
然后执行
:qw
保存退出即可。

 

 方法2:修改squid,confi 中visible_hostname 8.8.8.8 这样不用每次编译

/* append X-Forwarded-For */
if (opt_forwarded_for) {
strFwd = httpHeaderGetList(hdr_in, HDR_X_FORWARDED_FOR);
strListAdd(&strFwd,Config.visibleHostname, ',');
httpHeaderPutStr(hdr_out, HDR_X_FORWARDED_FOR, strBuf(strFwd));
stringClean(&strFwd);
}

 

 

posted on 2012-04-10 00:00  ada  阅读(2681)  评论(0编辑  收藏  举报