Cenots PPTP VPN 設定

由 Derek 發表於 五月 4, 2012 / 尚無評論

什麼是PPTP 

PPTP VPN 本質上是點對點隧道協議(PPTP,Point to Point Tunneling Protocol)是一種主要用於VPN的數據鏈路層網路協議。PPTP的協定規範本身並未描述加密或身份驗證的特性,PPTP使用用於封裝PPP數據包的TCP及GRE隧道控制通道。通過該協議,遠程用戶能夠通過 UNIX、LINUX、Microsoft Windows 2003、2008、Windows 7 …等系統以及其它裝有點對點協議的系統安全訪問公司網絡,並能撥號連入本地 ISP ,通過 Internet 安全鏈接到公司網絡。PPTP 可以用於在 IP 網絡上建立 PPP 會話隧道。建立 VPN 連線有多種方式,包括L2TP、IPSEC、PPTP、GRE、SSL 其中PPTP 是VPN設定中最為簡單、方便的方式之一。

 

更多詳細介紹可以參考以下連結

維基-點對點隧道協議

PPTP、L2TP、IPSec和SSLVPN的區別是什麼

pptp是什麼?

點對點隧道協議(PPTP)常見問題解答

 

 

環境 :

Centos 5.8  64位元

ppp-2.4.4-2.el5.x86_64

dkms-2.0.17.5-1

kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm

pptpd-1.3.4-2.rhel5.x86_64.rpm

內網 : 192.168.100.123

外網 : 114.45.128.65

 

 

設定 

一、 Server 端設定

1. 檢查伺服器是否有支持

在開始設定 PPTP 之前,需要先檢查以下三項,必須要都通過後才可設定 PPTP,否則的話就要考慮設定別種 VPN。

1.1 檢查內核版本

要使用 MPPE 加密,且提供完整的PPTP支援,內核必需要在Linux 2.6.14以上。已現在Centos 5.7來說內核都會在2.6.14以上。

 

1.2 檢查內核是否有安裝且支持 MPPE 模組

內核的 MPPE 模組用於支持 Microsoft Point-to-Point Encryption。Windows 自帶的 VPN 客戶端就是使用這種加密方式。 Linux Desktop 也都有 MPPE 支持。其實現在的內核版本,預設就已經安裝支持 MPPE,只是使用下面命令驗證一下,顯示 MPPE is ok 即可

1.3 檢查 TUN/TAP 設備是否正確

如果顯示 cat: /dev/net/tun: File descriptor in bad state 就表示沒問題。

 

 

2. 安裝套件

2.1 安裝主要套件 (ppp iptables)

 

2.2 安裝相關套件 (以避免安裝系統時沒安裝)

 

2.3 安裝DKMS模組

DKMS(Dynamic Kernel Module Support)動態內核模組。

有關此模組的說明可參考「DKMS(Dynamic Kernel Module Support)

dkms-2.2.0.3-1.noarch.rpm 下載可參考 Dell 下載點 或 本站下載點

2.4 安裝 kernel_ppp_mppe (若在1.1測試MPPE有通過的話,此步驟可略過)

kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm 下載可 參考此頁 或 本站下載點

 

2.5 安裝 ppp

pptp需要有ppp的支持,雖說系統本身有ppp-2.4.4-2.el5.x86_64。為了確保有支持MPPE加密,因此手動更新一下。rpm -Uvh 參數U是表示更新的意思  下載請 參考此頁 或 本站下載點

 

32位元   ppp-2.4.4-14.1.rhel5.i386.rpm

64位元  ppp-2.4.4-14.1.rhel5.x86_64.rpm

 

2.5 安裝pptp

ppp-2.4.4-14的版本,只能安裝pptp-1.3.4的版本。因此安裝pptpd-1.3.4-2.rhel5的版本。若有版本更新可 參考此頁 或 本站下載點,請記得連同ppp也要更新。

32 位元  pptpd-1.3.4-2.rhel5.i386.rpm

