ปัญหาเกี่ยวกับ SCP ที่สะดุดระหว่างการคัดลอกไฟล์ผ่าน VPN


11

ฉันมีไฟล์หลายชุดที่ฉันต้องการคัดลอกผ่าน SCP ผ่าน VPN ผ่านเซิร์ฟเวอร์ลินุกซ์ระยะไกลในแต่ละคืน ไฟล์มีขนาดไม่ใหญ่เรากำลังพูดถึงหลายสิบเมกะไบต์ที่นี่ แต่การคัดลอกไฟล์มักจะหยุดทำงานหลังจากไม่กี่วินาที ใช้คำสั่ง SCP ด้วย -vvv ฉันเห็นสิ่งต่อไปนี้ซ้ำแล้วซ้ำอีกตลอดกระบวนการคัดลอกที่พยายาม:

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

ความคิดใด ๆ ฉันเห็นคำถามนี้ถูกถามในที่ต่างๆ แต่ไม่มีคำตอบเลย ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม


ฉันเคยประสบสิ่งที่คล้ายกันหลายครั้ง แต่ฉันไม่ได้มีอะไรที่น่าเชื่อถือในตอนนี้ มันอาจจะน่าสนใจที่จะดูว่า hpn-ssh จะสร้างความแตกต่าง
sfink

คำตอบ:


7

คุณอนุญาตให้ ICMP ผ่าน VPN หรือไม่ "การเชื่อมต่อ TCP หยุดทำงานหลังจากไม่กี่วินาที" มักแปลเป็น " PMTU black hole "


2
น้อยคนนักที่จะเข้าใจการค้นพบ icmp PMTU :-(
Unix Janitor

2
ฟังดูน่าสนใจ แต่ยังไม่ชัดเจน คุณสามารถอธิบายรายละเอียดเกี่ยวกับสิ่งที่ผิดพลาดและวิธีการแก้ไขได้อย่างไร
Craig McQueen

7

คล้ายกับการตอบกลับของ @ Gerald หน้านี้http://www.netheaven.com/pmtu.htmlให้คำอธิบายที่ดีเกี่ยวกับ MTU Discovery และตัวเลือกเมื่อเผชิญกับปัญหานี้

นอกจากนี้เอกสารทางเทคนิคของ Cisco ที่กล่าวถึงการกระจายตัวของ IP, การค้นพบ MTU และ MSS ทั้งหมดที่เกี่ยวข้องกับ IPSec VPN tunnels แต่ใช้ได้อย่างเท่าเทียมกันในสถานการณ์ที่คล้ายคลึงกัน http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml


1

คุณใช้เซิร์ฟเวอร์ ssh และไคลเอนต์รุ่นล่าสุดที่คุณใช้อยู่หรือไม่? ฉันขอแนะนำให้กดปุ่มรายชื่ออีเมลของพวกเขาด้วยเพราะมันค่อนข้างคลุมเครือ


1

เรามีปัญหา spurios ที่คล้ายกันกับ scp กับเซิร์ฟเวอร์ Linux บางตัว (Debian, 2.6.24-etchnhalf)

เราสามารถทำได้ด้วยแผงลอยโดยการปิดการใช้งานตัวแปร TCP tcp_sack ("tcp selective acceptgments") บนเซิร์ฟเวอร์ระยะไกล:

sysctl -w net.ipv4.tcp_sack=0

บนเดเบียนเปิดใช้งาน tcp_sack เป็นค่าเริ่มต้น ถ้าฉันอ่านhttp://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.htmlไม่ควรปิดการใช้งานตัวเลือกนี้ แต่ในกรณีของเรามันช่วยได้

คุณสามารถทำการเปลี่ยนแปลงนี้ถาวรโดยการเพิ่มบรรทัดnet.ipv4.tcp_sack=0ไปยัง /etc/sysctl.conf (บนระบบ Linux อื่น YMMV)


0
  1. ค้นหา Path MTU ของคุณ

    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. ตั้งค่า MTU นั้นสำหรับการเชื่อมต่อเครือข่ายของคุณ

    ip link set eth0 mtu 1196
    

    (โปรดทราบว่านี่เป็นการชั่วคราว)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.