找回密码
 注册
搜索
热搜: 回贴
微赢网络技术论坛 门户 服务器 Linux/BSD 查看内容

SQUID 重定向器应用实例

2009-12-20 13:07| 发布者: admin| 查看: 184| 评论: 0|原作者: 柳梦璃

本文原于在cu 论坛上的求助,最后自己解决了问题,贴子没有人关注,一直沉到海底,今找从cu 找回,以助有需要之士参考。
----
缘由:BOSS 向我提出了一个奇怪的问题,能否让客户在使用公司网络时,第一次打开ie 或其它浏览器都显示公司的主页。在学习了squid 发现squid 可以实现该功能。
1、首先需要在iptable/ipfw/pf 等防火墙上,将所有对外80 的请求重定向到squid。
2、在squid 启用重定向器

redirect_program /etc/pftable/red.pl
redirect_children 10
redirector_bypass on
3、red.pl 内容为:

# cat /etc/pftable/red.pl
#!/usr/bin/perl -w
# author fengyong 2008-01-22
use strict;
use DB_File;
use vars qw (%cache $uri $cachetime);
$|=1;
my $timeout=3600;#缓存超时时间

while (<>){
my ($client,$ident,$method)=();
($uri,$client,$ident,$method)=split;
if (check($client)){
next;
}else{
save($client);
$uri="301:[url]http://www.xxxx.cn";
}
}continue{
print $uri;
}
sub check {
my $client=shift;
# init cache time
my $time=time();
if (!$cachetime){
$cachetime=$time+$timeout;
}
if ($time > $cachetime){
%cache=();
$cachetime=();
}
return 1 if $cache{$client};

# reopen db
my %ip=();
tie %ip,"DB_File","/tmp/ip.db",O_CREAT|O_RDWR,0666;
%cache=%ip; #hard copy?
untie %ip;
$cache{$client} ? 1:0;
}
sub save {
my $client=shift;

my %ip=();
tie %ip,"DB_File","/tmp/ip.db",O_CREAT|O_RDWR,0666;
$ip{$client}=1;
untie %ip;
}

4、问题
程序虽然有缓存功能,但在客户端比较多时,不建议使用,因为会影响性能。



最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:25 , Processed in 0.222917 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部