天天看點

pptp詳細講解

點對點隧道協定(PPTP)是廣泛使用的虛拟專用網絡協定,Windows 98、Windows Millennium Edition、Windows 2000和Windows XP中都包含有該協定。 PPTP是用于在中間網絡上傳輸點對點協定(PPP)幀的一種隧道機制。 通過利用PPP的身份驗證、加密和協定配置機制,PPTP連接配接同時為遠端通路和路由器到路由器的虛拟專用網(×××)連接配接提供了一條在公共網絡(比如:Internet)上建立安全連接配接的途徑。有關PPTP的較長的描述見RFC 2367。

PPTP流量概述

PPTP流量由以下幾方面組成:

• PPTP控制連接配接

這是一個邏輯連接配接,表示必須通過一系列PPTP消息建立、維持和終止的PPTP隧道。 PPTP控制連接配接流量使用PPTP用戶端上動态配置設定的TCP端口,以及PPTP伺服器上由IANA保留的TCP端口1723。

• 資料的GRE封裝

當資料通過PPTP連接配接發送時,PPP幀将使用通用路由封裝(Generic Routing Encapsulation,GRE)報頭進行封裝,報頭包含用于識别該資料包的特定PPTP隧道的資訊。

PPTP流量的防火牆配置

在最常見的配置中,防火牆連接配接到Internet,同時×××伺服器(一台PPTP伺服器)作為企業内聯網(intranet)資源同周邊網絡相連接配接。這種配置如下圖所示。

做人要厚道,轉貼請注明出自bbs.winos.cn

<dl></dl>

<dt></dt>

<dd></dd>

cg010301_BIG.gif (13.94 KB)

下載下傳次數:3

2006-5-23 20:42

雙MCITP教育訓練+認證考試,所有費用僅2000元!

×××伺服器在周邊網絡和企業内聯網上都有一個接口。在此配置中,必須在所屬的Internet和周邊網絡接口上通過輸入和輸出篩選器配置防火牆,進而允許PPTP隧道維持流量和通過PPTP隧道的資料傳輸到×××伺服器上。

Internet接口上的篩選器

在防火牆的Internet接口上配置以下輸入包篩選器,以允許傳入下列各類流量:

• ×××伺服器的周邊網絡接口的目标IP位址和TCP目标端口1723(0x6BB)。

該篩選器允許PPTP隧道維持傳入PPTP伺服器的流量。

• ×××伺服器的周邊網絡接口的目标IP位址和IP協定ID 47(0x2F)。

該篩選器允許資料通過PPTP隧道傳到PPTP伺服器上。

• ×××伺服器的周邊網絡接口的目标IP位址和TCP源端口1723(0x6BB)。

該篩選器僅在×××伺服器充當路由器到路由器的×××連接配接的調用路由器(一個×××用戶端)時才是必需的。 這個篩選器應該僅和×××伺服器的周邊網絡接口上推薦的IP資料包篩選器結合使用。 ×××伺服器周邊網絡接口上推薦的包篩選器包括那些允許(×××伺服器發起的TCP連接配接的)來自端口1723的入站TCP流量和到TCP端口1723的出站流量的篩選器。 有關×××伺服器的周邊網絡接口上推薦的篩選器的更多資訊,請參見×××和防火牆。

在防火牆的Internet接口上配置以下輸出篩選器,以允許傳入下列各類流量:

• ×××伺服器的周邊網絡接口的源IP位址和TCP源端口1723(0x6BB)。

該篩選器允許PPTP隧道維持來自PPTP伺服器的流量。

• ×××伺服器的周邊網絡接口的源IP位址和IP協定ID 47(0x2F)。

該篩選器允許來自×××伺服器的資料通過PPTP隧道。

• ×××伺服器的周邊網絡接口的源IP位址和TCP目标端口1723(0x6BB)。

該篩選器僅在×××伺服器在路由器到路由器的×××連接配接中充當調用路由器(一個×××用戶端)時才是必需的。 這個篩選器應該僅和×××伺服器的周邊網絡接口上推薦的IP包篩選器結合使用。

周邊網絡接口上的篩選器

在防火牆的周邊網絡接口上配置以下輸入篩選器,以允許傳入下列各類流量:

在防火牆的周邊網絡接口上配置以下輸出資料包篩選器,以允許傳入下列各類流量:

該篩選器允許PPTP隧道維持到PPTP伺服器的流量。

該篩選器允許資料通過PPTP隧道傳到PPTP伺服器。

