關於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