64位元  pptpd-1.3.4-2.rhel5.x86_64.rpm

 

3. 修改配置文件

3.1 修改 options.pptpd

只需修改 DNS 和 debug 的部份,將其註解拿掉,其他參數部份使用預設值就可以。

若是有問題想查看LOG可查看 /var/log/messages

修改前

 修改後

 

options.pptpd參數說明:

 

3.2 修改 pptp.conf

到pptp.conf最下面修改或是直接添加localip和remoteip也行。

localip和remoteip的IP網段可自行設定,但其中所包涵的不能和實際網卡的IP有所衝突。一般來說,使用pptp.conf預設的就可以了。不過在這邊會建議修改一下設定localip 設定為該台主機的內網IP,remoteip則設定為該網段沒在使用的區間。

修改前

 修改後

 

3.3 修改 chap-secrets

chap-secrets 主要是用來設定 PPTP 連線的帳密管理

client : 登入PPTP的使用者帳號

server : 指的是PPTP服務器名稱,這邊請輸入 pptpd 別做修改。

secret : 登入PPTP的使用者密碼

IP addresses : 設定當客戶端連入時所配發的IP,「*」則表示由PPTP自行分配IP(而自行分配IP的範圍為pptp.conf內remoteip所設定的範圍)。

 

4. 開啟NAT服務

開啟NAT服務主要是要讓當客戶端連入PPTP後,還可訪問到外網。(若連入PPTP後不想訪問外網的話可略過此步驟)

修改前

修改後

 

4.2  立即生效

基本上修改內核設定需重開機才會生效,但有時無法當下馬上重開機的話可下此指令。

 

5. 防火牆設定

5.1 設定NAT

如果在 [4. 開啟NAT服務] 沒開啟NAT服務的話,防火牆的此步驟可略過

 

參數說明 :

192.168.100.0/24  請依pptp.conf內的localip網段來設定

-o eth0  在這邊如果外網網卡不是eth0的話請修改為對應的外網網卡

-j SNAT –to-source 114.45.128.65  在這邊如果有固定的外網ip請直接設外網 ip,若是沒有再設為 -j MASQUERADE 。因設定為MASQUERADE效率上會比直接設ip來的差一點。

 

5.2 其他防火牆設定

請在以下 防火牆規則 中,新增紅色或是自行缺少的規則。

 

 

規則說明 :

-A FORWARD -o eth0 -j ACCEPT 和 -A FORWARD -o ppp+ -j ACCEPT : 允許封包從eth0和ppp+通過。

 -A RH-Firewall-1-INPUT -p gre -j ACCEPT : 允許GRE(Generic Route Encapsulation)協議,PPTP使用GRE協議封裝PPP數據包,然後封裝成IP

-A RH-Firewall-1-INPUT -p udp -m udp –dport 53 -j ACCEPT : 53 port 為dns 解析使用,若沒開通此port 有可能會造成無法開啟網頁

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 1723 -j ACCEPT 和 47 : 允許 PPTP 服務1723 port通過。允許 gre服務 47 port通過。

 

5.3 重啟服務 和設定開機啟動

 

 

二、 Client 端設定

在Client 端設定,可分為是否勾選使用「遠端網路的預設閘道」

「遠端網路的預設閘道」勾選最大的差別在於,如果勾選的話在連上VPN後網路是走 VPN Server的網路,沒勾選的話在連上VPN後網路走自己本地端的網路。

 

優缺點比較

勾選

優點 : 不用添加靜態路由,就可以訪問PPTP VPN 內網的區域網路

缺點 : PPTP VPN 撥號後,若沒設定NAT服務的話,會無法訪問到外網。因網路的部份是使用 PPTP VPN Server的,所以上網的速度會比較慢一些。

 

不勾選

優點 : 不用改變本地端的預設閘道,PPTP VPN 撥號後本地端上網不受影響,因網路是走本地端的網路。只會當要連接遠端內網的區域網路時才會走VPN 線路。

缺點 : 有時在訪問遠端內網的區域網路時會有問題,需要手動添加靜態路由

 

