{{위키데이터 속성 추적}}
{{IP스택}}
[[컴퓨터 네트워크|컴퓨터 네트워킹]]에서 '''계층 2 터널링 프로토콜'''({{Llang|en|Layer 2 Tunneling Protocol}}, '''L2TP''')는 [[가상사설망|가상 사설망]](VPN)을 지원하거나 ISP에서 제공하는 서비스의 일부로 사용되는 터널링 프로토콜이다. 자체 제어 메시지(선택 사항인 사전 공유 비밀 사용)에 대해서만 암호화('숨김')를 사용하며 자체적으로 콘텐츠의 [[암호화]] 또는 기밀성을 제공하지 않는다. 그보다는 계층 2(암호화될 수 있음)에 대한 터널을 제공하고 터널 자체는 [[IPsec]]과 같은 계층 3 암호화 프로토콜을 통해 제공될 수 있다.<ref>IETF (1999), RFC 2661, Layer Two Tunneling Protocol "L2TP"</ref>

== 역사 ==
제안된 표준 RFC 2661 로 2000년에 게시된 L2TP는 주로 점대점 통신을 위한 두 가지 이전 터널링 프로토콜인 [[시스코 시스템즈|Cisco]]의 Layer 2 Forwarding Protocol(L2F) 및 [[마이크로소프트|Microsoft]]의   [[점대점 터널링 프로토콜]](PPTP)에서 기원했다. 이 프로토콜의 새 버전인 L2TPv3은 2005년에 제안된 표준 RFC 3931 로 나타났다. L2TPv3은 추가 보안 기능, 향상된 캡슐화 및 [[인터넷 프로토콜 스위트|IP 네트워크]](예: [[프레임 릴레이]], [[이더넷]], [[비동기 전송 방식|ATM]] 등)를 통해 단순한 [[점대점 프로토콜]](PPP) 이외의 데이터 링크를 전달하는 기능을 제공한다.

