LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux配置 >

squid代理共享上网

时间:2013-01-22 09:58来源:未知 编辑:admin 点击:
安装squid包 yum install squid y 由于默认的文件里面有很多注释,不利于查看和编辑,建议先复制为 cp /etc/squid/squid.conf /etc/squid/squid.conf.bak 然后清空该文件 cat /dev/null /etc/squid/squid.conf 输入下
安装squid包
yum install squid –y

由于默认的文件里面有很多注释,不利于查看和编辑,建议先复制为
cp /etc/squid/squid.conf /etc/squid/squid.conf.bak  

然后清空该文件
cat /dev/null > /etc/squid/squid.conf

输入下面的配置即可

1.常规代理:
[root@mailsvr11]# cat /etc/squid/squid.conf

http_port 172.24.40.40:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 172.24.40.40
cache_mgr test@test.com

acl all src 0.0.0.0/0.0.0.0
http_access allow all

初始化 /usr/sbin/squid -z
启动服务 /etc/init.d/squid start

附:相关解释
http_port 本机IP地址以及端口号,这里的端口号随便填写,但是不要跟其他服务冲突,否则启动失败。
cache_mem 指定多少内存为高速缓存,如果只是共享上网,可以加大到物理内存的1/2,如果有其他服务,则不超过1/3
cache_dir ufs 硬盘缓存区的大小 ufs 表示存储类型 4096代表缓存空间大小 16个一级目录 256个二级目录
dns_nameservers DNS服务器的地址
cache_access_log 访问记录日志文件
cache_log  记录缓存相关信息
cache_store_log 设置网页缓存日志文件
visible_hostname  运行squid的服务器的主机名,建议写IP地址
cache_mgr 管理员的email
acl all src 0.0.0.0/0.0.0.0  接收所有的客户机的访问请求
http_access allow all 允许all访问控制列表的http请求

IE里面代理服务器的添加,这里就不介绍了。这里只是介绍简单的搭建。

2.用户认证代理
注意:透明代理不能跟用户认证共存
[root@mailsvr11]# cat /etc/squid/squid.conf
http_port  172.24.40.40:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname  172.24.40.40
cache_mgr test@test.com

acl all src 0.0.0.0/0.0.0.0

#用户认证需要添加
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic realm Example.com's Squid proxy-caching
acl auth_user proxy_auth REQUIRED
http_access allow auth_user

注释:
第一行:选择的认证方式为basic,认证程序路径和密码文件路径。

/etc/squid/passwd文件可以使用下面方法生成,在装有apache的机器上运行

htpasswd -c /etc/squid/passwd auth_user

以上的auth_user替换为认证的用户,比如haha

第二行:认证程序的进程数

第三行:认证有效时间

第四行:认证领域内容,上面定义的web浏览需要输入用户密码

第五,六行:设置允许认证的用户访问


3.透明代理

注意:透明代理不能跟用户认证共存

[root@mailsvr11]# cat /etc/squid/squid.conf
http_port 172.24.40.40:8080  transparent ---这里注意下,需要添加 transparent
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.134.1.4
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 172.24.40.40:8080
cache_mgr test@test.com
acl all src 0.0.0.0/0.0.0.0
http_access allow all

#下面是透明代理需要添加的
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_users_host_header on

注释:
第一行:由于要访问的外网主机有许多台,virtual,即为虚拟的主机,virtual指定了虚拟主机模式,采用这种模式时,squid就取取消了缓存及ICP功能.
第二行:被加速主机的端口

第三行:选项定义为on后,squid既是Web请求的加速器,又是缓存代理服务器

第四行:选项定义为on后,针对要访问的主机使用主机头,即通过主机头来区分不同的主机;这也是配置透明代时必须要配置的

需要设置iptables

#打开ip转发功能,让数据包可以在网卡间流动

echo "1">/proc/sys/net/ipv4/ip_forward    注意这样修改只是单次生效,重启系统之后会失效,永久打开的方法有两种,一种是将这段话加入到/etc/rc.local文件中,

另外一种是修改/etc/sysctl.conf文件,将net.ipv4.ip_forward = 0这里的0修改为1  使用sysctl –p生效。

#使iptables成为NAT服务器

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE    注意这里的网卡,eth1

#把所有流向80端口的请求转发到3128端口,让squid处理   

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to 3128

#把所有流向53端口的udp与tcp请求转发到外网的DNS服务器地址,这里的是西安电信的DNS地址:61.134.1.4

iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to 61.134.1.4
iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to 61.134.1.4

完成之后,将客户端网关指定到squid服务器,DNS指向外网或者内网可以正常使用的地址。透明代理完成之后,客户端可以不用设置代理服务器,用户不知不觉的使用的squid缓存。

转载请保留固定链接: https://linuxeye.com/configuration/1203.html

------分隔线----------------------------
标签:Squid
栏目列表
推荐内容