分页: 1 / 1

ubuntu11.04实战squid透明代理配置

发表于 : 2011-05-11 16:58
zhongjia
前几天由于工作需要,需要配置一台透明代理,以前在windows2003上配置过,最近玩ubuntu,改在ubuntu上实现了一下,把实现过程记录一下,方便初学者:
服务器一定要两块网卡,eth0连接外网,ip10.0.2.15,eth1连接内网,ip192.168.0.254
1、安装ubuntu11.04 server版,下载相应的iso文件,刻盘安装即可,不多言,最好单独分配一个分区,80G左右吧,用作squid cache文件存放;
2、安装squid,命令: sudo apt-get install squid,默认安装的是2.7版本;
3、配置squid参数,sudo vi /etc/squid/squid.conf,内容如下:

代码: 全选

http_port 192.168.0.254:3128 transparent
visible_hostname UProxySvr

cache_mgr 网管email地址

cache_mem 128 MB
cache_swap_low 90
cache_swap_high 95

maximum_object_size 4096 KB
maximum_object_size_in_memory 128 KB
cache_dir ufs /squid/cache 70000 12 256
cache_access_log none
cache_log none
cache_store_log none

dns_nameservers 192.168.0.254

hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern (Release|Packages(.gz)*)$	0	20%	2880
refresh_pattern .		0	20%	4320

coredump_dir /var/spool/squid

acl all src 0.0.0.0/0
acl localnet src 192.168.0.0/24
http_access allow localnet
http_access deny all
4、安装dns服务,sudo apt-get install dnsmasq
5、安装squidclient,sudo apt-get install squidclient
6、创建squid启动脚本文件squidstart.sh,内容如下:其中10.0.2.15是服务器的外网连接ip地址

代码: 全选

/usr/sbin/squid -s
/sbin/iptables -t nat -A PREROUTING -s 192.168.0.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 10.0.2.15
7、赋予脚本执行权限,chmod 777 squicstart.sh
8、squid初始化,/usr/sbin/squid -z
9、把启动脚本加入rc.local,开机自动执行
sudo vi /etc/rc.local
在exit0之前加入一行:/home/username/squidstart.sh
10、优化服务器:
sudo vi /etc/sysctl.conf
在最后添加:

代码: 全选

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established =900
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.tcp_synack_retries = 3
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
使设置生效:sudo /sbin/sysctl -p

透明代理安装完毕。

客户端网络配置,可配置在DHCP服务器里面:
网关:192.168.0.254
DNS:192.168.0.254

实现效果:浏览器80端口走squid透明代理服务器,其他端口直通,非常便捷,可大大加快网络的访问速度。
查看squid代理运行状态命令:

代码: 全选

/usr/bin/squidclient -h 192.168.0.254 -p 3128 mgr:info

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2011-05-11 17:03
zhongjia
怎么让squidstart.sh脚本在服务器启动的时候自动执行,我还搞不定,希望高手指点一二,谢谢。

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2011-05-11 20:24
zhongjia
附加配合使用的dhcp服务器配置:
1、安装dhcp服务,sudo apt-get install dhcp3-server
2、编辑:sudo vi /etc/default/isc-dhcp-server

代码: 全选

INTERFACES="eth1"
3、编辑:sudo vi /etc/dhcp/dhcpd.conf

代码: 全选

ddns-update-style none;

option domain-name "example.org";
option domain-name-servers 192.168.0.254,8.8.8.8;

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range dynamic-bootp 192.168.0.2 192.168.0.100;
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.254;
}
安装完毕,reboot一下即可。

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2011-05-11 21:35
zhongjia
zhongjia 写了:怎么让squidstart.sh脚本在服务器启动的时候自动执行,我还搞不定,希望高手指点一二,谢谢。
看来论坛上关心服务器配置的人很少,没人解答,只好自己搞定了。

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2011-06-17 17:03
晓晓风的故事
为什么不是用最新的squid3呢,还有就是,你直接使用透明代理,你的主要作用是什么,这点我不太明白的,可以说一下吗,就是squid和apache的80端口么?还是,这个我不太明白。
还有我想问下的是那个自启动的shell脚本,squid在安装的时候不是已经自启动了么?

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2011-06-17 17:12
zhongjia
晓晓风的故事 写了:为什么不是用最新的squid3呢,还有就是,你直接使用透明代理,你的主要作用是什么,这点我不太明白的,可以说一下吗,就是squid和apache的80端口么?还是,这个我不太明白。
还有我想问下的是那个自启动的shell脚本,squid在安装的时候不是已经自启动了么?
设置透明代理主要的作用在于提高网络访问速度,在总带宽不足的情况下非常管用,打开网页的速度体验提高很多。squid3的稳定性不如2.7,服务器讲究的就是稳定。

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2012-02-21 15:58
erol
7、赋予脚本执行权限,chmod 777 squicstart.sh 这行的squicstart.sh应该改成squidstart.sh

另外希望LZ把配置语句 分组说明一下

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2012-02-25 14:51
syjml
我在ubuntu server10.04上按照楼主的介绍配置,依旧需要在浏览器里设置代理,而且速度也不是很快。求助

Re: ubuntu11.04实战squid透明代理配置

发表于 : 2012-02-25 21:11
晓晓风的故事
syjml 写了:我在ubuntu server10.04上按照楼主的介绍配置,依旧需要在浏览器里设置代理,而且速度也不是很快。求助
这些很简单的慢慢来,看英文文档