Tại sao Linux không sử dụng phạm vi cổng IANA Ephemeral?


30

Theo Wikipedia

Cơ quan cấp số được gán Internet (IANA) đề xuất phạm vi 49152 đến 65535 cho các cổng động hoặc riêng. Nhiều nhân Linux sử dụng phạm vi cổng 32768 đến 61000.

Mặc dù dường như có một số sai lệch lịch sử so với phạm vi đề xuất của IANA, nhưng có vẻ khó xử khi Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6+ và nhiều người khác đã đồng ý với phạm vi này và Linux vẫn nổi bật.

Nhìn vào đó, lo và kìa:

$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Tại sao Linux không áp dụng phạm vi tiêu chuẩn?

Câu trả lời:


21

Đã có lúc IANA chỉ gán các cổng tối đa 1023. Xem RFC1700 . Đã có lúc đây là một tiêu chuẩn. Hầu hết thời gian tôi không gặp khó khăn gì khi tìm thấy mọi thứ thay đổi trong luồng của RFC, nhưng đối với câu hỏi về việc thay đổi cổng từ 1024 thành 49152 từ đăng ký sang được chỉ định, tôi đã nghĩ ra ngay.

Về lịch sử Linux, có một câu hỏi được đặt ra về ip_local_port_range mặc định vào năm 2007. Vào thời điểm đó, người ta đã quyết định sử dụng phạm vi Linux mà bạn đề cập vì sợ rằng số cổng cao có thể gây ra sự cố và bắt đầu phạm vi ở 4952 có thể để lại quá ít số cổng trong hồ bơi. Xem điều này và chủ đề của nó. Suy nghĩ bày tỏ vào thời điểm đó là bắt đầu từ 32768 là theo tinh thần của các thủ tục của IANA, nếu không tuân thủ đầy đủ. Khi đọc điều này, tôi suy luận rằng các nhà phát triển giả định rằng hầu hết các bài tập sẽ xảy ra từ dưới cùng của phạm vi và di chuyển lên. Trong bài viết này, tôi đếm được hơn 100 số cổng được chỉ định (không tính các giao thức khác nhau là riêng biệt) trong khoảng 32768 và 49152, do đó, đã duy trì khá tốt trong năm năm qua.

Tôi không biết tại sao phạm vi được coi là quá nhỏ, nhưng tôi có thể tưởng tượng hai lý do:

  1. Số cổng được chọn ngẫu nhiên để ngăn chặn các cuộc tấn công nhất định. Càng nhiều địa chỉ trong hồ bơi, phòng thủ này có thể hoạt động tốt hơn.
  2. Các máy chủ hoạt động cao có thể gặp rắc rối với việc cạn kiệt số cổng. Trong khi các cổng có thể là phù du, việc sử dụng chúng không phải là tức thời. Các ổ cắm cụ thể có thể kéo dài vài phút sau khi đóng TCP.

Bài đăng trên blog này chạm vào số 2 và gợi ý câu trả lời nếu bạn muốn các hệ thống Linux của mình sử dụng một loạt các cổng cục bộ khác. (Sử dụng /etc/sysctl.d để xác định phạm vi bạn thích. Ngoài ra còn có mục nhập ip_local_reserved_ports có thể được sử dụng nếu một mảng xung đột cụ thể. Chúng khớp với mục / Proc / sys mà bạn trích dẫn.)

Tóm tắt. Mặc định của Linux không khớp với thông số kỹ thuật IANA hiện tại, nhưng bất kỳ hệ thống Linux cụ thể nào cũng có thể, nếu chủ sở hữu của nó mong muốn.


1
Theo RFC 6056 , "Như đã đề cập trong Mục 2.1, các cổng động bao gồm phạm vi 49152-65535. Tuy nhiên, thuật toán chọn cổng phù du nên sử dụng toàn bộ phạm vi 1024-65535." - Dường như giá trị của ip_local_port_rangekhông nên được sử dụng.
Evan Carroll


@evan RFC 6056 tiếp tục nói rằng "số cổng có thể cần thiết để cung cấp một dịch vụ cụ thể tại máy chủ cục bộ KHÔNG NÊN đưa vào nhóm số cổng có sẵn để ngẫu nhiên cổng phù du" và rằng "quản trị viên nên xác định các dịch vụ có thể được cung cấp bởi máy chủ lưu trữ cục bộ và NÊN chỉ loại trừ các cổng đã đăng ký tương ứng " nhưng đó không phải là điều mà HĐH thường cung cấp cho bạn để làm. Cơ chế loại trừ thực tế duy nhất là nâng giới hạn dưới.
jmb
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.