該篩選器僅在×××伺服器在路由器到路由器的×××連接配接中充當調用路由器(一個×××用戶端)時才是必需的。 該篩選器應該僅和×××伺服器的周邊網絡接口上推薦的IP包篩選器結合使用。

=============================================================

PPTP控制連接配接建立

PPTP控制連接配接通過以下步驟建立:

1.

TCP連接配接由PPTP客戶機上的一個動态配置設定的TCP端口到PPTP伺服器上的TCP端口1723建立。

2.

PPTP用戶端發送一條PPTP Start-Control-Connection-Request(開始控制連接配接請求)消息,後者将用于建立一個PPTP控制連接配接。

3.

PPTP伺服器使用一條PPTP Start-Control-Connection-Reply(開始控制連接配接應答)消息予以響應。

4.

PPTP用戶端發送一條PPTP Outgoing-Call-Request(傳出調用請求)消息,并選擇一個調用ID,識别用于将資料從PPTP用戶端發送到PPTP伺服器的PPTP隧道。PPTP用戶端使用PPTP Outgoing-Call-Request消息從PPTP伺服器請求一個PPTP隧道(也稱為調用)。

5.

PPTP伺服器發送一條PPTP Outgoing-Call-Reply(傳出調用應答)消息,并選擇自身的調用ID,識别将資料從PPTP伺服器發送到PPTP用戶端的PPTP隧道。

6.

PPTP用戶端發送一條PPTP Set-Link-Info(設定鍊路資訊)消息來指定PPTP協商選項。

PPTP控制連接配接建立過程的最終結果如下:

• PPTP伺服器已允許建立一個PPTP隧道。

• PPTP用戶端已确定了在通過PPTP隧道向PPTP伺服器發送資料時在GRE報頭中使用的調用ID。

• PPTP伺服器已确定了在通過PPTP隧道向PPTP用戶端發送資料時在GRE報頭中使用的調用ID

=================================================================

PPTP資料封裝

在建立PPTP控制連接配接之後,資料就可以在PPTP用戶端和PPTP伺服器之間發送了。 通過PPTP連接配接發送的第一個資料包将用于建立PPP連接配接。

資料包首先被加密并使用一個PPP報頭進行封裝。 所得到PPP幀将使用一個通用路由封裝(GRE)報頭進行封裝,該報頭已針對PPTP修改過。 然後,GRE封裝的PPP幀使用一個IP報頭進行封裝,這個報頭包含對應于PPTP隧道端點的源和目标IP位址。

經過修改應用于PPTP資料包的GRE報頭具有如下圖所示的結構。 最初的GRE報頭在RFC 1701中有所定義。

cg010302.gif (25.65 KB)

2006-5-23 20:43

修改過的GRE報頭中的字段如下:

• Checksum Present 一個1位标志,當設定為1時,表示提供了一個Checksum字段。對于PPTP,該标志總被設為0。

• Routing Present 一個1位标志,當設定為1時,表示提供了一個Routing字段。對于PPTP,該标志總被設為0。

• Key Present 一個1位标志,當設定為1時,表示提供了一個Key字段。對于PPTP,該标志總被設為1。Key字段是Protocol Type、Payload Length和Call ID字段的組合。

• Sequence Number Present 一個1位标志,當設定為1時,表示提供了Sequence Number字段。

• Strict Source Route Present 一個1位标志,當設定為1時,表示提供了一個“嚴格源路由”。對于PPTP,該标志總被設定為0。

• Recursion Control 一個用于遞歸的3位标志。對于PPTP,該字段總被設為0。

• Acknowledgement Number Present 一個1位标志,當設定為1時,表示提供了Acknowledgement Number字段。

• Flags 一個用于GRE标志的4位字段。對于PPTP,該字段總被設為0。

• Version 一個用于表示GRE報頭版本的3位字段。對于PPTP,該字段總被設為1。

• Protocol Type 一個用于存儲GRE有效負載(payload)的EtherType值的16位字段。對于PPTP,該字段總被設為0x880B,即PPP幀的EtherType值。

• Payload Length 一個用于表示GRE有效負載長度的16位字段。

• Call ID 一個用于表示這個包的PPTP隧道的16位字段。對于PPTP連接配接,Call ID字段有兩個不同的值。 一個值用于PPTP用戶端發送的資料,另一個值用于PPTP伺服器發送的資料。

• Sequence Number 一個用于表示這個資料包的序列号的32位字段。該字段僅在Sequence Number Present标志被設定為1時才提供。