== 설명 ==
[[페이로드 (컴퓨팅)|페이로드]] 및 L2TP 헤더를 포함한 전체 L2TP 패킷은 [[사용자 데이터그램 프로토콜]](UDP) 데이터그램 내에서 전송된다. UDP(TCP가 아닌)를 통한 전송의 장점은 "TCP 멜트다운 문제"를 피할 수 있다는 것이다.<ref>{{웹 인용|url=http://sites.inka.de/bigred/devel/tcp-tcp.html|제목=Why TCP Over TCP Is A Bad Idea|성=Titz|이름=Olaf|날짜=2001-04-23|확인날짜=2015-10-17}}</ref>  L2TP 터널 내에서 PPP 세션을 전달하는 것이 일반적이다. L2TP는 자체적으로 기밀성 또는 강력한 인증을 제공하지 않는다. [[IPsec]]은 기밀성, 인증 및 무결성을 제공하여 L2TP 패킷을 보호하는 데 자주 사용된다. 이 두 프로토콜의 조합은 일반적으로 L2TP/IPsec로 알려져 있다(아래에서 설명).

L2TP 터널의 두 끝점을 L2TP access concentrator(LAC) 및 L2TP 네트워크 서버(LNS)라고 한다. LNS는 새 터널을 기다린다. 터널이 생성되면 피어 간의 네트워크 트래픽은 쌍방향이다. 네트워킹에 유용하기 위해 상위 수준 프로토콜이 L2TP 터널을 통해 실행된다. 이를 용이하게 하기 위해 L2TP ''세션''은 PPP와 같은 각 상위 수준 프로토콜에 대한 터널 내에서 생성된다. LAC 또는 LNS가 세션을 시작할 수 있다. 각 세션의 트래픽은 L2TP에 의해 격리되므로 단일 터널에 여러 가상 네트워크를 설정할 수 있다.

L2TP 터널 내에서 교환되는 패킷은 ''제어 패킷'' 또는 ''데이터 패킷''으로 분류된다. L2TP는 제어 패킷에 대한 신뢰성 기능을 제공하지만 데이터 패킷에 대한 신뢰성은 제공하지 않는다. 신뢰성은 원하는 경우 L2TP 터널의 각 세션 내에서 실행되는 중첩 프로토콜에 의해 제공되어야 한다.

L2TP는 Virtual Private Dialup Network(VPDN)<ref>[http://www.cisco.com/en/US/tech/tk801/tk703/technologies_tech_note09186a0080094586.shtml Cisco Support: Understanding VPDN – Updated Jan 29, 2008]</ref>을 생성하여 인터넷 또는 서비스 제공업체의 네트워크일 수 있는 공유 인프라를 사용하여 원격 클라이언트를 회사 네트워크에 연결할 수 있도록 한다.

== 터널링 모델 ==
L2TP 터널은 전체 PPP 세션 또는 두 세그먼트 세션의 한 세그먼트에서만 확장할 수 있다. 이것은 다음과 같은 네 가지 터널링 모델로 나타낼 수 있다.

* voluntary tunnel
* compulsory tunnel — incoming call
* compulsory tunnel — remote dial
* L2TP multihop connection<ref>[http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzaiy%2Frzaiymultihop.htm IBM Knowledge Center: L2TP multi-hop connection]</ref>

== L2TP 패킷 구조 ==
L2TP 패킷은 다음으로 구성된다. :
{| class="wikitable" style="text-align:center"
! style="width:20em" |Bits 0–15
! style="width:20em" | Bits 16–31
|-
| Flags and Version Info
| Length (opt)
|-
| Tunnel ID
| Session ID
|-
| Ns (opt)
| Ns (opt)
|-
| Offset Size (opt)
| Offset Pad (opt)......
|-
| colspan="2" | Payload data
|}
필드 의미:

; Flags and version
: 데이터/제어 패킷 및 길이, 시퀀스 및 오프셋 필드의 존재를 나타내는 제어 플래그.
; Length (optional)
: 길이 플래그가 설정된 경우에만 표시되는 메시지의 총 길이(바이트).
; Tunnel ID
: 제어 연결의 식별자를 나타낸다.
; Session ID
: 터널 내 세션의 식별자를 나타낸다.
; Ns (optional)
: 이 데이터 또는 제어 메시지의 시퀀스 번호로, 0에서 시작하여 전송된 각 메시지에 대해 1(modulo 2<sup>16</sup> )씩 증가한다. 시퀀스 플래그가 설정된 경우에만 표시된다.
; Nr (optional)
: 수신될 것으로 예상되는 메시지의 시퀀스 번호다. Nr은 수신된 마지막 순서 메시지의 N에 1(modulo 2 <sup>16</sup> )을 더한 값으로 설정된다. 데이터 메시지에서 Nr은 예약되어 있으며 존재하는 경우(S 비트로 표시됨) 수신 시 무시되어야 한다.. .
; Offset Size (optional)
: 페이로드 데이터가 L2TP 헤더를 지나 위치해있다. 오프셋 필드가 있는 경우 L2TP 헤더는 오프셋 패딩의 마지막 바이트 이후에 끝난다. 오프셋 플래그가 설정된 경우 이 필드가 존재한다.
; Offset Pad (optional)
: 오프셋 크기로 지정된 가변 길이. 이 필드의 내용은 정의되지 않는다.
; Payload data
: 가변 길이(최대 페이로드 크기 = UDP 패킷의 최대 크기 - L2TP 헤더 크기)

== L2TP 패킷 교환 ==
L2TP 연결 설정 시, 서버와 클라이언트 간에 많은 제어 패킷을 교환하여 각 방향에 대한 터널 및 세션이 교환된다. 한 피어는 다른 피어에게 이러한 제어 패킷을 통해 특정 터널 및 세션 ID를 할당하도록 요청한다. 그런 다음 이 터널과 세션 ID를 사용하여 데이터 패킷을 압축된 PPP 프레임과 페이로드로 교환한다.

자의적 터널링 방식에서 터널 및 세션을 설정하기 전에 핸드셰이킹을 위해 LAC와 LNS 간에 교환되는 L2TP 제어 메시지 목록은 다음과 같다.

[[파일:L2TP_packet_exchange.svg]]

== L2TP/IPsec ==
L2TP 프로토콜 고유의 기밀성이 없기 때문에 종종 [[IPsec]]과 함께 구현된다. 이것은 L2TP/IPsec이라고 하며 [[국제 인터넷 표준화 기구|IETF]] RFC 3193 에서 표준화되었다. L2TP/IPsec VPN을 설정하는 과정은 다음과 같다.

# 일반적으로 ''인터넷 키 교환''(IKE)을 통해 IPsec [[보안 연관|보안 연결]](SA) 협상. 이것은 UDP 포트 500을 통해 수행되며 다른 keying 방법이 존재하지만 일반적으로 공유 암호(소위 " 사전 공유 키 "), 공개 키 또는 [[X.509]] 인증서를 양쪽 끝에서 사용한다.
# 전송 모드에서 [[IPsec|Encapsulating Security Payload]](ESP) 통신 설정. ESP의 IP 프로토콜 번호는 50이다(TCP의 6과 UDP의 17 비교). 이 시점에서 보안 채널이 설정되었지만 터널링은 발생하지 않는다.
# SA 끝점 간의 L2TP 터널 협상 및 설정. 매개변수의 실제 협상은 IPsec 암호화 내에서 SA의 보안 채널을 통해 위치해 있다. L2TP는 UDP 포트 1701을 사용한다.

프로세스가 완료되면, 끝점 간의 L2TP 패킷이 IPsec에 의해 캡슐화 된다. L2TP 패킷 자체는 IPsec 패킷 내에 래핑되고 숨겨져 있기 때문에 원래 소스 및 대상 IP 주소는 패킷 내에서 암호화된다. 또한 끝점 사이의 방화벽에서 UDP 포트 1701을 열 필요가 없다. 끝점에서만 발생하는 IPsec 데이터가 해독되고 제거될 때까지 내부 패킷이 작동하지 않기 때문이다.

L2TP/IPsec에서 잠재적인 혼동 지점은 '''터널''' 및 '''보안 채널'''이라는 용어의 사용이다. '''터널 모드'''라는 용어는 한 네트워크의 변경되지 않은 패킷이 다른 네트워크를 통해 전송되도록 하는 채널을 나타낸다. L2TP/PPP의 경우, L2TP/PPP 패킷이 IP를 통해 전송되도록 한다. '''보안 채널'''은 모든 데이터의 기밀성이 보장되는 연결을 의미한다. L2TP/IPsec에서 먼저 IPsec은 보안 채널을 제공하고 L2TP는 터널을 제공한다. IPsec은 또한 터널 프로토콜을 지정한다. 이것은 L2TP 터널이 사용될 때 사용되지 않는다.

== Windows 구현 ==
Windows는 [[윈도우 2000|Windows 2000]]부터 L2TP에 대한 기본 지원(제어판에서 구성 가능)을 가지고 있다. [[윈도우 비스타|Windows Vista]]에는 "고급 보안이 포함된 Windows 방화벽"(WFwAS)이라는 [[마이크로소프트 관리 콘솔|MMC 스냅인]]과 " [[netsh]] advfirewall" 명령줄 도구라는 두 가지 대체 도구가 추가되었다. WFwAS 및 netsh 명령 모두의 한 가지 제한 사항은 서버를 IP 주소로 지정해야 한다는 것이다. [[윈도우 10|Windows 10]]에는 " [https://docs.microsoft.com/en-us/powershell/module/vpnclient/add-vpnconnection?view=win10-ps Add-VpnConnection] " 및 " [https://docs.microsoft.com/en-us/powershell/module/vpnclient/set-vpnconnectionipsecconfiguration?view=win10-ps Set-VpnConnectionIPsecConfiguration] " [[파워셸|PowerShell]] 명령이 추가되었다. 서버가 NAT-T 장치 뒤에 있는 경우 클라이언트와 서버에서 레지스트리 키를 만들어야 한다. [https://support.microsoft.com/en-us/help/926179/how-to-configure-an-l2tp-ipsec-server-behind-a-nat-t-device-in-windows]

== ISP의 네트워크의 L2TP ==
L2TP는 예를 들어 [[비대칭 디지털 가입자 회선|ADSL]] 또는 케이블을 통한 인터넷 서비스가 ''재판매'' 될 때 ISP가 자주 사용한다. 최종 사용자로부터 패킷은 도매 네트워크 서비스 공급자의 네트워크를 통해 프로토콜 변환기와 라우터가 결합된 Broadband Remote Access Server(BRAS)라고 불리는 서버로 이동한다. 레거시 네트워크에서 최종 사용자 고객 구내 장비에서 BRAS까지의 경로는 [[비동기 전송 방식|ATM]] 네트워크를 통할 수 있다. 거기서부터 IP 네트워크를 통해 L2TP 터널이 BRAS(LAC 역할)에서 최종 목적지 ISP의 IP 네트워크 경계에 있는 edge router인 LNS까지 실행된다. [http://www.kitz.co.uk/adsl/equip2.htm L2TP를 사용하는 리셀러 ISP의 예를] 참조바란다.

== RFC 참조 ==
* {{IETF RFC|2341}} ''Cisco Layer Two Forwarding (Protocol) "L2F"'' (a predecessor to L2TP)
* {{IETF RFC|2637}} ''Point-to-Point Tunneling Protocol (PPTP)''
* {{IETF RFC|2661}} ''Layer Two Tunneling Protocol "L2TP"''
* {{IETF RFC|2809}} ''Implementation of L2TP Compulsory Tunneling via RADIUS''
* {{IETF RFC|2888}} ''Secure Remote Access with L2TP''
* {{IETF RFC|3070}} ''Layer Two Tunneling Protocol (L2TP) over Frame Relay''
* {{IETF RFC|3145}} ''L2TP Disconnect Cause Information''
* {{IETF RFC|3193}} ''Securing L2TP using [[IPsec]]''
* {{IETF RFC|3301}} ''Layer Two Tunneling Protocol (L2TP): ATM access network''
* {{IETF RFC|3308}} ''Layer Two Tunneling Protocol (L2TP) Differentiated Services''
* {{IETF RFC|3355}} ''Layer Two Tunneling Protocol (L2TP) Over ATM Adaptation Layer 5 (AAL5)''
* {{IETF RFC|3371}} ''Layer Two Tunneling Protocol "L2TP" Management Information Base''
* {{IETF RFC|3437}} ''Layer Two Tunneling Protocol Extensions for PPP Link Control Protocol Negotiation''
* {{IETF RFC|3438}} ''Layer Two Tunneling Protocol (L2TP) Internet Assigned Numbers: Internet Assigned Numbers Authority (IANA) Considerations Update''
* {{IETF RFC|3573}} ''Signaling of Modem-On-Hold status in Layer 2 Tunneling Protocol (L2TP)''
* {{IETF RFC|3817}} ''Layer 2 Tunneling Protocol (L2TP) Active Discovery Relay for PPP over Ethernet (PPPoE)''
* {{IETF RFC|3931}} ''Layer Two Tunneling Protocol - Version 3 (L2TPv3)''
* {{IETF RFC|4045}} ''Extensions to Support Efficient Carrying of Multicast Traffic in Layer-2 Tunneling Protocol (L2TP)''
* {{IETF RFC|4951}} ''Fail Over Extensions for Layer 2 Tunneling Protocol (L2TP) "failover"''

== 같이 보기 ==
* [[IPsec]]
* [[점대점 터널링 프로토콜|지점간 터널링 프로토콜]]
* [[점대점 프로토콜|지점간 프로토콜]]

== 각주 ==
{{각주}}

== 외부 링크 ==
=== 구현 ===
* Cisco: [https://web.archive.org/web/20090127060833/http://cisco.com/en/US/docs/ios/12_0t/12_0t1/feature/guide/l2tpT.html Cisco L2TP 설명서], [http://www.cisco.com/warp/public/cc/pd/iosw/tech/l2pro_tc.htm Cisco의 기술 요약] 도 읽어보세요.
* 오픈 소스 및 Linux: [http://www.xelerance.com/software/xl2tpd/ xl2tpd] {{웨이백|url=http://www.xelerance.com/software/xl2tpd/ |date=20100923200102 }}, [http://sourceforge.net/projects/rp-l2tp/ Linux RP-L2TP], [http://sourceforge.net/projects/openl2tp/ OpenL2TP], [http://l2tpns.sourceforge.net/ l2tpns], [http://sourceforge.net/projects/l2tpd/ l2tpd] (비활성), [http://www.zeroshell.net/eng/vpndetails/ Linux L2TP/IPsec 서버] {{웨이백|url=http://www.zeroshell.net/eng/vpndetails/ |date=20120716041436 }}, [http://mpd.sourceforge.net/ FreeBSD 다중 링크 PPP 데몬], [http://bxr.su/OpenBSD/usr.sbin/npppd/ OpenBSD npppd(8)], [http://accel-ppp.sourceforge.net/ ACCEL-PPP - PPTP/L2TP 서버 리눅스용]
* Microsoft: Windows 2000 이상에 포함된 내장 클라이언트; Windows 98/Windows Me/Windows NT 4.0용 [http://www.microsoft.com/technet/prodtechnol/windows2000serv/support/vpnclientag.mspx Microsoft L2TP/IPsec VPN 클라이언트]
* Apple: Mac OS X 10.3 이상에 포함된 내장 클라이언트.
* [http://www.cisco.com/en/US/tech/tk801/tk703/tsd_technology_support_protocol_home.html Cisco.com의 VPDN]

=== 기타 ===
* [https://www.iana.org/assignments/l2tp-parameters L2TP용 IANA 할당 번호]
* [https://web.archive.org/web/20041207084942/http://www.ietf.org/html.charters/l2tpext-charter.html L2TP Extensions Working Group(l2tpext)] - ''(향후 표준화 작업이 조정되는 곳)''
* [http://www.jacco2.dds.nl/networking/linux-l2tp.html Linux를 L2TP/IPsec VPN 클라이언트로 사용]
* [http://undeadly.org/cgi?action=article&sid=20120427125048&mode=expanded&count=3 OpenBSD 및 npppd가 있는 L2TP/IPSec]
* [https://www.ivpn.net/pptp-vs-l2tp-vs-openvpn L2TP, PPTP 및 OpenVPN의 비교]

{{가상사설망}}
{{전거 통제}}

[[분류:가상사설망]]
[[분류:터널링 프로토콜]]
[[분류:인터넷 표준]]
[[분류:인터넷 프로토콜]]