CentOS系统中squid透明代理+iptables防火墙详细配置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CentOS系统中squid透明代理+iptables防火墙详细配置
2015-03-02 16:12:04| 分类:http | 标签:|举报|字号大中小订阅
看到很多人都在不停地问iptables+squid做透明代理的问题,鄙人不才,斗胆在此做统一解答。如有任何纰漏还望各位批评指教。===================================
看到很多人都在不停地问iptables+squid做透明代理的问题,鄙人不才,斗胆在此做统一解答。如有任何纰漏还望各位批评指教。
=====================================================================
相关资源:
,左下角有iptables的man,仔细看看。
系统:
CentOS4.2,三块网卡,两个内网,一个外网。双至强,2GHz,2GB内存。服务器主要开了squid,sshd,其他的一律闭掉了。
eth0:192.168.100.1
eth1:192.168.168.12
eth2:A.B.C.D ―― 外网地址
=====================================================================
squid设定可以根据自己的情况来,我们假设其端口为3128,在三块网卡上都有监听(不要绑定某一个IP 或网卡)。
/etc/squid/squid.conf
http_port 3128
cache_mem 1000 MB
cache_swap_low 90
cache_swap_high 95
cache_dirufs /opt/cache/squid 8000 16 256
cache_access_log /var/log/squid/access.log
cache_store_log /var/log/squid/store.log
dns_nameservers 210.77.192.88
maximum_object_size 409600 KB
maximum_object_size_in_memory 64000 KB
emulate_httpd_log on
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
forwarded_for off
coredump_dir /opt/cache/squid/coredumphttpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_single_host off
httpd_accel_uses_host_header on
acl all src 0.0.0.0/0
acl lixiaedu100 src 192.168.100.0/24
acl lixiaedu168 src 192.168.168.0/24
http_access allow lixiaedu100
http_access allow lixiaedu168
http_access deny all
cache_effective_user squid
cache_effective_group squid
cache_mgr zhaobing8181@
visible_hostnamelixiaedu
======================================================================
iptables设定。iptables的设定分为两部分,一是如何进行SNAT,二是在开设了squid的情况下如何进行安全防护的问题。
一、SNAT
modprobeip_tables
modprobeiptable_nat
modprobeiptable_filter
modprobeip_conntrack_ftp
modprobeip_nat_ftp
加挂一些iptables的必要的模块,以便调用。
echo 1 > /proc/sys/net/ipv4/ip_forward
打开“转发”功能。让数据包可以在不同的网卡间“流动”。
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth2 -j SNAT --to A.B.C.D
iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o eth2 -j SNAT --to A.B.C.D
iptables -t nat -A PREROUTING -s 192.168.100.0/24 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -s 192.168.168.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 上面这四句比较重要,是进行透明代理的关键。前两句的作用是进行“源地址转换”,也就是说要进行内网地址到外网地址的转换。执行了这两句,即使没有squid,内网机器也可以上网了。
后面两句是对从两个内网网卡进入的、tcp协议的、目的端口号是80的,做“端口重定向”。重定向到3128端口。这样,squid就可以接到这个数据包了。
OK!如果你的squid没有问题,而且你也执行了上面的语句,并且没有报错。那就恭喜你,一个iptables+squid的透明代理做成了。如果你不相信,有两个方法可以测试:一是登录:,这是一个国外网站,可以显示你的外网ip地址,还有是否被代理过。二是在一台内网机器上下载一个文件,或者看一页图片很多而且较慢的网页,然后转到另一台内网机器上下载同样的文件或看刚才的图片网页。比
较一下速度,就能感觉出来了。
二、firewall
如果你把这样一台服务器放到internet上,无异于是想“自杀”。防火墙没有任何的保护机制和过滤功能。很容易被各种攻击所击破。不要迷
信Linux的安全性,网管员的安全意识要比空喊Linux安全重要得多。
iptables -F
iptables -X
iptables -F -t mangle