squid透明代理的安装和实现推荐

squid透明代理的安装和实现

环境描述:centos 5.4 双网卡,内网地址:192.168.1.1 公网静态地址 a.b.c.d ,squid版本:squid-3.0.STABLE25

(1)执行如下命令,并将其加入/etc/rc.d/rc.local/bin/echo 1024 40000 /proc/sys/net/ipv4/ip_local_port_range/bin/echo 1 /proc/sys/net/ipv4/ip_forward (2)使用如下命令安装相关软件包。当然可以用rpm -qa|grep 软件包名称 进行查看是否安装了下面的软件yum -y install imake autoconf automake(3)安装squid 3.0cd /backtar -zxvf squid-3.0.STABLE25.tar.gzcd squid-3.0.STABLE25./configure –prefix=/usr/local/squid –enable-dlmalloc –enable-removal-policies=heap,lru –enable-default-err-language=Simplify_Chinese –enable-cpu-profiling –enable-storeio=ufs,aufs,null –enable-snmp –enable-stacktrace –disable-ident-lookups –with-large-files –enable-linux-netfilter –enable-linux-tproxy –disable-epoll –with-pthreads –enable-delay-pools –enable-icmp –enable-htcp –enable-forw-via-db –enable-cache-digests –disable-optimizations –disable-select –enable-auth-basic –disable-wccp –with-filedescriptors=65536 –enable-arp-acl –enable-icap-client

说明:–enable-linux-tproxy 和–enable-linux-netfilter是实现透明代理的关键

在此执行过程中如果出现如下错误: checking if TPROXY header files are installed… no WARNING: Cannot find TPROXY headers, you need to install the tproxy package from: – lynx http://www.balabit.com/downloads/tproxy/ Searching in the above url I can’t find the headers (my kernel is compiled with tproxy suport already).这是缺少一个头文件,名字叫做ip_tproxy.h 我这里提供了这个头文件。将其复制到这个目录: /usr/include/linux/netfilter_ipv4/(51cto不允许传这种.h的文件 我将扩展名更改为.txt 下载下来记得将下载下来的文件名字更改为ip_tproxy.h再复制到指定目录)如果configure出错,我经常是删除解压缩的文件,重新解压缩配置rm -rf squid-3.0.STABLE25tar -zxvf squid-3.0.STABLE25.tar.gzcd squid-3.0.STABLE25./configure –prefix=/usr/local/squid –enable-dlmalloc –enable-removal-policies=heap,lru –enable-default-err-language=Simplify_Chinese –enable-cpu-profiling –enable-storeio=ufs,aufs,null –enable-snmp –enable-stacktrace –disable-ident-lookups –with-large-files –enable-linux-netfilter –enable-linux-tproxy –disable-epoll –with-pthreads –enable-delay-pools –enable-icmp –enable-htcp –enable-forw-via-db –enable-cache-digests –disable-optimizations –disable-select –enable-auth-basic –disable-wccp –with-filedescriptors=65536 –enable-arp-acl –enable-icap-clientmake make install(4)修改/usr/local/squid/etc/squid.conf ,内容如下http_port 192.168.1.1:3128 transparent dns_nameservers 8.8.8.8 211.99.25.1visible_hostname 192.168.1.1cache_dir ufs /var/spool/squid 8000 16 256cache_mem 400 MBacl lanclient src 192.168.1.0/24 a.b.c.d/32 http_access allow lanclientcache_mgr 706501330@qq.comredirect_children 30fqdncache_size 1024cache_swap_low 90cache_swap_high 95maximum_object_size 20 MBminimum_object_size 0 MBmaximum_object_size_in_memory 5 MBaccess_log /usr/local/squid/var/logs/access.logcache_log /usr/local/squid/var/logs/cache.logcache_store_log /usr/local/squid/var/logs/store.logipcache_size 1024ipcache_low 90dns_testnames serveripcache_high 95cache_effective_user squidcache_effective_group squid

