CentOS6.4下搭建PPTP ×××

對於沒有玩過博客的人來說,搭建自己的博客對我有着致命的誘惑,於是乎:

  • 申請LinodeVPS:Dallas機房,Plan512,CentOS6.232位,啓動後,使用"yumupdate"命令,升級到最新的6.4Final版本,英文版

  • 申請GoDaddy域名:www.caike.me,配置域名解析

爲了驗證×××搭建方法,本地VMwarevSphere下,新建了兩個虛擬機:CentOS6.232位中文版和英文版,並升級到最新的6.4Final版本

2搭建說明及知識普及

2.1×××

虛擬專用網絡(VirtualPrivateNetwork),指的是在公用網絡上建立專用網絡的技術。從某種意義上說,×××服務器可以理解爲網絡代理,其可以幫助用戶訪問原本無法訪問的資源,如PC_1可以利用Server_1的×××訪問到"PC_1不能訪問而Server_1可以訪問的資源"。常用於異地辦公的場景下,企業工作人員在異地辦公時,可以無障礙地訪問企業內部網絡和資源。在當前特殊的網絡環境下,×××可以很好地解決當前網絡無法訪問的資源的問題。

2.2×××技術

×××當前主要有如下幾種技術:

  • PPTP:點對點隧道協議,是一種實現虛擬專用網絡的方法。PPTP使用用於封裝PPP數據包的TCP及GRE隧道控制通道。

  • L2TP:第二層隧道協議,是一種工業標準的Internet隧道協議,功能大致和PPTP協議類似。此協議基於微軟的點對點隧道協議(PPTP)和思科2層轉發協議(L2F)之上。

  • Open×××:以路由器或橋接配置和遠程訪問設備方式實現虛擬專用網絡(×××)創建安全的點對點或站對站連接的解決方案。它使用SSL/TLS安全加密,具有穿越網絡地址轉換(NATs)和防火牆的功能。

詳情請參考:http://www.cnblogs.com/hfww/archive/2011/09/30/2223343.html

本文介紹最簡單易用的PPTP,客戶端不需要特殊軟件即可連接到×××服務器。

3步驟

3.1準備工作

1)查看VPS是否支持,即檢查TUN/TAP/PPP功能

1
cat/dev/ppp

返回:Nosuchdeviceoraddresss(中文版:沒有那個設備或地址)

1
cat/dev/net/tun

返回:Filedescriptorinbadstate(中文版:文件描述符出於錯誤狀態)

上述兩條必須都滿足才行,如果沒有啓用,可以給VPS提供商提交開通請求,一般VPS默認開啓此功能

2)查看系統是否已經編譯MPPE

MPPE協議是微軟點對點加密術協議,其規定了如何在數據鏈路層對通信機密性保護的機制,通過對PPP鏈接中PPP分組的加密及PPP封裝處理,實現數據鏈路層的機密性保護。

pptp需要MPPE的支持,不安裝的話,就不能使用加密連接。如果已經具備了MPPE的支持,則可以跳過此步,否則,需要編譯內核或安裝dkms軟件包,該軟件能讓你在不編譯內核的基礎上,外掛一些內核的模塊。

CentOS早期版本4.x或5.x,網上的教程均使用一個命令來測試是否已經支持MPPE

1
modprobeppp-compress-18&&echook

返回"ok"表明系統已經支持MPPE,但是,linode下VPS的CentOS6.4Final的系統中,該命令總是返回"Moduleppp_mppenotfound"。而在本地VMwarevSphere下虛擬機CentOS6.4Final的系統中,該命令返回"OK"。

而網上查找到另一條檢測命令對我linode下的CentOS6.4是有效的,卻對VMwarevSphere下的CentOS6.4無效

1
zgrepMPPE/proc/config.gz

返回"CONFIG_PPP_MPPE=y",則可以安裝PPTP了。

注:目前不確定是不是因爲VPS架構的問題(linode下是XEN,本地的是vSphere),導致了分別只支持上述其中一條檢測命令。我們可以武斷地認爲,判斷系統支持MPPE,只要符合其中一條即可。

如果不符合,則需要安裝dkms和kernel_ppp_mppe,這兩個軟件包並沒有被包含在CentOS的默認數據源中。

1
2
3
yuminstalldkms
wgethttps://acelnmp.googlecode.com/files/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
rpm-ivhkernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

上述是軟件包的下載和安裝命令,實際過程中,系統會提示安裝wget,gcc,make,kernel-devel等支撐包,這些軟件包用戶使用yum進行安裝即可。安裝完成後,重啓下你的系統。

注:請將文件下載到/home下的某個目錄,否則最終在進行×××連接時,可能出現問題,詳情參考第5章

3)查看系統的版本

1
uame-a

查看系統是32位還是64位,方便後續選擇軟件包

1
cat/etc/centos-release

查看CentOS的系統版本

3.2安裝軟件包

1)安裝ppp,pptp和iptables

pptp需要iptables的支持,需要iptables對其ip數據包進行轉發。

