一、Squid安装
在下载squid-3.0.STABLE26
$ tar xzf squid-3.0.RELEASE26.tar.gz$ cd squid-3.0.RELEASE26$ ./configure --prefix=SquidDir --enable-async-io --enable-icmp --enable-delay-pools --enable-useragent-log --enable-htcp --enable-forw-via-db --enable-cache-digests$ make
make的过程中可能出现错误
g++: 警告: 开关‘-fhuge-objects’不再被支持ntlm/auth_ntlm.cc: 在成员函数‘virtual void AuthNTLMUserRequest::module_start(void (*)(void*, char*), void*)’中:ntlm/auth_ntlm.cc:478:18: 错误: variable ‘ntlm_user’ set but not used [-Werror=unused-but-set-variable]ntlm/auth_ntlm.cc: 在成员函数‘virtual void AuthNTLMUserRequest::authenticate(HttpRequest*, ConnStateData::Pointer, http_hdr_type)’中:ntlm/auth_ntlm.cc:596:18: 错误: variable ‘ntlm_user’ set but not used [-Werror=unused-but-set-variable]cc1plus: all warnings being treated as errorsmake[2]: *** [ntlm/auth_ntlm.o] 错误 1make[2]:正在离开目录 `/home/happy/download/squid-3.0.STABLE26/src/auth'
解决方法:
修改Makefile、src/Makefile、src/auth/Makefile这3处文件,将所有的“-Werror”的字段去掉。重新编译。
然后make install即可。
二、配置Squid
打开squid.conf并修改
#将默认http_port设置为要监听地址和端口号 http_port 3128 #添加访问控制 #Default: # http_access deny all # #Recommended minimum configuration: # # Only allow cachemgr access from localhost # 定义一个针对客户IP地址的ACL和访问规则,告诉squid允许来自这些地址的HTTP请求http_access allow all # 定义主机名,主机名通过在终端输入hostname可以获得。 # TAG: visible_hostname #Default: visible_hostname linux # 定义cache_dir # TAG: cache_dir #Default: cache_dir ufs /home/happy/software/squid/var/cache 100 16 256
将/dir/squid/sbin添加到~/.bashrc中。source重新加载。
输入
$ squid parse
检查squid.conf是否有误,如果配置正确,看不到输出。
三、测试squid
在测试之前,先初始化cache
$ squid -z
启动squid
$ squid -N -d1 //-N选项来保持squid在前台运行,-d1选项在标准错误里显示1级别的调试信息。2013/07/25 18:01:05| Squid is already running! Process ID 19963 //后台运行 $ squid //squid -s选项会让Squid将重要的状态和警告信息写到syslogd //关掉squid $ squid -k shutdown
四,设置透明代理 (如果不想设置,直接跳过即可)
因为PC中暂时只有一个网卡,故先通过一个网卡设置,同时使用一个内网地址暂时代替外网地址(此为192.168.191.20)。
4.1)单网卡设置多个IP
$ sudo vim /etc/network/interfaces
初始配置如下:
auto loiface lo inet loopbackauto eth0iface eth0 inet dhcp
修改为
auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.191.20netmask 255.255.255.0gateway 192.168.191.1auto eth0:0iface eth0:0 inet staticaddress 192.168.191.21netmask 255.255.255.0gateway 192.168.191.1
重启服务:
$ sudo /etc/init.d/networking restart$ ifconfigeth0 Link encap:以太网 硬件地址 00:21:9b:25:b4:f5 inet 地址:192.168.191.20 广播:192.168.191.255 掩码:255.255.255.0 inet6 地址: fe80::221:9bff:fe25:b4f5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 接收数据包:107194 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:80550 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:1000 接收字节:81986996 (81.9 MB) 发送字节:10655753 (10.6 MB) 中断:42 基本地址:0xe000 eth0:0 Link encap:以太网 硬件地址 00:21:9b:25:b4:f5 inet 地址:192.168.191.21 广播:192.168.191.255 掩码:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1 中断:42 基本地址:0xe000 lo Link encap:本地环回 inet 地址:127.0.0.1 掩码:255.0.0.0 inet6 地址: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 跃点数:1 接收数据包:77 错误:0 丢弃:0 过载:0 帧数:0 发送数据包:77 错误:0 丢弃:0 过载:0 载波:0 碰撞:0 发送队列长度:0 接收字节:5880 (5.8 KB) 发送字节:5880 (5.8 KB)
4.2) 设置iptable
写一个脚本iptables.sh,开机后启动该脚本。
$ vim iptables.sh
在iptables.sh中写入如下内容:
#! /bin/bash # 开启filter表的INPPUT链、FORWARD链及OUTPUT链iptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPT # 允许转发echo "1" > /proc/sys/net/ipv4/ip_forward iptables -A PREROUTING -p udp --dport 53 -j ACCEPT # 允许内网计算机与外部 DNS 服务器的转发iptables -A FORWARD -p udp --dport 53 -j ACCEPTiptables -A FORWARD -p tcp --dport 53 -j ACCEPT # NAT端口映射 iptables -t nat -A PREROUTING -s 192.168.191.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128iptables -t nat -A POSTROUTING -s 192.168.191.0/24 -o eth0 -j MASQUERADEiptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
添加可执行权限:
$ chmod o+x iptables.sh