您的位置:首页 > 运维架构 > 反向代理

linux下代理服务器配置 用squid+iptables实现透明代理

2008-10-11 14:49 931 查看
linux下代理服务器配置
squid+iptables实现透明代理
转载请注明 原文:http://blog.csdn.net/xl_xunzhao/archive/2008/10/11/3057212.aspx

xunzhao的博客已搬家至:http://xunzhaoxz.itpub.net

关键字:linux服务器配置 代理服务器 透明代理 共享上网iptables
Squid NAT
系统环境:
操作系统:UbuntuLTS 8.04服务器版
Squid:squid Version 2.6.STABLE18
iptables:Iptablesv1.3.8
内网网卡:eth0192.168.33.1/24
外网网卡:eth1 192.168.51.50/24

(一)安装SquidIptables,Squid版本2.6与2.5存在不少区别,所以二者在配置上有所差异,尤其在透明代理上的配置上。关于两个软件的下载和安装方法,网上已经有许多文章了,请根据自己的发行版本搜索查看,本文主要写如何配置以实现透明代理。
Squid下载地址:http://www.squid-cache.org
(二)配置iptables,实现NAT,关于iptables作为防火墙使用的安全配置,不是本文的重点。
#首先加载模块
modprobeip_tables
modprobeip_nat_ftp
modprobeip_nat_irc
modprobe-ip_conntrack
modprobe-ip_conntrack_ftp
modprobe-ip_conntrack_irc
#清空旧有配置
/sbin/iptables-F
/sbin/iptables-X
/sbin/iptables-Z
/sbin/iptables-F -t nat
/sbin/iptables-X -t nat
/sbin/iptables-Z -t nat
#设置默认策略
/sbin/iptables-P INPUT ACCEPT
/sbin/iptables-P OUTPUT ACCEPT
/sbin/iptables-P FORWARD ACCETP
echo"1" > /proc/sys/net/ipv4/ip_forward#启用iptbles的数据转发功能,重点步骤一!!
echo"1" > /proc/sys/net/ipv4/tcp_syncookies#安全措施,防syn攻击

iptables-t nat -A POSTROUTING -s 192.168.33.0/24 -o eth1 -j SNAT --to192.168.51.50#实现SNAT,即源地址转换(也称为IP隐藏)执行了这句以后,内网用户无需设置代理,只要把网关指向192.168.33.1就可以上网了,不过此时Squid还没有起作用,33.1只起到网关的作用。重点步骤二

也可使用下面命令实现上述功能,特别当主机采用ADSL等动态ip时,
iptables-t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables-t nat -A PREROUTING -s 192.168.33.0/24 -p tcp --dport 80 -jREDIRECT --to-ports 3128#端口重定向,实现透明代理的重点步骤一,有了这一步,客户端就不必设置代理了,服务器根据用户请求目标端口为80,则自动重定向到3128,交由squid处理,由此实现了http代理;同理,根据Squid的协议支持情况,也可设置ftp代理等。

(三)配置Squid
一些基本的配置这里就不再赘述了,几个关键点讲下。
http_port3128 transparent #配置Squid的监听端口,默认为3128,
#参数transparent是squid2.6版本与先前旧版本一个比较重要的区别,是实现透明代理的重点步骤二,没有该参数则无法实现透明代理,将出现以下错误
ERROR The requested URL could not be retrieved
截图如下



cache_dirufs /var/spool/squid 100 16 256 #设置缓存大小,一级目录、二级目录数量
cache_swap_low90
cache_swap_high95
access_log/var/log/squid/access.log #记录访问日志
cache_log/var/log/squid/cache.log#记录缓存日志
cache_store_log/var/log/squid/store.log
client_netmask255.255.255.255

cache_mgr abcdefg@gmail.com#设置管理员邮箱
cache_effective_userproxy #设置squid以proxy用户身份运行,这点涉及系统安全,具体参见“chroot技术或jail监禁、jail监牢”
cache_effective_groupproxy#功能同上
visible_hostnamesquid_ubuntuXZ #设置主机名
coredump_dir/var/spool/squid

aclbadurl1 dstdomain -i .qq.com
aclbadclient src 192.168.33.20
aclour_networks src 192.168.33.0/24#定义内网ip范围

http_accessdeny badclient #拒绝某些用户上网
http_accessdeny badurl1 #禁止用户访问某些网站

http_accessallow our_networks#允许内网用户使用
http_accessdeny all#拒绝所有未定义动作

(四)其他功能扩展配置

iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j DNAT--to-destination 192.168.51.55:80#端口重定向
iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT--to-destination 192.168.51.55:3389#端口重定向
iptables-t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 53 -j DNAT--to-destination 202.101.107.85:53#端口重定向,本句起到智能DNS的作用
iptables-t filter -A INPUT -i eth1 -p icmp -j DROP#禁用icmp
iptables-t filter -A FORWARD -i eth0 -d 192.168.33.20/31 -j DROP#禁止IP为192.168.33.20的客户端上网
iptables-t filter -A FORWARD -d 58.60.9.246 -j DROP#禁止所有用户访问某IP
注意:iptables的配置会在每次系统重启后被还原,因此需要设定自动导入配置文件,在/etc/rc.local中添加相应命令即可,用户可以先用iptables-save导出当前配置,然后用文本编辑器配置好后,再用iptables-restore导入配置即可,如我设定的开机自动导入配置文件为iptables-restore<
/var/lib/iptables/saved.cfg 。



当然,iptables和Squid的功能还不只以上所述,关于其他方面的配置,还请关注网上的相关文章,我也将陆续整理一些自己使用中的经验笔记与大家分享,也欢迎大家批评指教,指出我文章中的缺点与不足,呵呵。
(五)缓存管理
对于一些涉及密码或者安全传输的网页内容,则不应当予以缓存,因此还须添加以下内容。

#禁止缓存某些内容

hierarchy_stoplist cgi-bin ?

hierarchy_stoplist -i ^https:// ?

acl QUERY urlpath_regex -i cgi-bin /? /.asp /.php /.jsp /.cgi

acl denyssl urlpath_regex -i ^https://

no_cache deny QUERY

no_cache deny denyssl

#上面几个就是说遇到URL中有包含cgi-bin和以https://开头的都不要缓存,

#还有asp、cgi、php等动态脚本也不要缓存,

#因为这些脚本通常都是动态更新的,这样数据不同步。

参考:
http://blog.54master.com/html/24/t-264324.html
感谢zhangxiuyun,在他的文章(http://www.squid-cache.org/Versions/v2/2.6/cfgman/http_port.html)中写到
http_port3128transparent#红色部分是支持透明代理,这是squid新版本的改进。

-------------------------------------------------------------------------------------------------------------------------

延伸阅读:

xunzhao的博客已搬家至:
http://xunzhaoxz.itpub.net

主机AIX:

【信息采集】IBM AIX系统硬件配置信息采集完整shell脚本V2.1(附脚本下载)
(LU论坛精华帖)

【信息采集】IBM AIX系统硬件信息查看命令(shell脚本)(附截图PDF完整版下载)

操作规范(一)—— AIX rootvg mirror(附PDF下载)

AIX系统安全加固(一)限制密码重试次数,超过限制次数后锁定用户(附截图PDF完整版下载)

AIX读书笔记——Paging Space换页空间

AIX平台下创建文件系统需要注意的问题

IBM服务器虚拟化PowerVM——也谈“云计算”

数据库Oracle:

新装Oracle11gR2 11.2.0.2重要说明——Patchsetp10098816(附补丁下载地址)

Attention:new installation of Oracle 11.2.0.2

AIX 5.3/6.1环境下安装Oracle10gR2 RAC常见报错(注意事项)

【数据迁移】Oracle10gR2 rman异机恢复实验(FS->RAW)(附截图PDF完整版下载)

【数据迁移】Oracle10gR2 rman异机恢复实验(FS-FS)(附截图PDF完整版下载)

操作规范(二)——RHEL5.4安装Oracle 10.2.0.4(附截图PDF完整版下载)

操作规范(三)——Linux5.4安装Oracle 11gR1(附截图PDF完整版下载)

操作规范(四)——Linux5.4安装Oracle 11gR2(附截图PDF完整版下载)

操作规范(五)——Linux5.4平台下Oracle 11.2.0.2安装指南(附截图PDF完整版下载)
Oracle RAC环境下重建ASM磁盘组(Re-create ASM diskgroup)(附截图PDF完整版下载)

Oracle RAC srv服务“首选”与“可用”状态的调整——srvctl modify service 的使用(附截图PDF完整版下载)

Linux+ASM+OCFS环境下增加ORACLE RAC联机重做日志文件(附截图PDF完整版下载)

备份还原Symantec Netbackup:

搭建NBU实验环境——解决虚拟带库vistor License过期问题(附截图PDF完整版下载)

NBU常用命令1——介质管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: