CentOS 6.0配置pptp *** Client和Squid透明網關

目的:
構建一臺單網卡Linux網關(透明代理),該網關撥入某海外***服務器,客戶端設定該網關後,網絡出口則爲海外***服務器,實現加速訪問一些網站的目的。

環境信息:
硬件:DELL機器一臺,單網卡(IP:10.39.100.253);
機器名:***GW
操作系統:CentOS6.0KernelLinux2.6.32-71.el6.i686
網絡環境:局域網防火牆需允許該機器使用PPTP協議撥入某公網IP

安裝步驟:
一.安裝操作系統,設定IP,機器名,可關閉防火牆,SELinux;
修改主機名:設置CentOS主機名稱的配置文件爲:/etc/sysconfig/network
修改hosts文件:修改/etc/hosts文件
關閉SELinux:修改/etc/sysconfig/selinux
SELINUX=disabled#這是最標準的方式


設定系統使用EPEL源:
CentOS6.x32-bit(x86/i386):
rpm–Uvhhttp://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
CentOS6.x64-bit(x64):
rpm–Uvhhttp://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

二.安裝軟件;
檢查ppp,pptp,pptp-setup的安裝情況,沒有則yuminstall;

三.使用pptpsetup命令創建***節點;
pptpsetup命令用法及說明:

  1. pptpsetup--create<TUNNEL>--server<ipaddress/hostname>[--domain<DOMAINNAME>]--username<USERNAME>[--password<PASSWORD>][--encrypt][--start]

  2. pptpsetup–delete<TUNNEL>刪除一個節點

Options:
*<TUNNEL>創建的連接名稱,自指定。
*<SERVER>PPTPSERVER的IP或域名。
*<DOMAIN>所在的域,很多Windows的服務器都是使用“域”來管理認證的。
*<USERNAME>***用戶名(域用戶名)
*<PASSWORD>***上用戶密碼,也可以沒這個參數,命令稍後會自動詢問,這樣保證賬號安全
*–encrypt表示啓用加密,不必指定加密方式,命令會讀取配置文件中的加密方式
*當沒使用–encrypt連接時出現下面的錯誤時,表示使用了加密,這點也可以和***的管理員聯繫確認一下,遇到下面的情況可以加上該參數。
*CHAPauthenticationsucceeded
*LCPterminatedbypeer(ZM-76-^@<M-Mt^@^@^BM-f)類似亂碼
*–start創建連接完後馬上連接。

運行該命令後實際上創建了兩個配置文件:
/etc/ppp/chap-secrets
/etc/ppp/peers/連接名

配置文件/etc/ppp/peers/連接名需要做些修改,我的如下:

  1. #writtenbypptpsetup

  2. pty"pptp10.39.100.2--nolaunchpppd"

  3. lock

  4. noauth

  5. nobsdcomp

  6. nodeflate

  7. namecsnj\\administrator

  8. remotenamecs***

  9. ipparamcs***

  10. #defaultroute#使用本連接作爲默認路由,本文單網卡沒意義,可以不添加,說明見附錄

  11. persist#當連接丟失時讓pppd再次撥號,已驗證

  12. require-mppe-128

  13. refuse-pap

  14. refuse-chap

  15. refuse-eap

  16. refuse-mschap

我在做這一步的時候,始終連接不上,懷疑過加密方法、握手協議什麼的沒用對,最終發現是用戶名填寫的方式要改變下。
需把上述兩個配置文件裏面的"DOMAIN\username"改爲"DOMAIN\\username",就可以了。
這點在官方文檔中亦有說明,鏈接:http://pptpclient.sourceforge.net/howto-redhat.phtml#setup
引用:

  1. *Thescriptdisplaysyourchoice,togetherwithinformationaboutspecifyingalocalname:

  2. AddaNEWCHAPsecret.

  3. NOTE:Anybackslashes(\)mustbedoubled(\\).

  4. LocalName:

  5. Thisisthe'local'identifierforCHAPauthentication.

  6. NOTE:IftheserverisaWindowsNTmachine,thelocalname

  7. shouldbeyourWindowsNTusernameincludingdomain.

  8. Forexample:

  9. domain\\username

  10. LocalName:your_domain\\your_username

