Phân tích cú pháp các tiêu đề tiện ích mở rộng IPv6 có chứa các tiện ích mở rộng không xác định


113

Tôi đang viết một bộ lọc mạng rất đơn giản và đến nơi tôi muốn phân tích cú pháp các tiêu đề IPv6 để phù hợp với những thứ như loại ICMPv6, số cổng TCP / UDP, v.v.

Vì vậy, tôi đang đọc chuyên sâu về định dạng gói IPv6 , và tôi giống như ... à ... tôi phải đọc đi đọc lại nó nhiều lần để đảm bảo rằng tôi thực sự đọc đúng. Tôi thấy rằng bạn phải bắt đầu với tiêu đề cố định 40 byte và nhìn vào trường tiêu đề tiếp theo của nó. Sau đó, bạn phải xem trường tiêu đề tiếp theo của tiêu đề tiếp theo, v.v., giống như danh sách được liên kết, cho đến khi bạn đến cuối. Nếu có trọng tải, nó sẽ theo sau.

Vấn đề là không có trường độ dài trong tiêu đề cố định hoặc tiêu đề mở rộng. Bạn phải có một bảng các loại tiêu đề tiện ích mở rộng và kích thước của chúng để bạn có thể theo đuổi danh sách liên kết này đến cùng.

Điều này gây ấn tượng với tôi là một thiết kế kỳ lạ, thậm chí có thể là trí tuệ. Điều gì sẽ xảy ra nếu tôi gặp phải loại tiêu đề tiện ích mở rộng không được công nhận? Tôi làm gì? Tôi không biết chiều dài của nó. Tôi đoán rằng tôi phải ném gói tin ra ngoài và chặn nó, vì trong một bộ lọc ròng cho phép gói tin đi qua sẽ cho phép kẻ tấn công trốn tránh bộ lọc mạng bằng cách đưa vào một loại tiêu đề không có thật. Nhưng điều đó có nghĩa là nếu giao thức được mở rộng, mọi phần mềm phân tích cú pháp tiêu đề IPv6 từng được viết phải được cập nhật đồng thời nếu phần mở rộng mới được sử dụng.

Vậy làm cách nào để phân tích cú pháp các tiêu đề IPv6 nếu tôi không biết các tiện ích mở rộng mà chúng đang sử dụng? Làm cách nào để bỏ qua tiêu đề cho một tiện ích mở rộng không xác định, vì tôi không biết độ dài của nó?


10
Dựa trên câu hỏi này, có vẻ như tôi không ngu ngốc và vâng tôi đang đọc điều này đúng: (trong thế giới thực) không thể thêm tiêu đề mở rộng mới vào IPv6. stackoverflow.com/questions/9847923/…
AdamIerymenko,

10
Và có, cũng có vẻ như độ dài tiêu đề máy tính yêu cầu truyền qua danh sách liên kết: stackoverflow.com/questions/14762193/… Đừng hiểu nhầm. IPv6 là tuyệt vời và rất cần thiết. Nhưng điều này vẫn có vẻ khó hiểu.
AdamIerymenko

3
Thông số kỹ thuật (được liên kết trong nhận xét trên cùng) cho biết các bộ định tuyến không được phép xem xét các tiêu đề, vì vậy không nên quan tâm đến tiêu đề bạn thêm vào. Chỉ có nút đích mới được xem xét các tiêu đề.
Anders E. Andersen

2
Chỉ cần một lưu ý: "Tóc-óc" là một chính tả khá khó hiểu, và "khờ dại" nên được ưa thích (nguồn: TFD )
PzKpfw

2
Trong chừng mực chỉ có một cách viết đúng, đó là 'não bộ'.
Alan B,

Câu trả lời:


33

Nếu bạn gặp phải thứ gì đó mà bạn không thể phân tích cú pháp, bạn phải đưa ra quyết định hoặc thực hiện hành động của mình dựa trên những gì bạn đã phân tích cú pháp.

Thiết kế là như vậy bởi vì trong IPv6, mỗi tiêu đề mở rộng "bao bọc" phần còn lại của gói. Nếu bạn nhìn thấy tiêu đề định tuyến, sau đó một số tiêu đề bạn chưa từng nghe nói đến, sau đó là tải trọng, thì bạn không thể phân tích cú pháp tải trọng. Về nguyên tắc, ý nghĩa của tải trọng phụ thuộc vào tiêu đề mà bạn không biết cách diễn giải.

Các bộ định tuyến có thể định tuyến các gói như vậy, bởi vì tất cả những gì chúng cần là tiêu đề định tuyến. Các tiện ích kiểm tra gói tin sâu và những thứ như vậy cần biết nhiều thứ, nhưng dù sao thì đó cũng là số phận của chúng.

Đã chỉnh sửa để thêm: Thiết kế này có nghĩa là hộp trung gian chỉ có thể thay đổi những gì họ biết. Nếu hộp trung gian nhìn thấy tiêu đề mà nó không biết, thì nó chỉ có hai tùy chọn: Từ chối hoặc chuyển. Trong IPv4, nó cũng có thể xóa phần mở rộng không xác định và chuyển phần còn lại. IMO thuộc tính này làm cho thiết kế trở nên ít mở rộng hơn.


