지점간 터널링 프로토콜
지점간 터널링 프로토콜(PPTP)은 지점간 프로토콜(PPP) 프레임을 인터넷이나 개인 인트라넷과 같은 IP 기반 인터네트워크를 통해 전달하기 위해 IP 데이터그램으로 캡슐화합니다.
참고 PPTP에 대한 자세한 내용은 "pptp-draft-ietf-ppext-pptp-x.txt"라는 인터넷 시험 출력, "지점간 터널링 프로토콜"에 설명되어 있습니다. 여기서 x는 시험 출력의 현재 버전을 나타냅니다. 이 인터넷 시험 출력은 Microsoft Corporation, Ascend Communications, 3Com, ECI Telematics, US Robotics(현재는 3Com) 등의 PPTP 포럼 회사가 인터넷 Engineering Task Force(IETF)에 제출한 것입니다. 인터넷 시험 출력 문서는 계속 단계 중입니다. 인터넷 시험 출력 복사본은www.ietf.org 에서 얻을 수 있습니다.
PPTP는 터널을 만들고 관리하고 종료할 수 있는 TCP 연결(PPTP 컨트롤 프로토콜로 알려짐)과 PPP 프레임을 터널링된 데이터로 캡슐화할 수 있게 수정된 일반 라우팅 캡슐화(GRE) 버전을 사용합니다. 캡슐화된 PPP 프레임의 페이로드를 암호화하거나 압축할 수 있습니다.
PPTP는 PPTP 클라이언트(PPTP 터널링 프로토콜을 사용하는 터널 클라이언트)와 PPTP 서버(PPTP 터널링 프로토콜을 사용하는 터널 서버) 간에 IP 인터네트워크를 사용할 수 있다고 가정합니다. PPTP 클라이언트가 PPTP 서버에 도달할 수 있는 IP 인터네트워크에 연결되어 있거나 전화 접속 인터넷 사용자처럼 PPTP 클라이언트가 네트워크 액세스 서버(NAS)에 전화를 걸어 IP를 연결해야 합니다.
PPTP 기반 VPN 연결을 만들 때 발생하는 인증은 확장할 수 있는 인증 프로토콜(EAP), Microsoft Challenge-Handshake 인증 프로토콜(MS-CHAP), CHAP, Shiva 암호 인증 프로토콜(SPAP), 암호 인증 프로토콜(PAP) 등의 PPP 연결과 같은 인증 장치를 사용합니다. PPTP는 PPP에서 PPP 페이로드 암호화와 압축 가운데 하나 또는 둘 다를 받습니다. Windows NT 4.0의 경우에는 Microsoft 지점간 암호화(MPPE)를 사용하여 PPP 페이로드를 암호화하려면 EAP 전송 수준 보안(EAP-TLS)이나 MS-CHAP를 사용해야 합니다.
MPPE는 링크 암호화만 제공하며 끝간 암호화는 제공하지 않습니다. 끝간 암호화란 클라이언트 응용 프로그램과 클라이언트 응용 프로그램에서 액세스하는 리소스나 서비스를 주관하는 서버 간의 데이터 암호화를 말합니다.
인트라넷 기반 PPTP 서버에서 PPTP 서버는 인터넷과 인트라넷에 각각 하나의 인터페이스가 있는 PPTP 사용 VPN 서버입니다.
PPTP 컨트롤 연결로 터널 유지 관리
PPTP 컨트롤 연결은 동적으로 할당된 TCP 포트를 사용하는 PPTP 클라이언트의 IP 주소와 예약된 TCP 포트 1723을 사용하는 PPTP 서버의 IP 주소 사이에 있습니다. PPTP 컨트롤 연결은 PPTP 호출을 조정하고 PPTP 터널을 유지 관리할 때 사용되는 메시지를 관리합니다. 여기에는 PPTP 클라이언트와 PPTP 서버 간에 연결 실패를 감지하기 위한 정기적인 PPTP Echo_Request와 PPTP Echo_Reply 메시지 전송이 포함됩니다. PPTP 컨트롤 연결 패킷은 그림 7과 같이 IP 머리글, TCP 머리글 및 PPTP 컨트롤 메시지로 구성됩니다. 그림 7의 PPTP 컨트롤 연결 패킷에는 데이터 링크 계층 머리글과 트레일러도 들어 있습니다.
그림 7 PPTP 컨트롤 연결 패킷
표 1은 PPTP 컨트롤 연결을 통해 보내는 기본 PPTP 컨트롤 메시지 목록입니다. 모든 PPTP 컨트롤 메시지에서 특정 PPTP 터널은 TCP 연결로 식별됩니다.
표 1 PPTP 호출 컨트롤 및 연결 관리 메시지
메시지 종류 | 목 적 |
---|---|
시작 컨트롤 연결 요청(Start-Control-Connection-Request) | PPTP 클라이언트가 컨트롤 연결을 만들기 위해 보냅니다. PPTP 터널마다 다른 PPTP 메시지가 발급되기 전에 컨트롤 연결을 만들어야 합니다. |
시작 컨트롤 연결 응답(Start-Control-Connection-Reply) | PPTP 서버가 시작 컨트롤 연결 요청 메시지에 대한 응답으로 보냅니다. |
나가는 호출 요청(Outgoing-Call-Request) | PPTP 클라이언트가 PPTP 터널을 만들기 위해 보냅니다. 나가는 호출 요청 메시지에는 GRE 머리글에서 특정 터널의 터널링된 소통을 식별하기 위해 사용되는 호출 ID가 들어 있습니다. |
나가는 호출 응답(Outgoing-Call-Reply) | PPTP 서버가 나가는 호출 요청 메시지에 대한 응답으로 보냅니다. |
에코 요청(Echo-Request) | PPTP 클라이언트나 PPTP 서버에 의해서 연결 확인 메커니즘처럼 보내집니다. 에코 요청에 응답이 없으면 PPTP 터널이 종료됩니다. |
에코 응답(Echo-Reply) | 참고 PPTP 에코 요청과 에코 응답 메시지는 ICMP 에코 요청 및 에코 응답 메시지와 관련이 없습니다. |
WAN 오류 알림(WAN-Error-Notify) | PPTP 서버가 PPTP 서버의 PPP 인터페이스 오류 상태를 나타내기 위해 모든 VPN 클라이언트에게 보냅니다. |
링크 설정 정보(Set-Link-Info) | PPTP 클라이언트나 PPTP 서버가 PPP 협상 옵션을 설정하기 위해 보냅니다. |
호출 지우기 요청(Call-Clear-Request) | 터널이 종료된다는 것을 알리기 위해 PPTP 클라이언트가 보냅니다. |
호출 끊기 알림(Call-Disconnect-Notify) | 호출 지우기 요청에 대한 응답이나 터널이 종료됨을 알리기 위해 PPTP 서버가 보냅니다. PPTP 서버가 터널을 종료하면 호출 끊기 알림을 보냅니다. |
중지 컨트롤 연결 요청(Stop-Control-Connection-Request) | PPTP 클라이언트나 PPTP 서버가 컨트롤 연결이 종료되고 있음을 알려 주기 위해 보냅니다. |
중지 컨트롤 연결 응답(Stop-Control-Connection-Reply) | 중지 컨트롤 연결 요청 메시지에 대한 응답에 사용됩니다. |
PPTP 컨트롤 연결 메시지의 정확한 구조를 보려면 PPTP 인터넷 시험 출력을 참고하십시오.
PPTP 데이터 터널링
PPTP 데이터 터널링은 여러 수준의 캡슐화를 통해 수행됩니다.
그림 8은 PPTP 터널링된 데이터의 구조를 나타냅니다.
그림 8 PPTP 터널링된 데이터
PPP 프레임 캡슐화
초기 PPP 페이로드가 PPP 프레임을 만들기 위해 암호화되거나 PPP 머리글로 캡슐화됩니다. 그러면 PPP 프레임이 수정된 GRE 머리글로 캡슐화됩니다. GRE는 IP 인터네트워크를 통해 보낸 데이터를 캡슐화하기 위한 단순하고 보잘 것 없는 일반 목적의 장치를 제공하기 위해 설계되었으며 자세한 내용은 RFC 1701와 RFC 1702에 설명되어 있습니다. GRE는 IP 프로토콜 47을 사용하는 IP 클라이언트 프로토콜입니다.
PPTP의 GRE 머리글은 다음과 같은 방법으로 수정됩니다.
- 승인 비트는 32 비트 승인 필드의 존재와 그 중요성을 나타내기 위해 사용됩니다.
- [키] 필드는 [16비트 페이로드 길이] 필드와 [16비트 호출 ID] 필드로 바뀝니다. [호출 ID] 필드는 PPTP 터널을 만들 때 PPTP 클라이언트가 설정합니다.
- [32비트 승인 필드]가 추가됩니다.
GRE 머리글 안에서 [프로토콜 종류]가 PPP 프레임의 EtherType 값인 0x880B로 설정됩니다.
참고 ISP가 ISP의 네트워크 안에서 라우팅 정보를 전달할 때 GRE를 사용하는 경우가 있습니다. 라우팅 정보가 인터넷 백본 라우터으로 전달되는 것을 방지하기 위해 ISP가 인터넷 백본에 연결된 인터페이스에서 GRE 소통을 필터링합니다. 이 필터링의 결과, PPTP 컨트롤 메시지를 사용하여 PPTP 터널이 만들어지지만 PPTP 터널링된 데이터는 전달되지 않습니다. 이 문제에 대한 의문 사항은 ISP에게 문의하십시오.
GRE 패킷 캡슐화
GRE와 PPP 페이로드를 캡슐화하면 해당 원본과 PPTP 클라이언트 및 PPTP 서버의 대상 IP 주소가 들어 있는 IP 머리글로 캡슐화됩니다.
데이터 링크 계층 캡슐화
LAN이나 WAN 링크로 IP 데이터그램을 보내기 위해 마지막으로 나가는 물리적 인터페이스의 데이터 링크 계층 기술에 대한 머리글과 트레일러로 캡슐화됩니다. 예를 들어, Ethernet 인터페이스에서 IP 데이터그램을 보내면 IP 데이터그램이 Ethernet 머리글과 트레일러로 캡슐화됩니다. 아날로그 전화선이나 ISDN과 같은 지점간 WAN 링크를 통해 IP 데이터그램을 보내면 IP 데이터그램이 PPP 머리글과 트레일러로 캡슐화됩니다.
PPTP 터널링된 데이터 처리
PPTP 터널링된 데이터를 받으면 PPTP 클라이언트나 PPTP 서버는 다음을 수행합니다.
- 데이터 링크 머리글과 트레일러를 처리하고 제거합니다.
- IP 머리글을 처리하고 제거합니다.
- GRE와 PPP 머리글을 처리하고 제거합니다.
- PPP 페이로드(필요한 경우)를 해독, 압축 해제 또는 둘 다를 수행합니다.
- 페이로드를 받거나 전달하기 위해 처리합니다.
PPTP 패킷 및 Windows NT 4.0 네트워킹 아키텍처
그림 9는 터널링된 데이터가 아날로그 모뎀을 사용하여 원격 액세스 VPN 연결로 VPN 클라이언트에서 Windows NT 4.0 네트워킹 아키텍처를 통과하는 경로를 나타냅니다. 다음은 이 과정을 요약한 것입니다.
- 해당 프로토콜이 NDIS를 사용하여 VPN 연결을 나타내는 가상 인터페이스로 IP 데이터그램, IPX 데이터그램, NetBEUI 프레임 등을 제출합니다.
- NDIS가 데이터를 암호화, 압축, 또는 암호화하고 압축하는 NDISWAN로 패킷을 제출하고 [PPP 프로토콜 ID] 필드로만 구성된 PPP 머리글을 제공합니다. [플래그 없음]이나 [프레임 검사 시퀀스(FCS)] 필드를 추가합니다. 이것은 PPP 연결 과정의 링크 컨트롤 프로토콜(LCP) 단계에서 주소와 컨트롤 필드 압축을 협상한다고 가정합니다. PPP 및 LCP에 대한 자세한 내용은 이 설명서의 원격 액세스 서버를 참고하십시오.
- NDISWAN이 데이터를 PPTP 프로토콜 드라이버로 제출하여 PPP 프레임을 GRE 머리글로 캡슐화합니다. GRE 머리글에서 [호출 ID]는 터널을 식별할 수 있는 값으로 설정됩니다.
- 그러면 PPTP 프로토콜 드라이버가 결과 패킷을 TCP/IP 프로토콜 드라이버로 제출합니다.
- TCP/IP 프로토콜 드라이버가 PPTP 터널링된 데이터를 IP 머리글로 캡슐화하고 NDIS를 사용하여 로컬 ISP의 전화 접속 연결을 나타내는 인터페이스로 결과 패킷을 제출합니다.
- NDIS가 PPP 머리글과 트레일러를 제공하는 NDISWAN으로 패킷을 제출합니다.
- NDISWAN가 전화 접속 하드웨어(예를 들면 모뎀 연결을 위한 비동기 포트)를 나타내는 해당 WAN 미니 포트 드라이버로 결과 PPP 프레임을 제출합니다.
그림 9 PPTP 패킷 개발
참고 ISP와 전화 접속 연결을 위해 암호화된 PPP 연결을 협상할 수 있습니다. 이것은 개인 데이터를 보내는 터널링된 PPP 프레임이 암호화되어 있으므로 불필요하며 권장하지 않습니다. 추가 암호화 수준은 필요하지 않으며 성능에 영향을 줄 수 있습니다.