透明代理
配置代理软件squid:
编辑/usr/local/squid/etc/squid.conf,修改以下内容,确保以下配置:
http_port 192.168.100.123:8080
cache_mem 48 MB
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl flag src 192.168.100.0/255.255.255.0
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
cache_effective_user nobody
cache_effective_group nobody
http_access allow flag
http_access deny all
(限制只允许局域网用户使用代理,具体可以参考squid手册中关于Access Control Lists的内容来限制访问代理)
cache_dir ufs /var/spool/squid 100 16 256 cache_dir type Directory-Name Mbytes Level-1 Level2
(说明:指定squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个这样的交换空间,并且这些交换空间可以分布不同的磁盘分区。"directory "指明了该交换空间的顶级目录。如果你想用整个磁盘来作为交换空间,那么你可以将该目录作为装载点将整个磁盘mount上去。缺省值为/var/spool/squid。"Mbytes"定义了可用的空间总量。需要注意的是,squid进程必须拥有对该目录的读写权力。"Level-1"是可以在该顶级目录下建立的第一级子目录的数目,缺省值为16。同理,"Level-2"是可以建立的第二级子目录的数目,缺省值为256。为什么要定义这么多子目录呢?这是因为如果子目录太少,则存储在一个子目录下的文件数目将大大增加,这也会导致系统寻找某一个文件的时间大大增加,从而使系统的整体性能急剧降低。所以,为了减少每个目录下的文件数量,我们必须增加所使用的目录的数量。如果仅仅使用一级子目录则顶级目录下的子目录数目太大了,所以我们使用两级子目录结构。
那么,怎么来确定你的系统所需要的子目录数目呢?我们可以用下面的公式来估算。
已知量:
DS = 可用交换空间总量(单位KB)/ 交换空间数目
OS = 平均每个对象的大小= 20k
NO = 平均每个二级子目录所存储的对象数目 = 256
未知量:
L1 = 一级子目录的数量
L2 = 二级子目录的数量
计算公式:
L1 x L2 = DS / OS / NO
(注意这是个不定方程,可以有多个解)
acl allow_domain dstdomain "/etc/squid/allow_domain"
创建cache目录
[root@proxy squid]# squid -z
修改该目录所有者squid:
[root@proxy squid]# chown squid:squid /usr/spool/squid
最后启动squid:
[root@iptable logs]# /usr/local/squid/bin/RunCache &
并且系统中应该有如下几个端口被监听:
[root@proxy logs]# netstat -ln tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN udp 0 0 0.0.0.0:3130 0.0.0.0:*
这些说明squid已经正常启动了。
然后使用Redhat的serviceconf工具以使得系统启动时自动启动squid服务器。
5.iptables的设置
在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmod u+x firewll以更改文件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动执行该脚本。
firewall文件内容为:
#!/bin/sh echo "Enabling IP Forwarding..." echo 1 > /proc/sys/net/ipv4/ip_forward echo "Starting iptables rules..." #Refresh all chains /sbin/iptables -F -t nat iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -- -j MMASQUERADE