以下範例皆採用windows 7 為設定範例

 

勾選「遠端網路的預設閘道」

由於在設定VPN撥號時,預設就是勾選的情況,因此不須要特地在去勾選。

 

1. 開啟網路和共用中心

路徑為: 控制台\所有控制台項目\網路和共用中心

開啟網路和共用中心後,請點選「設定新的連線或網路」

 

2. 點選「連線到工作地點」設定VPN連線

 

3. 選「使用我的網繼網路連線(VPN)」

 

4. 設定VPN連線IP

網際網路位址 : 請輸入VPN Server 的IP。

目的地名稱 : 請輸入好記憶的名稱就行了。

在下方的「不要立即連線;先設定好,我稍後在連線」請打勾

 

5. 輸入VPN連線帳號密碼

請把記住這個密碼打勾,而網域的部份可不用輸入

 

6. 連線設定完成

請先不要連線,點選關閉。因為後面還有要設定的

 

7. VPN細部設定

反回「網路和共用中心」,然後點選「變更介面卡設定」

 

8. 點選「VPN連線右鍵」→「內容」

 

9. 點選「安全性」

把VPN類型選擇成「點對點通到通訊協定(PPTP)」。

 

10. 連線

 

11. 測試

11.1 開啟命令提示字元,下指令ipconfig

會在VPN連線這邊看到一組由SERVER配出來的IP

 

11.2 PING 內外網是否有通

 

11.3 其他測試

開啟網頁看是否正常,若有安裝MSN、即時通或QQ的話都可開啟測試。

 

不勾選「遠端網路的預設閘道」

由於在設定VPN撥號時,預設就是勾選的情況,因此要把勾選取消。

設定方式和勾選「遠端網路的預設閘道」的都一樣,只有以下幾個地方要修改設定。

 

1. 「控制台\網路和網際網路\網路連線」→ 「VPN連線 右鍵」→ 「內容」

 

2. 「網路功能」 → 「TCP/IPv4」 → 「內容」

 

3. 點選 進階

 

4. 將「使用遠端網路的預設閘道」的勾取消。後按下確定

就可以連線VPN了。

如此一來 PPTP VPN 就設定完成了

 

 

三、 常見錯誤及問題

PPTP 常見的錯誤,由於網路上也有不少說明了。所以在這邊就挑幾個比較常見的來說明一下。

錯誤 619: 端口已斷開連接

無法建立VPN連線,出線619錯誤有兩種可能

1. TCP 1723埠沒開啟,請檢查自己的設備的被防火牆是否有阻檔或沒開通1723埠。

 

2. 此問題大多是因為使用者用來連接到PPTP VPN Server的設備 (如:中華電信小烏龜、公司設備的路由器或防火牆) NAT-T功能關閉或對VPN支持性不好,主要是對GRE 及PPTP 協議的NAT-T 不支持,或是ISP業者禁用了GRE協定,造成VPN無法連接。可以先開啟路由器或是小烏龜等的NAT-T服務,或打去詢問ISP業者是否有禁用此協定。若是ISP業者無禁用此協定,可考慮更換設備試試。

 

錯誤691: 使用者帳號密碼錯誤

1. 請檢查PPTP VPN連線的帳密是否有錯。或看PPTP Server所設定的帳號密碼是否有誤。

2. 同一帳號在同一時間內,只能一個人使用,查看是否有重覆。

3. IP分享器和VPN Server 連線衝突,建議不經分享器。

 

錯誤733: 不支援當前的網路協定

1. VPN 通道只支援TCP/IP協定,不支持其他協定(如 IPX/SPX)

2. 客戶端連入到VPN 伺服器後,無法獲取IP。可查看VPN Server 的IP設定是否有錯。

 

 

 

參考資料 :

Install PPTP on CentOS 5

CentOS 5.5下搭建PPTP VPN

CentOS VPS上搭建PPTP VPN

虛擬專用網(VPN) PPTP 服務

  

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*