四.設置撥號腳本;
撥號腳本pon和poff在下面的目錄/usr/share/doc/ppp-*/scripts/裏:
cp/usr/share/doc/ppp-2.4.5/scripts/pon/usr/sbin
cp/usr/share/doc/ppp-2.4.5/scripts/poff/usr/sbin
chmod+x/usr/sbin/pon/usr/sbin/poff#使pon和poff腳本擁有執行權限
這樣就可以通過pon/poff<tunnel>來啓停***連接。
也可以使用pppdcall<tunnel>/killallpppd來啓動/停止。

五.設置開機自動撥號,並在撥號後改變路由;
把啓動撥號的命令添加到/etc/rc.d/rc.local文件中:

121347585.jpg

開機後查看路由已使用***通道設備。

121419776.jpg


六.查看***Log;
相應的LOG可以在/var/log/message中查看。
tofurtherdiagnoseafailure,addoptionstothecommand(使用命令行撥號並查看屏幕日誌):
pppdcall***_namedebugdumplogfd2nodetach

七.安裝squid;
yum–yinstallsquid
啓動squid:/etc/rc.d/init.d/squidstart

八.配置squid;
修改配置文件/etc/squid/squid.conf
配置爲透明代理:
#Squidnormallylistenstoport3128
http_port10.39.100.253:3128transparent
配置squid開機自動啓動:
chkconfigsquidon

九.關於訪問控制;
設置完成後,關鍵且重要的任務是訪問控制。Squid支持的管理方式很多,使用起來也非常簡單(這也是有人寧願使用不做任何緩存的Squid,也不願意單獨使用iptables的原因)。
Squid可以通過IP地址、主機名、MAC地址、用戶/密碼認證等識別用戶,也可以通過域名、域後綴、文件類型、IP地址、端口、URL匹配等控制用戶的訪問,還可以使用時間區間對用戶進行管理,所以訪問控制是Squid配置中的重點。
Squid用ACL(AccessControlList,訪問控制列表)對訪問類型進行劃分,用http_accessdeny或allow進行控制。
本文通過Mac地址進行控制,在配置文件中修改
aclallowuserarpmac1mac2
http_accessallowallowuser
特別要注意的是,Squid將使用allow-deny-allow-deny……這樣的順序套用規則。例如,當一個用戶訪問代理服務器時,Squid會順序測試Squid中定義的所有規則列表,當所有規則都不匹配時,Squid會使用與最後一條相反的規則。
iptables–tfilter–AINPUT–s10.39.101.152–Ieth0–jACCEPT
iptables–tfilter–AINPUT–s10.39.0.0/16–Ieth0–jDROP

十.打開內核IP轉發;
方法一:修改/proc下內核參數文件內容
直接修改內核參數ip_forward對應在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件內容:
#cat/proc/sys/net/ipv4/ip_forward
該文件默認值0是禁止ip轉發,修改爲1即開啓ip轉發功能。修改命令如下:
#echo1>/proc/sys/net/ipv4/ip_forward
修改過後就馬上生效,即內核已經打開ip轉發功能。但如果系統重啓後則又恢復爲默認值0,如果想永久打開需要通過修改/etc/sysctl.conf文件的內容來實現。
方法二.修改/etc/sysctl.conf文件
默認sysctl.conf文件中有一個變量是
net.ipv4.ip_forward=0
將後面值改爲1,然後保存文件。因爲每次系統啓動時初始化腳本/etc/rc.d/rc.sysinit會讀取/etc/sysctl.conf文件的內容,所以修改後每次系統啓動時都會開啓ip轉發功能。但只是修改sysctl文件不會馬上生效,如果想使修改馬上生效可以執行下面的命令:
#sysctl–p

十一.配置iptables;
1.將客戶端的請求NAT方式轉給外網進行路由;
iptables-tnat-APOSTROUTING-s10.39.0.0/16-oppp0-jMASQUERADE
2.將客戶端對Web端口80的請求轉發到Squid3128端口,由Squid接手;
iptables-tnat-APREROUTING-s10.39.0.0/16-ieth0-ptcp--dport80-jREDIRECT--to-port3128
保存:/etc/rc.d/init.d/iptablessave
重啓:serviceiptablesrestart

十二.安裝過程中,學習了若干(>20)網絡上的博客文章,知識庫,無法一一列出,一併感謝。
網絡中很多文章使用腳本來實現開機自動撥號,斷線重撥等功能,因我不懂腳本,待以後弄懂了再補充。

本文PDF版筆記下載:http://down.51cto.com/data/416640

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章