1
yuminstall-yppppptpiptables

2)安裝pptpd

1
2
wgethttp://li.nux.ro/download/nux/misc/el6/i386/pptpd-1.3.4-1.el6.nux.i686.rpm
rpm-ivhpptpd-1.3.4-1.el6.nux.i686.rpm

上述命令執行過程中,可能會提示安裝perl,使用yum命令進行安裝即可。

3.3配置

1)配置/etc/pptpd.conf

1
vi/etc/pptpd.conf

在該文件的最後幾行中,將

1
2
#localip192.168.0.1
#remoteip192.168.0.234-238,192.168.0.245

中的"#"註釋符去除,修改爲

1
2
localip192.168.0.1
remoteip192.168.0.234-238,192.168.0.245

注意:此處的remoteip指定的IP範圍是用來給遠程連接使用的。如果您遠程訪問×××,×××就會在remoteip範圍內分配一個ip地址給你。localip的值直接影響到後面要說的iptables轉發規則的編寫,所以建議不要隨意改動。

2)編輯/etc/ppp/options.pptpd

1
vi/etc/ppp/options.pptpd

找到被註釋掉的DNS配置

1
2
#ms-dns10.0.0.1
#ms-dns10.0.0.2

去掉註釋符"#",修改DNS

1
2
ms-dns8.8.8.8
ms-dns8.8.4.4

注意:此處的DNS修改成了Google的DNS,用戶也可以將其修改爲VPS服務提供商提供的DNS

3)設置pptp的用戶名和密碼

1
vi/etc/ppp/chap-secrets

會顯示如下的內容

1
2
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses

添加一條記錄,該記錄表示允許擁有secret的client在server上使用ipaddress,修改後如下:

1
2
3
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses
testpptpdtest*

其中,client和secret爲用戶連接×××服務器時使用的"用戶名"和"密碼"。

4)修改內核設置,使其支持轉發

1
vi/etc/sysctl.conf

找到如下高亮顯示的兩行代碼

1
2
3
4
...
net.ipv4.ip_forward=0
...
net.ipv4.tcp_syncookies=1

將其中一行的值進行修改,另一行進行註釋

1
2
3
4
...
net.ipv4.ip_forward=1
...
#net.ipv4.tcp_syncookies=1

修改完內核設置後,需要執行以下命令使修改後的內核生效

1
sysctl-p

5)添加iptables轉發規則

1
iptables-tnat-APOSTROUTING-s192.168.0.0/24-oeth0-jMASQUERADE

注:該命令適用於XEN架構的VPS,而Linode採用的是XEN架構,故此適用。而如果VPS是採用OpenVZ架構,那麼可能需要使用如下的命令

1
iptables-tnat-APOSTROUTING-s192.168.0.0/24-jSNAT--to-source12.34.56.78

其中"12.34.56.78"是該VPS的公網的IP。

3.4重啓

1)設置pptp和iptables隨系統啓動

1
2
chkconfigpptpdon
chkconfigiptableson

2)保存並重啓iptables服務

1
2
/etc/init.d/iptablessave
/etc/init.d/iptablesrestart

注:執行第二條語句時,系統可能會出現如下錯誤提示,詳情見第5章。

3)重啓pptp服務

1
/etc/init.d/pptpdrestart

注:執行該語句,系統可能會出現錯誤提示,詳情見第5章。

4客戶端設置(WindowsXP)

  1. 右擊"網絡鄰居",選擇"屬性"

  2. 點擊"創建一個新的連接",並選擇"下一步"

  3. 選擇"連接到我的工作場所的網絡",點擊"下一步"

  4. 選擇"虛擬專用網絡連接",點擊"下一步"

  5. "公司名"中任選一個名字輸入,點擊"下一步",該名字只是用來標識連接,最後桌面上出現的圖標以該名字命名

  6. "主機名"中輸入×××服務器的IP地址或域名,點擊"下一步"

  7. 勾選"在我的桌面上…..",點擊"完成"

  8. 桌面上,雙擊新出現的圖標,輸入×××連接的用戶名和密碼(如上例中的"test"和"test")進行×××連接

注:連接中可能會出現錯誤,詳情見第五章

5出現的問題

5.1重啓pptp服務時,錯誤

1
Shuttingdownpptp[FAILED]

可以忽略該問題,由於之前pptp並沒有啓動,故使用restart進行重啓時,會出現關閉錯誤的提示,如果直接使用start就不會有錯誤提示。

5.2重啓iptables時,錯誤

1
Iptableserror–SettingchainstopolicyACCEPT:securityrawnatmanglefilter[FAILED]

需要通過編輯iptables的文件進行處理

1
vi/etc/init.d/iptables

