Các sự cố với SCP bị đình trệ trong quá trình sao chép tệp qua VPN


11

Tôi có một loạt các tệp tôi cần sao chép qua SCP qua VPN sang máy chủ linux từ xa mỗi đêm. Các tệp không lớn, chúng ta đang nói về hàng chục megabyte ở đây, nhưng bản sao tệp hầu như luôn bị trì hoãn sau vài giây. Chạy lệnh SCP với -vvv, tôi thấy lặp đi lặp lại trong suốt quá trình sao chép đã thử:

debug2: channel 0: rcvd adjust 131072
debug2: channel 0: rcvd adjust 131072
debug2: channel 0: rcvd adjust 131072

Có suy nghĩ gì không? Tôi thấy câu hỏi này được hỏi ở nhiều nơi ngoài kia, nhưng không bao giờ có câu trả lời nào. Bất kỳ trợ giúp sẽ được đánh giá cao.


Tôi đã trải nghiệm những điều tương tự nhiều lần, mặc dù tôi không có bất cứ điều gì đáng tin cậy ngay bây giờ. Thật thú vị khi xem hpn-ssh sẽ tạo ra sự khác biệt.
sfink

Câu trả lời:


7

Bạn có cho phép ICMP thông qua VPN không? "Kết nối TCP bị trì hoãn sau vài giây" thường được dịch thành " lỗ đen PMTU ".


2
rất ít người hiểu được phát hiện PMTU của icmp :-(
The

2
Nghe có vẻ thú vị, nhưng không hoàn toàn rõ ràng. Bạn có thể giải thích chính xác những gì đang xảy ra sai, và làm thế nào để khắc phục nó?
Craig McQueen

7

Tương tự như phản hồi của @ Gerald, trang này http://www.netapseven.com/pmtu.html đưa ra lời giải thích tốt về MTU Discovery và các tùy chọn khi gặp vấn đề này.

Ngoài ra, một whitepaper của Cisco thảo luận về Phân mảnh IP, Khám phá MTU và MSS đều liên quan đến các đường hầm IPSec VPN nhưng có giá trị như nhau đối với các tình huống tương tự. http://www.cisco.com/en/US/tech/tk827/tk369/technology_white_apers09186a00800d6979.shtml


1

Bạn có đang chạy phiên bản mới nhất của bất kỳ máy chủ và máy khách ssh nào bạn đang sử dụng không? Tôi cũng khuyên bạn nên nhấn danh sách email của họ về điều này vì nó có vẻ khá tối nghĩa.


1

Chúng tôi đã gặp sự cố spurios tương tự với scp với một số máy chủ Linux (Debian, 2.6.24-etchnhalf).

Chúng tôi đã có thể loại bỏ các quầy hàng bằng cách vô hiệu hóa biến TCP tcp_sack ("xác nhận chọn lọc tcp") trên các máy chủ từ xa:

sysctl -w net.ipv4.tcp_sack=0

Trên Debian, tcp_sack được bật theo mặc định. Nếu tôi đọc http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html , sẽ vô nghĩa khi tắt tùy chọn này, nhưng trong trường hợp của chúng tôi, nó đã giúp ích.

Bạn có thể thực hiện thay đổi này vĩnh viễn bằng cách thêm một dòng net.ipv4.tcp_sack=0vào /etc/sysctl.conf (trên các hệ thống Linux khác YMMV).


0
  1. tìm ra MTU đường dẫn của bạn

    ping -M do -s 1472 host.domain
    PING host.domain (10.0.0.1) 1472(1500) bytes of data.
    ping: sendmsg: Message too long
    ping: local error: Message too long, mtu=1196
    ^C
    ping -M do -s 1168 host.domain
    PING host.domain (10.0.0.1) 1168(1196) bytes of data.
    1176 bytes from 10.0.0.1: icmp_seq=1 ttl=60 time=283 ms
    ^C
    
  2. thiết lập MTU đó cho kết nối mạng của bạn

    ip link set eth0 mtu 1196
    

    (lưu ý rằng đây là tạm thời)

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.