Hơn 65536 kết nối TCP trên Linux


11

Tôi bị kẹt khi cố gắng thiết lập hơn 65536 kết nối TCP gửi đi từ hộp Linux (RedHat5).

Tôi đã cấu hình cả hộp gửi đi và chấp nhận để cho phép đủ mô tả tệp.

Tôi không tin rằng có một vấn đề ở phía chấp nhận - Tôi có nhiều hộp mục tiêu, mỗi hộp có nhiều địa chỉ IP và tôi đang sử dụng nhiều cổng.

Về phía bên ngoài, tôi không tin rằng mình đang đạt giới hạn cho mỗi địa chỉ IP - Tôi đang sử dụng nhiều địa chỉ IP và cổng (Tôi đang mở các kết nối từ các cổng 30.000 - 60.000 cho mỗi một số địa chỉ IP).

Có một số tham số điều chỉnh nhân Linux tôi đang thiếu? Hoặc một số giới hạn cơ bản trong TCP?

Thất bại là ứng dụng của tôi để mở các kết nối bị treo trong cuộc gọi kết nối ().

Cảm ơn vì sự giúp đỡ của NickB


Giới hạn nào bạn đã đạt được? Lỗi khi bạn đạt đến giới hạn đó là gì?
số

kết nối () treo.
NickB

1
Có gì giữa IP nguồn và số phận của bạn? Bạn có thể điền vào bảng NAT của một số thiết bị không?

Câu trả lời:


10

Đây là một blog nơi ai đó có> 1.000.000 chi phí từ một hộp.

Trong Phần 1, chúng tôi đặt phạm vi thành "1024 65535" - có nghĩa là có 65535-1024 = 64511 cổng không có đặc quyền khả dụng. Một số trong số chúng sẽ được sử dụng bởi các quy trình khác, nhưng chúng tôi sẽ không bao giờ nhận được hơn 64511 kết nối máy khách, vì chúng tôi sẽ hết cổng.

...

Vì vậy, hãy đưa ra 17 địa chỉ IP mới, với ý định tạo 62.000 kết nối từ mỗi địa chỉ - cung cấp cho chúng tôi tổng cộng 1.054.000 kết nối


Cảm ơn! Nó ổn với tôi. Cụ thể, các sysctl seetings từ metabrew.com/article/ mài cho phép tôi thiết lập hơn 65.536 kết nối TCP.
NickB

1

Giao thức TCP chỉ sử dụng 16 bit cho cả cổng đích và cổng nguồn. Sẽ không có cách nào để mở hơn 65536 cổng cùng một lúc - ngay cả với Linux.


3
Điều này chỉ đúng với một địa chỉ IP duy nhất. Nếu bạn sử dụng nhiều hơn một, mỗi địa chỉ IP sẽ có thể có 65536 cổng mở.
Công việc

1
chính xác, một cổng cục bộ là cần thiết cho mỗi kết nối đi. IIRC, mọi cổng đã được sử dụng đều không thể được sử dụng cho các kết nối này. vì vậy, ví dụ: nếu bạn đang chạy telnet / ftp / http, các cổng được đánh số 21/23/80 không có sẵn như các cổng cục bộ.
KevinDTimm

1
Bạn cũng có thể có nhiều kết nối đến cùng một cổng.
gtrak

@Job - Có, vì TCP được xếp chồng lên trên IP - Tôi chỉ nói về một địa chỉ IP.

4
Mỗi kết nối được xác định bởi một tuple bao gồm địa chỉ và cổng từ xa và địa chỉ và cổng cục bộ. Vì vậy,> 65536 kết nối gửi đến từ các máy chủ từ xa khác nhau là có thể. > 65536 kết nối ra ngoài từ một giao diện duy nhất trên máy chủ là không thể và bạn sẽ bị giới hạn ở mức độ ít hơn so với dù sao vì sẽ luôn có một số cổng được sử dụng.
Len Holgate

0

Trong ngữ cảnh này, "giao diện đơn" có nghĩa là một dịch vụ chăm sóc mạng duy nhất với một địa chỉ IP duy nhất được gán cho nó. Mỗi kết nối TCP bên ngoài được liên kết với một cổng riêng, vì vậy ví dụ của bạn là không thể.

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.