找到並修改如下代碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
echo-n$”${IPTABLES}:Settingchainstopolicy$policy:“
ret=0
foriin$tables;do
echo-n“$i“
case“$i”in
+security)
+$IPTABLES-tfilter-PINPUT$policy\
+&&$IPTABLES-tfilter-POUTPUT$policy\
+&&$IPTABLES-tfilter-PFORWARD$policy\
+||letret+=1
+;;
raw)
$IPTABLES-traw-PPREROUTING$policy\
&&$IPTABLES-traw-POUTPUT$policy\
||letret+=1
;;

注意,帶+號的行是後添加的。

修改後重新啓動ipstables服務即可。

5.3客戶端連接×××時,提示800錯誤

800錯誤:不能建立×××連接,×××服務器可能不能到達,或者此連接的安全參數沒有正確配置。

可能有兩個原因:1)×××服務器防火牆未設置準確,2)安裝rpm安裝程序時,安裝目錄沒有權限。那麼分別對這兩種原因進行排除和分析

1)防火牆的問題,可以通過關閉×××服務器的防火牆進行驗證

1
serviceiptablesstop

防火牆關閉後,如果錯誤800不再出現,那麼可以認爲是防火牆的問題。防火牆的問題,可能是由於端口IP協議47(GRE)引起的,爲徹底解決該問題,可以將如下腳本保存在臨時文件iptables.sh中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo1>/proc/sys/net/ipv4/ip_forward
/etc/init.d/iptablesstop
/sbin/iptables-AINPUT-picmp-jDROP
/sbin/iptables-tnat-APOSTROUTING-s192.168.0.0/24-jMASQUERADE
/sbin/iptables-FFORWARD
/sbin/iptables-PFORWARDACCEPT
/sbin/iptables-tnat-APOSTROUTING-jMASQUERADE
/sbin/iptables-FFORWARD
/sbin/iptables-AFORWARD-pudp-s192.168.0.0/24--dport47-jACCEPT
/sbin/iptables-AFORWARD-ptcp-s192.168.0.0/24--dport1723-jACCEPT
/sbin/iptables-AFORWARD-pgre-s192.168.0.0/24-jACCEPT
/sbin/iptables-AFORWARD-mstate--stateESTABLISHED,RELATED-jACCEPT
/etc/init.d/iptablessave
/etc/init.d/iptablesstart
/etc/init.d/pptpdrestart

然後,修改iptables.sh的可執行權限,並運行它

1
2
3
chmod777iptables.sh
./iptables.sh
rm-fiptables.sh

注意:上述的"192.168.0.0"均是根據"/etc/pptpd.conf"中的localip設定的。

2)對於第二種問題,我們可以通過查看pptp的日誌(pptp的日誌隨系統日誌一起,在/var/log/messages

1
vi/var/log/messages

從文本最後往前翻,發現如下語句

1
Warning:can'topenoptionsfile/root/.ppprc:Permissiondenied

經過驗證,發現我們按照下載pptpd時,是直接下載在/root目錄並安裝的。假設如果是在/home目錄下安裝

1
2
3
4
5
6
mkdir/home/software
cp/root/pptp-release-current.noarch.rpm/home/software/pptp-release-current.noarch.rpm
cd/home/software
rpm-ivhpptp-release-current.noarch.rpm--replacepkg
yumreinstallpptp-release-current.noarch.rpm
servicepptpdrestart

重新連接,看是否解決。

5.4客戶端連接×××時,提示619錯誤

網上多方查找,給出的解決方案爲

1
2
rm/dev/ppp
mknod/dev/pppc1080

嘗試後,仍不能解決。後通過查看日誌

1
vi/var/log/messages

從文本最後往前翻,發現如下語句

1
2
Plugin/usr/lib/pptpd/pptpd-logwtmp.soisforpppdversion2.4.3,thisis2.4.5
GRE:read(fd=6,buffer=8059660,len=8196)fromPTYfailed:status=-1error=Input/outputerror,usuallycausedbyunexpectedterminationofpppd,checkoptionsyntaxandpppdlogs

從日誌可以看出,我們按照的ppp的版本高於pptp的版本太多了,使得pptp中的組件無法支持ppp,故解決方案有兩個:1)升級pptp,2)按照2.4.3版本的ppp。降低ppp的版本不太可取,在後續的系統升級過程中,必然會帶來問題。最後從網上找到如下的pptp的軟件包

1
2
3
wgethttp://poptop.sourceforge.net/yum/stable/pptp-release-current.noarch.rpm
rpm-ivhpptp-release-current.noarch.rpm
yumupdate

安裝該軟件包後,重啓pptp服務,客戶端連接×××服務器正常了。

6總結

在linux下進行軟件的配置,對於高手而言,可能極爲輕鬆。但對菜鳥而言,則痛苦不堪,期間會遇到各種各樣的問題。本文在三個環境中進行配置,每次均遇到了不同的問題,雖然在我們不懈地Google和Baidu之後,還是可以找到解決方案的,但其過程,不堪回首。當前網上衆多的pptp×××的配置,大多是基於CentOS4.x和5.x,其遇到的問題往往和我們不同,此篇就是爲CentOS6.4的用戶準備的,望對大家有所幫助。

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