关于linux下Squid透明代理的试验
[前言]本文主要讲述linux环境下的squid作为代理中的透明代理,试验准备了两台主机,让我们现在来想象一个联机状态,就是你有一整组内部网络,而这个内部网络都是透过NAT主机联机出去的。当客户经过squid服务器来联机进入Internet时,假如使用的Internet协议为80(也就是WWW),那么就将这个要求交给squid来工作,以达到代理服务器的功能。以下就是本实验的全部过程:
试验准备环境:
Centos5.0双网卡外网ip:192.168.42.129
内网ip:192.168.10.1
Redhat5.5单网卡ip:192.168.10.2
本实验主要分为两个部分
一、有外网的主机服务的安装与配置
二、测试机的环境设置及测试
具体的步骤如下:
1、首先测试centos与外部的连接
[root@localhost~]#ping-c5www.baidu.com
PINGwww.baidu.com(119.75.217.56)56(84)bytesofdata.
64bytesfrom119.75.217.56:icmp_seq=1ttl=128time=5.39ms
64bytesfrom119.75.217.56:icmp_seq=2ttl=128time=18.4ms
64bytesfrom119.75.217.56:icmp_seq=3ttl=128time=15.1ms
64bytesfrom119.75.217.56:icmp_seq=4ttl=128time=8.31ms
64bytesfrom119.75.217.56:icmp_seq=5ttl=128time=18.8ms
---www.baidu.compingstatistics---
5packetstransmitted,5received,0%packetloss,time4003ms
rttmin/avg/max/mdev=5.395/13.248/18.862/5.455ms
2、修改yum源
[[email protected]]#vimCentOS-Media.repo
[c5-media]
name=CentOS-$releasever-Media
baseurl=file:///mnt/cdrom/
#file:///media/CentOS/
#file:///media/cdrom/
#file:///media/cdrecorder/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
[[email protected]]#mvCentOS-Base.repoCentOS-Base.repo.bak
[[email protected]]#mkdir/mnt/cdrom
挂在光盘
[[email protected]]#mount/dev/cdrom/mnt/cdrom/
mount:blockdevice/dev/cdromiswrite-protected,mountingread-only
3、安装squid服务及修改其配置文件
cd/mnt/cdrom/CentOS
[root@localhostCentOS]#pwd
[root@localhostCentOS]#rpm-ivhsquid-2.6.STABLE6-3.el5.i386.rpm
Preparing...###########################################[100%]
1:squid###########################################[100%]
[root@localhostCentOS]#vim/etc/squid/squid.conf
修改两个部分
(1)传输端口
将http_port3128后面加transparent
(2)acl权限
将http_accessallowlocalhost修改为允许的其他主机的ip地址或者all(全部)
[root@localhostCentOS]#servicesquidrestart
Stoppingsquid:[FAILED]
init_cache_dir/var/spool/squid...Startingsquid:.[OK]
#因为安装之后没有启动服务,所以,restart会出出现FAILED
4、开启nat转发功能
[root@localhostCentOS]#vim/etc/sysctl.conf
ip_forward=1
使得转发功能生效
[root@localhostCentOS]#sysctl-p
net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.accept_source_route=0
kernel.sysrq=0
kernel.core_uses_pid=1
net.ipv4.tcp_syncookies=1
kernel.msgmnb=65536
kernel.msgmax=65536
kernel.shmmax=4294967295
kernel.shmall=268435456
5、设置dns解析
-t表示一种表格,这里指nat表格;-A表示要追加一个规则;-p表示一种协议;--dport表示端口号;-o表示out,后面是端口;-j表示要做什么,MASQUERADE表示是地址伪装;一般还有个参数是-s表示原地址ip或地址段的,不写表示默认所有all。
[root@localhostCentOS]#iptables-tnat-APOSTROUTING-pudp--dport53-oeth0-jMASQUERADE
做80端口的提取,把80端口出现的信息都提取给端口(3128)squid代理服务器(就像是端口重定向)
[root@localhostCentOS]#iptables-tnat-APREROUTING-ptcp--dport80-ieth1-jREDIRECT--to-ports3128
查看详细信息
[root@localhostCentOS]#iptables-tnat-v-L-n
ChainPREROUTING(policyACCEPT0packets,0bytes)
pktsbytestargetprotoptinoutsourcedestination
00REDIRECTtcp--eth1*0.0.0.0/00.0.0.0/0tcpdpt:80redirports3128
ChainPOSTROUTING(policyACCEPT80packets,4800bytes)
pktsbytestargetprotoptinoutsourcedestination
00MASQUERADEudp--*eth00.0.0.0/00.0.0.0/0udpdpt:53
ChainOUTPUT(policyACCEPT80packets,4800bytes)
pktsbytestargetprotoptinoutsourcedestination
6、在客户机上
[root@lan~]#routeadddefaultgw192.168.10.1
[root@lan~]#vim/etc/resolv.conf
nameserver202.106.0.20
测试:浏览器中输入www.baidu.com