• Acknowledgement Number 一個32位字段,用于表示這個隧道接收的某個GRE封裝的資料包的最高序列号。 這個字段僅在Acknowledgement Number Present标志被設定為1時才提供。

PPTP使用Sequence Number和Acknowledgement Number字段檢測被丢棄的資料包。

對PPTP資料封裝使用一種單獨的機制給網絡位址轉換(NAT)帶來了一個有趣的副作用。 關于NAT的更多資訊,請參見“Windows 2000 網絡位址轉換器(NAT)”(Cable Guy于2001年3月發表的文章)。 大多數NAT都能夠轉換基于TCP的流量來維持隧道。然而,具有GRE報頭的PPTP資料包通常不是使用靜态位址映射或PPTP NAT編輯器來轉換的。

當PPTP伺服器位于NAT後方時,必須手動地将該NAT配置為使用靜态位址映射,即把某個特定的公共位址的所有流量映射到某個特定的專用位址。 在這種情況下,隻有IP報頭中的位址才會被修改。

當PPTP用戶端位于NAT後方時,通常會使用一個PPTP NAT編輯器。 NAT編輯器是NAT上的一個附加軟體元件,用于執行除IP位址、TCP端口和UDP端口之外的轉換服務。 雖然使用PPTP NAT編輯器來監視GRE有效載載的傳入資料包并轉換IP報頭中的IP位址是一件簡單的事情,但是在NAT後方可能會有多個PPTP用戶端。 在這種情況下,該NAT無法确定應該将傳入的PPTP包發送給哪個專用用戶端,因為多個專用用戶端使用了相同的公共位址。為了确定應該向其發送傳入資料包的專用用戶端,PPTP NAT編輯器在GRE報頭中使用了一個調用(Call)ID。 然而,當兩個不同的PPTP用戶端使用相同的調用 ID時,NAT就無法确定應該将包發送給哪個專用用戶端。

為了給不同的專用用戶端提供GRE封裝的流量的正确多路複用,PPTP NAT編輯器監控PPTP控制連接配接設定,并以轉換TCP或UDP源端口的相同方式,同時轉換PPTP消息和GRE封裝的資料包中的PPTP用戶端調用 ID字段。通過轉換PPTP用戶端調用 ID字段,NAT確定了對每個PPTP隧道和每個PPTP用戶端使用一個唯一的調用 ID。

PPTP控制連接配接維持

為了維持PPTP控制連接配接,PPTP用戶端每隔60秒發送一條PPTP Echo Request(回送請求)消息,不管PPTP用戶端和伺服器之間是否正在發送GRE封裝的資料。在接收到PPTP Echo Request消息時,PPTP伺服器将發送一條PPTP Echo Reply(回送應答)消息。PPTP Echo Request消息包含一個Identifier字段,該字段的值将在PPTP Echo Reply消息中回顯,以便PPTP用戶端能夠将PPTP Echo Request與其應答相比對。

==================================================================

PPTP控制連接配接終止

為了終止PPTP連接配接,PPP連接配接、PPTP協定連接配接和TCP連接配接必須全部終止。 當PPTP用戶端終止PPTP連接配接時,将會交換如下資料包:

PPTP用戶端發送一條PPTP Set-Link-Info消息來指定鍊路的PPP參數。

PPTP用戶端發送一條Link Control Protocol (LCP) Terminate-Request消息來終止PPP連接配接。 LCP是PPP協定族中的一種協定,它管理邏輯PPP連接配接的配置和維護。

PPTP伺服器發送一條PPTP Set-Link-Info消息來指定鍊路的PPP參數。

PPTP伺服器發送LCP Terminate-Ack消息來響應LCP Terminate-Request消息,進而終止PPP連接配接。

PPTP用戶端發送一條PPTP Clear-Call-Request消息,向PPTP伺服器表示PPTP控制連接配接即将終止。

PPTP伺服器使用一條PPTP Call-Disconnected-Notify消息進行響應。

7.

PPTP用戶端發送一條PPTP Stop-Control-Connection-Request消息來終止PPTP控制連接配接。

8.

PPTP伺服器使用一條PPTP Stop-Control-Connection-Reply消息進行響應。

9.

TCP連接配接終止。

如果PPTP伺服器要終止連接配接,所交換的消息是相同的,隻要将上述過程中的PPTP用戶端替換成了PPTP伺服器即可(反之亦然)。

================================================================

繼續閱讀