说明:1.transparent 是透明代理的意思 squid默认端口号为3128 2.此线路为电信线路 如果是网通线路 建议将dns_nameserver 更改如下,或者填写自己本地运营商的dns地址 dns_nameservers 8.8.8.8 202.106.0.20 3.当squid 遇到问题联系的管理员邮箱:cache_mgr 706501330@qq.com 更改为自己的邮箱 4.将上文中的a.b.c.d换成自己公司的公网静态ip5.dns_testnames server将server换成linux主机名(5)使用如下命令创建squid需要的用户和组useradd squid -s /sbin/nologin(6) 建立squid日志文件及修改相关权限及所有者touch /usr/local/squid/var/logs/cache.logchmod 755 /usr/local/squid/var/logs/cache.logtouch /usr/local/squid/var/logs/access.logchmod 755 /usr/local/squid/var/logs/access.log touch /usr/local/squid/var/logs/store.logchmod 755 /usr/local/squid/var/logs/store.logchown -R squid:squid /usr/local/squid/varmkdir /var/spool/squidchown squid:squid /var/spool/squid(7)使用如下命令初始化squid缓存目录/usr/local/squid/sbin/squid -z 建立时会出现下面的文字[root@localhost etc]# /usr/local/squid/sbin/squid -z2011/03/29 07:41:54| Creating Swap Directories2011/03/29 07:41:54| /var/spool/squid exists2011/03/29 07:41:54| Making directories in /var/spool/squid/002011/03/29 07:41:54| Making directories in /var/spool/squid/012011/03/29 07:41:54| Making directories in /var/spool/squid/022011/03/29 07:41:54| Making directories in /var/spool/squid/032011/03/29 07:41:55| Making directories in /var/spool/squid/042011/03/29 07:41:55| Making directories in /var/spool/squid/052011/03/29 07:41:55| Making directories in /var/spool/squid/062011/03/29 07:41:55| Making directories in /var/spool/squid/072011/03/29 07:41:55| Making directories in /var/spool/squid/082011/03/29 07:41:55| Making directories in /var/spool/squid/092011/03/29 07:41:55| Making directories in /var/spool/squid/0A2011/03/29 07:41:55| Making directories in /var/spool/squid/0B2011/03/29 07:41:55| Making directories in /var/spool/squid/0C2011/03/29 07:41:55| Making directories in /var/spool/squid/0D2011/03/29 07:41:55| Making directories in /var/spool/squid/0E2011/03/29 07:41:55| Making directories in /var/spool/squid/0F

(8)执行如下命令启动squid,并将squid添加到开机自启动/usr/local/squid/sbin/squid -secho /usr/local/squid/sbin/squid -s /etc/rc.d/rc.local要停止squid用 /usr/local/squid/sbin/squid -k shutdown(9)查看squid状态lsof -i:3128COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEsquid 24855 squid 14u IPv4 323951 TCP localhost:squid (LISTEN)##################################################################################执行了上面的操作只是实现了squid代理功能 ,客户端需要配置代理服务器地址和端口号##################################################################################(10)使用iptables 做nat,并将所有的80请求重定向到本机的3128 以实现透明代理。 vi /data/myscripts/squid.firewall脚本如下

#!/bin/bashecho 1 /proc/sys/net/ipv4/ip_forwardecho starting iptables rules /sbin/iptables -t filter -F/sbin/iptables -t filter -Z/sbin/iptables -t filter -X/sbin/iptables -t nat -F/sbin/iptables -t nat -Z/sbin/iptables -t nat -X/sbin/modprobe ip_tables/sbin/modprobe iptable_nat/sbin/modprobe iptable_filter/sbin/modprobe ip_nat_ftp/sbin/modprobe ip_conntrack/sbin/modprobe ip_conntrack_ftp/sbin/iptables -t filter -P INPUT ACCEPT/sbin/iptables -t filter -P OUTPUT ACCEPT/sbin/iptables -t filter -P FORWARD ACCEPT/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT –to-source a.b.c.d/sbin/iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp –dport 80 -j REDIRECT –to-ports 3128

执行脚本并将其加入到开机自启动,注意将脚本中的a.b.c.d换成自己公司的公网静态ipsh /data/myscripts/squid.firewallecho /data/myscripts/squid.firewall /etc/rc.d/rc.local#######################################################################################至此squid+iptables已经实现了透明代理#######################################################################################(11)测试

客户机将网关指向192.168.1.1 填写上dns,测试能否上网。ssh登陆到192.168.1.1

tail -f /usr/local/squid/var/logs/access.log看日志是否有记录测试机的上网记录 如果有就搭建成功了,恭喜!

附上常用调试方法以及遇到的问题1、在开启squid之前,你应该验证其配置文件是否正确。运行如下命令即可:

# /usr/local/squid/sbin/squid -k parse

2011/05/18 11:22:12| Processing Configuration File: /usr/local/squid/etc/squid.conf (depth 0)2011/05/18 11:22:12| Starting Authentication on port 192.168.1.2:143482011/05/18 11:22:12| Disabling Authentication on port 192.168.1.2:14348 (interception enabled)没有提示错误,代表配置正确

2、重配置运行中的squid进程

在你了解了更多关于squid的知识后,你会发现对squid.conf文件做了许多改动。为了让新设置生效,你可以关闭和重启squid,或者在squid运行时,重配置它。

重配置运行中的squid最好的方法是使用squid -k reconfigure命令:

# /usr/local/squid/sbin/squid -k reconfigure

3、上线的squid有同事访问无法访问wenku.baidu.com 经测试显示该页无法显示。解决办法 更改了dns dns_nameservers 8.8.8.8 211.99.25.1

附件:http://down.51cto.com/data/2358419

勇敢的冷静的理智的去接受失败,有时不但是必要的,而且是很有必要的。

squid透明代理的安装和实现推荐

相关文章:

你感兴趣的文章:

标签云: