Masalah dengan SCP stalling saat menyalin file melalui VPN

11

Saya memiliki serangkaian file yang perlu saya salin melalui SCP melalui VPN ke server linux jarak jauh setiap malam. File tidak besar, kita berbicara tentang puluhan megabita di sini, tetapi salinan file hampir selalu terhenti setelah beberapa detik. Menjalankan perintah SCP dengan -vvv, saya melihat hal berikut berulang-ulang selama proses penyalinan yang dicoba:

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

Adakah pikiran? Saya melihat pertanyaan ini ditanyakan di berbagai tempat di luar sana, tetapi tidak pernah ada jawaban. Bantuan apa pun akan dihargai.

MattC
sumber
Saya telah mengalami hal serupa berkali-kali, meskipun saya tidak memiliki apa pun yang dapat diandalkan saat ini. Mungkin menarik untuk melihat apakah hpn-ssh akan membuat perbedaan.
sfink

Jawaban:

7

Apakah Anda mengizinkan ICMP melalui VPN? "Sambungan TCP terhenti setelah beberapa detik" sering diterjemahkan menjadi " lubang hitam PMTU ".

Sisir Gerald
sumber
2
sangat sedikit yang mengerti penemuan PMTU icmp :-(
The Unix Janitor
2
Kedengarannya menarik, tetapi tidak sepenuhnya jelas. Bisakah Anda menguraikan apa sebenarnya yang salah, dan bagaimana cara memperbaikinya?
Craig McQueen
7

Mirip dengan tanggapan @ Gerald, halaman ini http://www.netheaven.com/pmtu.html memberikan penjelasan yang baik tentang MTU Discovery dan opsi-opsi saat menghadapi masalah ini.

Juga whitepaper oleh Cisco yang membahas IP Fragmentation, MTU Discovery, dan MSS yang semuanya berkaitan dengan terowongan IPSec VPN tetapi sama-sama valid untuk situasi yang sama. http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml

jjcf89
sumber
1

Apakah Anda menjalankan versi terbaru dari server dan klien ssh apa pun yang Anda gunakan? Saya juga merekomendasikan untuk memukul daftar email mereka karena tampaknya agak tidak jelas.

Markus C
sumber
1

Kami memiliki masalah spurios serupa dengan scp ke beberapa server Linux (Debian, 2.6.24-etchnhalf).

Kami dapat menghapus warung dengan menonaktifkan tcp_sack variabel TCP ("tcp selective acknowledgments") di server jarak jauh:

sysctl -w net.ipv4.tcp_sack=0

Di Debian, tcp_sack diaktifkan secara default. Jika saya membaca http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html , seharusnya tidak masuk akal untuk menonaktifkan opsi ini, tetapi dalam kasus kami, itu membantu.

Anda dapat membuat perubahan ini permanen dengan menambahkan baris net.ipv4.tcp_sack=0ke /etc/sysctl.conf (di sistem Linux YMMV lainnya).

penerbangan
sumber
0
  1. cari tahu Path MTU Anda

    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. atur MTU itu untuk koneksi jaringan Anda

    ip link set eth0 mtu 1196
    

    (perhatikan bahwa ini sementara)

törzsmókus
sumber