Làm chậm các kết nối cá nhân đi qua bộ định tuyến Linux?


8

Chúng tôi có một máy chủ Linux hoạt động như một bộ định tuyến / tường lửa cho văn phòng của chúng tôi. Đôi khi ai đó sẽ tải lên một tệp lớn chiếm hết băng thông của chúng tôi. Tôi không muốn thực hiện bất kỳ quy tắc phức tạp hoặc định hình lưu lượng truy cập nào, nhưng tôi tự hỏi liệu có cách nào để làm chậm một kết nối tại chỗ không? Tôi đã tìm thấy tcpnice , nhưng nó không làm chậm quá trình chuyển tiền trong thử nghiệm của tôi.

Câu trả lời:


6

Nếu định hình lưu lượng truy cập không định hình lưu lượng truy cập đúng cho cả shell và tải lên hoạt động (tôi nghĩ nó có thể, nhưng không chắc chắn) thì bạn có thể:

a) chạy ssh trên hai cổng - bạn có thể ưu tiên một cho chuyển tập tin và một cho công việc tương tác.

b) giới hạn tổng tốc độ ssh - vấn đề duy nhất là nếu bạn lấp đầy dung lượng tải lên của liên kết và ssh sẽ hoạt động tương tác tốt nếu bạn giới hạn tốc độ ở mức 50kb / giây (điều này sẽ buộc người dùng sử dụng một số giao thức khác để truyền tệp lớn hơn )

c) ưu tiên lưu lượng trên địa chỉ nguồn nếu bạn có thể

Ngoài ra, việc định hình lưu lượng sẽ làm cho lưu lượng truy cập cân bằng hơn bất kể kết nối đơn lẻ sẽ không độc quyền toàn bộ liên kết.

EDIT: Đây là một ví dụ sử dụng tập lệnh bash. Nó đề cập rằng ssh thực sự đặt ĐKDV tương tác thành tương tác, vì vậy tôi sẽ cho rằng Wondershaper tận dụng lợi thế đó.

Nếu bạn muốn lựa chọn khác ngoài Wondershaper chắc chắn rằng bạn có một cái nhìn tại shorewall hoặc pyshape .

Shorewall khá trưởng thành và cân bằng tốt về sự linh hoạt, sức mạnh và sự đơn giản.


4

Wonderershaper có thể làm nên điều kỳ diệu, và nó khá dễ cài đặt. Ngoài ra, bạn có thể tìm thấy một số chương trình người dùng để làm điều đó. Trong Linux có Trickle , có thể có tương đương cho Windows.

Nhưng thực sự, bạn muốn định hình lưu lượng truy cập - mọi người sẽ quên chạy chương trình, v.v. Chỉ cần giới hạn tải lên xuống một chút so với khả năng đầy đủ của bạn có thể sẽ giúp bạn rất nhiều.


1
Vấn đề chính tôi gặp phải với việc định hình lưu lượng truy cập là AFAIK không phải chờ đợi để phân biệt tệp tải lên qua SFTP / SCP với phiên SSH tương tác. Tôi muốn ưu tiên các phiên SSH tương tác của mình, nhưng thực hiện điều đó cũng sẽ ưu tiên các video tải lên của tôi, đánh bại mục đích: /
davr

2
Tôi tin rằng ssh phân biệt sử dụng tương tác (ssh) với không tương tác (scp / sftp) bằng cách sử dụng tiêu đề TCP TCP / IP và wonderershaper sử dụng điều đó.
alex

Thật không may, cả Putty (máy khách SSH tương tác) cũng như Filezilla (máy khách SFTP truyền tệp) đều đặt các cờ TOS TCP / IP. Vì vậy, tường lửa của tôi không thể phân biệt giữa chúng.
davr

Ngoài ra, Wonderershaper đã 8 tuổi ... dường như là một sự vĩnh cửu trong thời gian internet.
davr

2

Có một cái nhìn về liên kết trong trang web iptables (8). Bạn có thể phù hợp với tốc độ kết nối và làm chậm kết nối đã tải lên quá nhanh bằng cách đưa nó vào một lớp tc thích hợp hoặc thả hoặc tarpit hoặc bất cứ điều gì phù hợp với bạn.


1

Bạn đã nghĩ đến việc thiết lập proxy Squid ngược và thiết lập các nhóm trễ ? Bạn cũng có thể làm điều này với chỉ thị giới hạn của iptables.

Một vấn đề tôi gặp phải với yêu cầu của bạn là dường như bạn muốn bắt đầu giới hạn tốc độ truyền của một kết nối đã được thiết lập, điều này sẽ khá khó thực hiện vì mọi thứ tôi có thể nghĩ là sẽ bắt đầu hoạt động trên một kết nối mới, và sẽ để lại các kết nối hiện có.

Tôi phải đồng ý với alex rằng có lẽ bạn sẽ cần một loại công cụ lưu lượng truy cập nào đó, thứ bạn muốn xem là các gói mỗi giây vì một vỏ tương tác sẽ có giá trị nhỏ hơn đáng kể so với chuyển tệp khiêm tốn.

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.