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

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服务器版

Squidsquid Version 2.6.STABLE18

iptablesIptablesv1.3.8

内网网卡:eth0192.168.33.1/24

外网网卡:eth1 192.168.51.50/24


(一)安装SquidIptablesSquid版本2.62.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

#参数transparentsquid2.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 #设置squidproxy用户身份运行,这点涉及系统安全,具体参见“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#禁止IP192.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





当然,iptablesSquid的功能还不只以上所述,关于其他方面的配置,还请关注网上的相关文章,我也将陆续整理一些自己使用中的经验笔记与大家分享,也欢迎大家批评指教,指出我文章中的缺点与不足,呵呵。

(五)缓存管理

对于一些涉及密码或者安全传输的网页内容,则不应当予以缓存,因此还须添加以下内容。

#禁止缓存某些内容
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——介质管理




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值