97

Điều gì sẽ xảy ra nếu tôi gặp phải loại tiêu đề tiện ích mở rộng không được công nhận?

Từ RFC 2460 :

Nếu do kết quả của việc xử lý tiêu đề, một nút được yêu cầu để tiếp tục đến tiêu đề tiếp theo nhưng giá trị Tiêu đề tiếp theo trong tiêu đề hiện tại không được nhận dạng bởi nút, nó sẽ loại bỏ gói và gửi thông báo Vấn đề tham số ICMP đến nguồn của gói , với giá trị Mã ICMP là 1 ("gặp phải loại Tiêu đề tiếp theo không được công nhận") và trường Con trỏ ICMP chứa phần bù của giá trị không được nhận dạng trong gói ban đầu. Hành động tương tự cũng phải được thực hiện nếu một nút gặp giá trị Tiêu đề tiếp theo bằng 0 trong bất kỳ tiêu đề nào ngoài tiêu đề IPv6.


15
Tốt. Tôi đã nghĩ rằng tôi đã mất trí. Vì vậy, có, nó thực sự là một thiết kế hoàn toàn không thể mở rộng ... ít nhất là không có tín hiệu trong băng tần và các thủ thuật khác. Đó là lý do trong một giao thức ứng dụng nơi bạn kiểm soát cả hai đầu và chỉ phải tính đến các phiên bản mới của ứng dụng, nhưng không phải trong một thứ được thiết kế để tồn tại hàng trăm năm?
AdamIerymenko

8
Có khả năng bỏ qua các tiêu đề không xác định sẽ dẫn đến các vấn đề phức tạp hơn nhiều. (Điều gì sẽ xảy ra nếu một proxy trung gian sửa đổi tiêu đề TCP mà không có kiến ​​thức về tiêu đề ESP đóng gói?) Tính đơn giản đánh bại "khả năng mở rộng" trong trường hợp này!
jman

4
@Max IPv6 có các địa chỉ khá đủ để gán một địa chỉ cho mọi nguyên tử trên Trái đất. Không có số lượng máy nướng bánh mì có kết nối Internet sẽ làm cạn dung lượng này.
Tyler McHenry

8
@Max Tôi sẽ không nói rằng chúng ta sẽ hoàn toàn không cần IPv7, nhưng với IPv6, chúng ta có đủ không gian địa chỉ để cung cấp cho mỗi milimét khối trong bầu khí quyển của Trái đất (130.000km) một địa chỉ duy nhất ... 100.000 lần. Vì vậy, ý tôi là, một khi chúng ta bắt đầu thuộc địa hóa các thiên hà khác, chúng ta có thể có điều gì đó để lo lắng, nhưng cho đến lúc đó chúng ta sẽ khá ổn.
cincodenada

4
Một số bối cảnh là mất tích:With one exception, extension headers are not examined or processed by any node along a packet's delivery path, until the packet reaches the node (or each of the set of nodes, in the case of multicast) identified in the Destination Address field of the IPv6 header.
Tobu

28

Không thể (trong thế giới thực) thêm tiêu đề mở rộng mới vào IPv6.

Không chính xác, bởi vì:

  1. Chỉ máy chủ đích mới được phép từ chối dựa trên các tiêu đề tiện ích mở rộng không được công nhận (với một ngoại lệ được đề cập trong câu hỏi bạn đã liên kết )

  2. Nếu tiêu đề tiện ích mở rộng mới của bạn theo một cách nào đó là tùy chọn (tốt hơn là vậy), bạn sẽ nhận được lỗi ICMP về điều đó và có thể thử lại mà không cần.


1
Và bạn có chắc rằng gói ICMP đó sẽ thông qua NAT tới người gửi thực sự không?
Dexter

5
@Dexter ipv6 sẽ giết NAT ... hy vọng
Janus Troelsen

2
@Dexter: Các gói ICMP đó cần đến vì một số lý do. Ví dụ: nếu MTU của đường ống đã bị thu hẹp (có lẽ quá trình đóng gói gói đã xảy ra do PPPoE hoặc VPN) và gói được gửi quá lớn, một gói ICMP sẽ được trả về thông báo rằng gói quá lớn.
Bill Lynch

4
@JanusTroelsen không phải ai cũng chia sẻ hy vọng của bạn.
Dexter

4

Bản cập nhật RFC 6564 bao gồm trường hợp này. Nó đưa ra chính xác kịch bản bạn mô tả và đưa ra định dạng cho bất kỳ tiêu đề tiện ích mở rộng mới nào (nếu có từng được xác định) mà các hộp trung gian chẳng hạn như hộp của bạn sẽ có thể làm việc, ít nhất là trong một số thời gian.

Hãy nhớ rằng nó không nhằm mục đích mở rộng IPv6 bằng cách tạo các tiêu đề tiện ích mở rộng mới mà bằng cách thêm Tùy chọn đích mới. Việc đối phó với các lựa chọn điểm đến không xác định sẽ đơn giản hoặc ít nhất là dễ dàng hơn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.