Các gói tin điều khiển được sử dụng trong việc thiết lập, vận hành và xoá bỏ các đường hầm và các cuộc gọi.. 3.1 Các loại thông điệp điều khiển Đối với thông điệp điều khiển thì ở phần
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH
Ngành: CÔNG NGHỆ THÔNG TIN Chuyên Ngành: MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG
Đề Tài: Tìm Hiểu Giao Thức L2TP
MÔN: CHUYÊN ĐỀ 1
Giảng Viên Hướng Dẫn: Nguyễn Đức Quang
Sinh Viên thực hiện:
Dương Minh Chiến 1151020065 01638277155 Minhchien412@gmail.com
Lê Duy An 1151020057 0906903799 Duyantkh@gmail.com
TP Hồ Chí Minh, Năm 2014
Trang 2Mục Lục
L2TP 2
1 Định nghĩa 2
1.1 RFC Liên Quan 2
1.2 Port, layer và tpc/udp 3
2 Công dụng 3
3 Các gói tin L2TP 4
3.1 Các loại thông điệp điều khiển 4
3.2 Cách thức xử lý thông điệp dữ liệu 6
3.3 Cấu trúc gói tin 8
4 Các đường hầm ( tunnel) 10
4.1 Đường hầm bắt buộc L2TP (L2TP Compulsory Tunnel Mode) 10
4.2 Đường hầm tự nguyện L2TP (L2TP Voluntary Tunnel Mode) 12
4.3 L2tp và Ipsec 14
4.4 Nguyên lý hoạt động 16
LAB L2TP 18
I. Mô Hình Giả Lập 18
2 Quá Trình Cài Đặt 19
3 Hình Chụp Lược Đồ Của Gói Tin và Phân Tích Từng Trường Của Gói Tin 32
Trang 3L2TP
1 Định nghĩa
Giao thức đường hầm lớp 2 (Layer 2 Tunneling Protocol - L2TP) là một giao thức tiêu chuẩn được IETF (Internet Engineering Task Force) công nhận Được công bố vào năm 1999 với RFC 2661 Nó kết hợp các đặc điểm tối ưu của 2 giao thức đã có trước đây
là giao thức chuyển tiếp lớp 2 (Layer 2 Forwarding - L2F) của Cisco và giao thức đường hầm điểm-điểm (Point to Point Tunneling Protocol - PPTP) của Microsoft L2TP sử dụng UDP port 500, 1701,4500
L2TP có tất cả các đặc điểm ưu việt của L2F, ngoài ra còn có thêm các đặc điểm khác Một máy có cài đặt L2TP có thể hoạt động với một máy chủ cài đặt L2F cũng như các máy chủ đã được nâng cấp lên chạy L2TP LNS không yêu cầu thiết lập lại cấu hình mỗi khi một LAC nào đó được nâng cấp từ L2F lên L2TP
1.1 RFC Liên Quan
RFC 2341: Cisco Layer Two Forwarding (Protocol) "L2F" (a predecessor to L2TP)
RFC 2637: Point-to-Point Tunneling Protocol (PPTP) (a predecessor to L2TP)
RFC 2661: Layer Two Tunneling Protocol "L2TP"
RFC 2809: Implementation of L2TP Compulsory Tunneling via RADIUS
RFC 2888: Secure Remote Access with L2TP
RFC 3070: Layer Two Tunneling Protocol (L2TP) over Frame Relay
RFC 3145: L2TP Disconnect Cause Information
RFC 3193: Securing L2TP using IPsec
RFC 3301: Layer Two Tunnelling Protocol (L2TP): ATM access network
RFC 3308: Layer Two Tunneling Protocol (L2TP) Differentiated Services
RFC 3355: Layer Two Tunnelling Protocol (L2TP) Over ATM Adaptation Layer
5 (AAL5)
Trang 4 RFC 3371: Layer Two Tunneling Protocol "L2TP" Management Information Base
RFC 3437: Layer Two Tunneling Protocol Extensions for PPP Link Control Protocol Negotiation
RFC 3438: Layer Two Tunneling Protocol (L2TP) Internet Assigned Numbers: Internet Assigned Numbers Authority (IANA) Considerations Update
RFC 3573: Signaling of Modem-On-Hold status in Layer 2 Tunneling Protocol (L2TP)
RFC 3817: Layer 2 Tunneling Protocol (L2TP) Active Discovery Relay for PPP over Ethernet (PPPoE)
RFC 3931: Layer Two Tunneling Protocol - Version 3 (L2TPv3)
RFC 4045: Extensions to Support Efficient Carrying of Multicast Traffic in Layer-2 Tunneling Protocol (L2TP)
RFC 4951: Fail Over Extensions for Layer 2 Tunneling Protocol (L2TP)
"failover"
1.2 Port, layer và tpc/udp
2 Công dụng
L2TP cho phép người dùng từ xa truy cập vào mạng từ xa thông qua mạng công cộng
với một địa chỉ IP chưa đăng ký (hoặc riêng tư)
Quá trình xác nhận và chứng thực của L2TP được thực hiện bởi cổng mạng máy chủ
Do đó, ISP không cần giữ dữ liệu xác nhận hoặc quyền truy cập của người dùng từ xa
Hơn nữa, mạng riêng intranet có thể định nghĩa những chính sách truy cập riêng cho
chính bản thân Điều này làm qui trình xử lý của việc thiết lập đường hầm nhanh hơn so với giao thức tạo hầm trước đây
Trang 5Điểm chính của L2TP tunnels là L2TP thiếp lập đường hầm PPP không giống như PPTP, không kết thúc ở gần vùng của ISP Thay vào đó, những đường hầm mở rộng đến cổng của mạng máy chủ (hoặc đích), những yêu cầu của đường hầm L2TP có thể khởi tạo bởi người dùng từ xa hoặc bởi cổng của ISP
Khi PPP frames được gửi thông qua L2TP đường hầm, chúng được đóng gói như những thông điệp User Datagram Protocol (UDP) L2TP dùng những thông điệp UDP này cho việc tạo hầm dữ liệu cũng như duy trì đường hầm Ngoài ra, đường hầm dữ liệu
và đường hầm duy trì gói tin, không giống những giao thức tạo hầm trước, cả hai có cùng cấu trúc gói dữ liệu
3 Các gói tin L2TP
L2TP có hai loại gói tin: gói tin điều khiển và gói tin dữ liệu Các gói tin điều khiển được sử dụng trong việc thiết lập, vận hành và xoá bỏ các đường hầm và các cuộc gọi Các gói tin dữ liệu được sử dụng để đóng gói các gói tin PPP nhằm vận chuyển qua đường hầm Các gói tin điều khiển được sử dụng một kênh đáng tin cậy để truyền Các gói tin dữ liệu không được truyền lại khi có sự mất mát
3.1 Các loại thông điệp điều khiển
Đối với thông điệp điều khiển thì ở phần header của gói tin T=1
Các loại thông điệp quản lý việc thiết lập điều khiển kết nối:
0 Để dành cho các mục đích tương lai
1 (SCCRQ) Start-Control-Connection-Request (Thông điệp yêu cầu thiết lập điều khiển kết nối)
2 (SCCRP) Start-Control-Connection-Reply (Thông điệp trả lời việc yêu cầu thiết lập điều khiển kết nối)
3 (SCCCN) Start-Control-Connection-Connected (Thông điệp thiết lập điều khiển kết nối)
4 (StopCCN) Stop-Control-Connection-Notification (Thông điệp dừng việc thiết lập điều khiển kết nối)
5 Để dành cho các mục đích tương lai
Trang 66 (HELLO) Hello
Các loại thông điệp quản lý cuộc gọi:
7 (OCRQ) Outgoing-Call-Request (Thông điệp yêu cầu cuộc gọi đi)
8 (OCRP) Outgoing-Call-Reply (Thông điệp trả lời cuộc gọi đi)
9 (OCCN) Outgoing-Call-Connected (Thông điệp kết nối cuộc gọi đi)
10 (OCRQ) Outgoing-Call-Request (Thông điệp yêu cầu cuộc gọi đến)
11 (OCRP) Outgoing-Call-Reply (Thông điệp trả lời cuộc gọi đến)
12 (OCCN) Outgoing-Call-Connected (Thông điệp kết nối cuộc gọi đến)
13 Để dành cho các mục đích tương lai
14 (CDN) Call-Disconnected-Notify (Thông điệp thông báo ngừng các cuộc
gọi)
Báo lỗi:
15 (WEN) WAN-Error-Notify (Thông điệp thông báo lỗi WAN)
Điều khiển phiên làm việc PPP:
16 (SLI) Set-Link-Info (Thông điệp thiết lập liên kết)
Trang 73.2 Cách thức xử lý thông điệp dữ liệu
Tương tự như việc đóng gói PPTP qua đường hầm, gói dữ liệu L2TP cũng trải qua rất nhiều mức đóng gói Các bước đóng gói bao gồm:
- Đóng PPP vào dữ liệu Không giống như việc đóng gói của PPTP, dữ liệu không
được mã hoá trước khi đóng gói Chỉ có duy nhất một PPP header được thêm vào phần
dữ liệu ban đầu
- Đóng gói L2TP các khung PPP Sau khi phần dữ liệu ban đầu được đóng gói vào gói PPP thì một L2TP Header được thêm vào đó
- Đóng gói UDP các khung L2TP Tiếp đó, các gói L2TP được đóng gói thành các
khung UDP Nói cách khác, một UDP header được thêm vào gói L2TP đã đóng gói Địa chỉ nguồn và địa chỉ đích trong UDP header được đặt là 1701 (ngầm định) hoặc khác
- Đóng gói IPSEc các gói UDP Sau khi các khung L2TP được đóng gói theo UDP,
khung UDP kết quả được mã hoá và một IPSec ESP header được thêm vào nó Một IPSec AH trailer (phần đánh lừa) cũng được thêm vào dữ liệu sau khi nó đã được đóng gói và mã hoá
- Đóng gói IP các gói dữ liệu IPSec Tiếp đến, một IP header được thêm vào gói
IPSec vừa nhận được IP header này chứa địa chỉ IP của L2TP server (LNS) và người dùng từ xa
- Đóng gói ở lớp liên kết dữ liệu Cuối cùng, một header ở tầng liên kết dữ liệu được
thêm vào gói IP trên Phần header và trailer của lớp liên kết dữ liệu này giúp cho gói tin đến được nút đích Nếu như nút đích nằm trong mạng cục bộ, các header và trailer này sẽ dựa trên kỹ thuật mạng cục bộ LAN (chẳng hạn, chúng có thể là Ethernet-based) Mặt khác, nếu như nút đích nằm ở xa, một PPP header và trailer sẽ được thêm vào gói tin đã được đóng gói trong đường hầm
Trang 8Hình 3.2a: Quá trình đóng gói gói tin dữ liệu L2TP
Quá trình xử lý gói tin L2TP ở bên nhận ngược với quá trình đóng gói trên Khi một thành phần L2TP (LNS hoặc người dùng cuối) nhận được một gói tin được đóng gói theo L2TP, nó sẽ xử lý gói tin và loại bở phần header và trailer của lớp liên kết dữ liệu Tiếp đến, gói tin được xử lý kỹ hơn và phần IP header được loại bỏ Gói tin dữ liệu sau đó được xác thực bằng cách kiểm tra những thông tin có trong IPSec ESP header và AH trailer IPSec ESP header cũng được sử dụng để giải mã các thông tin đã mã hoá Tiếp đến, UDP header sẽ được xử lý và loại bỏ Các trường Tunnel ID và Call ID trong L2TP header đóng vai trò xác định đường hầm và phiên làm việc L2TP Cuối cùng, PPP header được xử lý và loại bỏ và phần tải PPP (PPP payload) được truyền tới một giao thức phù hợp để xử lý
Trang 9Hình dưới đây mô tả quá trình xử lý gói dữ liệu L2TP ở bên nhận:
Hình 3.2b: Quá trình xử lý gói L2TP ở bên nhận
3.3 Cấu trúc gói tin
Các gói tin điều khiển và dữ liệu của giao thức L2TP có cùng một khuôn dạng cho phần header Có một số trường sẽ được lựa chọn tuỳ thuộc vào loại gói tin Lưu ý rằng các trường chiều dài (Length), Ns, và Nr là các trường tuỳ chọn đối với gói tin dữ liệu, nhưng đối với gói tin điều khiển thì đó là các trường bắt buộc
Trang 10Cấu trúc phần header của gói tin như sau:
Bit T (Type: kiểu) xác định dạng gói tin Nó có giá trị bằng 0 đối với các gói tin dữ liệu và bằng 1 đối với các gói tin điều khiển
Nếu bit L (Length: chiều dài) bằng 1, trường chiều dài sẽ xuất hiện Bit này bắt buộc phải có giá trị bằng 1 đối với các gói tin điều khiển
Các bit X được để dành cho các mở rộng trong tương lai Tất cả các bit để dành phải
có giá trị 0 đối với các cuộc gọi đi và không cần quan tâm đối với các cuộc gọi đến
Khi Bit S (Sequence: dãy số) có giá trị bằng 1 thì các trường Ns và Nr phải xuất hiện Bit này bắt buộc phải có giá trị bằng 1 đối với các gói tin điều khiển
Khi Bit O (Offset) có giá trị bằng 1 thì trường Offset size phải xuất hiện Bit này phải
có giá trị bằng 0 đối với các gói tin điều khiển
Khi bit P (Priority: ưu tiên) bằng 1, gói tin dữ liệu này sẽ nhận được các ưu tiên trong việc xếp hàng và truyền Trong trường hợp này, một yêu cầu LCP được gửi kèm đi cùng gói tin để đảm bảo liên kết luôn luôn được hoạt động Nếu không có LCP, có thể có một lúc nào đó liên kết bị đứt quãng Đặc điểm này chỉ có đối với gói tin dữ liệu Bit P sẽ có giá trị bằng 0 đối với các gói tin điều khiển
Phần Ver phải bằng 2, đây là số Version (phiên bản) của L2TP được đề cập đến trong tài liệu này Giá trị 1 được để dành để dùng trong trường hợp các gói tin L2F đến lẫn với các gói tin L2TP Các gói tin nhận được mà không có trường Ver sẽ bị loại bỏ
Trường chiều dài (Length) mô tả chiều dài của gói tin theo byte
Trang 11Trường số hiệu đường hầm (Tunnel ID) xác định số hiệu của điều khiển kết nối Đường hầm L2TP được đặt tên theo các số hiệu này tuỳ thuộc vào từng khu vực Tức là, cùng một đường hầm có thể được xác định bởi các số hiệu đường hầm khác nhau tuỳ vào mỗi điểm cuối trên đường hầm Tunnel ID trong mỗi gói tin là của người nhận chứ không phải là của người gửi Tunnel ID được lựa chọn và trao đổi khi thiết lập Tunnel ID AVPs trong quá trình tạo ra đường hầm
Trường số hiệu phiên (Session ID) xác định số hiệu phiên làm việc trong một đường hầm Một phiên L2TP được đặt tên theo các số hiệu này tuỳ thuộc vào từng khu vực Tức
là, cùng một phiên có thể được xác định bởi các số hiệu phiên khác nhau tuỳ vào mỗi điểm cuối trên đường hầm Session ID trong mỗi gói tin là của người nhận chứ không phải là của người gửi Session ID được lựa chọn và trao đổi khi thiết lập Session ID AVPs trong quá trình tạo ra một phiên
Trường Ns xác định một dãy số cho các gói tin dữ liệu hoặc điều khiển, bắt đầu bằng
0 và tăng thêm 1 mỗi khi một gói tin được truyền
Trường Nr xác định số trong dãy số đối với gói tin điều khiển tiếp theo chuẩn bị được nhận Do đó, giá trị của Nr bằng giá trị cuối cùng của Ns cộng thêm 1 Trong các gói tin
dữ liệu, trường Nr được để dành và nếu có xuất hiện (được chỉ định bởi bit S) thì cần phải
bỏ qua khi nhận
Trường Offset Size nếu có xuất hiện thì sẽ mô tả số byte được gửi qua L2TP
header tại đó dữ liệu cần truyền được xem là sẽ bắt đầu Thường thì trường Offset Padding (đệm) không xác định Nếu trường Offset Size xuất hiện thì L2TP header kết thúc sau byte cuối cùng của trường Offset Padding
4 Các đường hầm ( tunnel)
4.1 Đường hầm bắt buộc L2TP (L2TP Compulsory Tunnel Mode)
Một đường hầm bắt buộc L2TP được thiết lập giữa một đầu là LAC tại ISP với một đầu khác là LNS tại mạng LAN của người dùng Để có thể hỗ trợ VPN tại ISP, việc thiết lập đường hầm bắt buộc này là rất cần thiết Như vậy, trong trường hợp này ISP đóng
Trang 12một vai trò quan trọng trong việc thiết lập đường hầm L2TP bởi vì một phiên làm việc có thể thực hiện được hay không một phần do ISP quyết định
Hình4.1a: Đường hầm bắt buộc L2TP
Trong trường hợp đường hầm bắt buộc L2TP, một người dùng từ xa thường là một thực thể thụ động Ngoài việc yêu cầu kết nối, người dùng này không đóng bất cứ vai trò nào trong quá trình thiết lập đường hầm Do đó, không cần có bất cứ sự thay đổi nào tại phía người dùng
Nghiên cứu về đường hầm L2TP đặc biệt quan trọng khi xem xét về bảo mật vì người dùng từ xa dùng một kết nối PPP để dial-up đến ISP Kết quả là, người dùng này không thể truy cập Internet trừ khi đi qua gateway của tổ chức họ, điều này cho phép những nhà quản trị mạng có thể thực thi những cơ chế nghiêm ngặt về bảo mật, điều khiển truy cập
và tính toán
Các bước để thiết lập một đường hầm bắt buộc L2TP được mô tả như sau:
- Người dùng từ xa yêu cầu một kết nối PPP từ máy chủ truy cập NAS đặt tại ISP
- NAS xác thực người dùng Quá trình xác thực này cũng giúp cho NAS biết danh tính của người dùng đang yêu cầu kết nối Nếu như định danh của người dùng phù hợp với cơ sở dữ liệu của ISP, những dịch vụ tương ứng với user này sẽ được cung cấp Đồng thời NAS cũng xác định điểm cuối đường hầm LNS
- Nếu NAS đang rỗi để có thể nhận một yêu cầu kết nối, một kết nối PPP được thiết lập giữa ISP với người dùng từ xa
- LAC thiết lập một đường hầm với LNS
Trang 13- Nếu như kết nối đã được LNS chấp nhận, các khung PPP được đưa qua đường hầm L2TP Những khung được đóng gói L2TP này sau đó được gửi đến LNS thông qua đường hầm
- Cuối cùng, LNS xác thực người dùng và chấp nhận các gói dữ liệu Nếu việc xác thực tốt đẹp, một địa chỉ IP thích hợp sẽ được đóng vào khung để sau đó khung này được gửi đến nút đích nằm trong mạng Intranet
Hình 4.1b:Thiết lập một đường hầm bắt buộc L2TP
4.2 Đường hầm tự nguyện L2TP (L2TP Voluntary Tunnel Mode)
Một đường hầm tự nguyện L2TP được thiết lập giữa một người dùng từ xa với một LNS, LNS này được đặt tại LAN Trong trường hợp này, người dùng tư xa hoạt động giống như là một LAC Bởi vì ISP gần như không có vai trò gì trong việc thiết lập đường hầm tự nguyện L2TP cho nên cơ sở vật chất của ISP là trong suốt đối với người dùng đầu cuối Điều này khá giống với đường hầm được tạo ra bởi giao thức PPTP
Trang 14Hình 4.2a: Đường hầm tự nguyện L2TP
Ưu điểm lớn nhất của đường hầm tự nguyện L2Tp là nó cho phép người dùng từ xa
có thể truy cập Internet và thiết lập nhiều phiên làm việc VPN cùng một lúc Tuy nhiên,
để có thể sử dụng những lợi ích này, người dùng từ xa phải được cấp nhiều địa chỉ IP Một trong số các địa chỉ IP sẽ được sử dụng để tạo kết nối PPP đến ISP và mỗi địa chỉ khác được dùng cho một đường hầm L2TP Mặt khác, đây cũng chính là một nhược điểm bởi vì người dùng từ xa, tiếp đó là LAN có thể bị thâm nhập bởi các hacker Thiết lập một đường hầm tự nguyện L2TP thì dễ hơn thiết lập một đường hầm bắt buộc L2TP bởi
vì người dùng từ xa đã tạo nên một kết nối PPP đến ISP Các bước để thiết lập đường hầm tự nguyện L2TP như sau:
- LAC (trong trường hợp này là người dùng từ xa), gửi một yêu cầu thiết lập đường hầm tự nguyện đến LNS
- Nếu như yêu cầu thiết lập đường hầm được chấp nhận bởi LNS, LAC sẽ đưa vào
đường hầm tương ứng của từng L2TP các khung PPP rồi truyền chúng đi
- LNS nhận các khung dữ liệu, tách bỏ các thông tin về đường hầm rồi xử lý chúng
- Cuối cùng, LNS xác thực định danh người dùng và nếu đây là người dùng hợp lệ thì truyền dữ liệu đến nút đích trong mạng LAN
Hình dưới đây mô tả quá trình thiết lập đường hầm tự nguyện L2TP:
Trang 15Hình 4.2b: Thiết lập đường hầm tự nguyện L2TP
4.3 L2tp và Ipsec
Khi chạy trên môi trường ip, ipsec cung cấp dịch vụ bảo mật gói qua esp
hoặc AH Tất cả các gói dữ liệu cũng như điều khiển L2TP của mỗi đường hầm
giống hệt như gói dữ liệu UDP/IP trong hệ ipsec
Nhằm tăng khả năng bảo mật cho việc truyền IP, IPsec xác định một cơ chế
hoạt động cho phép tạo đường hầm các gói IP Việc mã hóa và xác thực ở mức
gói được cung cấp bởi đường hầm IPsec cũng tương đương với những dịch vụ do L2TP cung cấp
IPSEC cũng đòi hỏi các đặc điểm điều khiển truy nhập để có thể hoạt động
Những đặc điểm này cho phép các gói tin liên quan đến các tầng cao hơn như địa
Trang 16chỉ, IP, PORT lọt qua Theo cơ chế đường hầm L2TP, việc đi qua này được xem xét bởi lớp PPP hoặc tầng mạng cao hơn L2TP Các đặc điểm đó được điều khiển bởi LNS thông qua chính sách của người bán, dựa trên việc xác thực PPP cho các user hoặc là tại chính tầng mạng sử dụng phương thức vận chuyển IPsec cho việc giao tiếp giữa các host
Hai hình sau mô tả vai trò IPsec trong việc bảo vệ hai loại đường hầm L2TP:
Hình 4.3.1 Ipsec bảo vệ đường hầm bắt buộc L2TP
Trang 17Hình 4.3.2 Ipsec bảo vệ đường hầm tự nguyện L2TP
- NAS sau đó sẽ kích hoạt LAC, tại LAC chứa các thông tin về LNS ở mạng đích
- Tiếp đó, LAC thiết lập một đường hầm với LNS thông qua môi trường mạng giữa chúng (Internet, Frame Relay, ATM)
- Sau khi đường hầm được thiết lập, LAC cấp cho liên kết một Call ID và gửi một thông điệp xác nhận đến LNS Thông điệp xác nhận này chứa các thông tin có thể được
Trang 18sử dụng để xác thực người dùng từ xa (người yêu cầu khởi tạo đường hầm) Thông điệp này cũng mang LCP đã được thoả thuận giữa người dùng với LAC
- LNS sử dụng những thông tin nhận được từ thông điệp xác nhận để xác thực người dùng từ xa Nếu việc xác nhận thành công và LNS chấp nhận yêu cầu đường hầm, một giao diện PPP ảo (đường hầm L2TP) được thiết lập với sự trợ giúp của LCP nhận được từ gói tin xác nhận
- Người dùng từ xa và LNS sau đó sẽ trao đổi dữ liệu thông qua đường hầm
Hình 4.3a: Quá trình thiết lập đường hầm L2TP