Probleme mit dem Abwürgen von SCP während des Kopierens von Dateien über VPN

11

Ich habe eine Reihe von Dateien, die ich jede Nacht über SCP über ein VPN auf einen Remote-Linux-Server kopieren muss. Die Dateien sind nicht groß, wir sprechen hier von zehn Megabyte, aber die Dateikopie bleibt fast immer nach einigen Sekunden stehen. Wenn Sie den SCP-Befehl mit -vvv ausführen, wird während des gesamten Kopierversuchs immer wieder Folgendes angezeigt:

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

Irgendwelche Gedanken? Ich sehe, dass diese Frage an verschiedenen Orten gestellt wird, aber niemals eine Antwort. Jede Hilfe wäre dankbar.

MattC
quelle
Ich habe viele Male ähnliche Dinge erlebt, obwohl ich momentan nichts habe, was dies zuverlässig macht. Es könnte interessant sein zu sehen, ob hpn-ssh einen Unterschied machen würde.
Sfink

Antworten:

7

Erlauben Sie ICMP über das VPN? "TCP-Verbindung blockiert nach einigen Sekunden" bedeutet häufig " PMTU Black Hole ".

Gerald Combs
quelle
2
so wenige verstehen icmp PMTU Entdeckung :-(
The Unix Janitor
2
Das klingt interessant, ist aber nicht ganz klar. Könnten Sie näher erläutern, was genau falsch läuft und wie dies behoben werden kann?
Craig McQueen
7

Ähnlich wie bei @ Geralds Antwort bietet diese Seite http://www.netheaven.com/pmtu.html eine gute Erklärung für MTU Discovery und die Optionen, wenn dieses Problem auftritt.

Außerdem ein Whitepaper von Cisco, in dem IP-Fragmentierung, MTU-Erkennung und MSS im Zusammenhang mit IPSec-VPN-Tunneln erläutert werden, das jedoch auch für ähnliche Situationen gilt. http://www.cisco.com/de/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml

jjcf89
quelle
1

Führen Sie die neueste Version aller von Ihnen verwendeten SSH-Server und -Clients aus? Ich würde auch empfehlen, ihre E-Mail-Listen zu treffen, da dies ziemlich dunkel erscheint.

Mark C.
quelle
1

Wir hatten ähnliche Probleme mit scp wie einige Linux-Server (Debian, 2.6.24-etchnhalf).

Wir konnten die Stalls beseitigen, indem wir die TCP-Variable tcp_sack ("tcp selektive Bestätigungen") auf den Remote-Servern deaktivierten:

sysctl -w net.ipv4.tcp_sack=0

Unter Debian ist tcp_sack standardmäßig aktiviert. Wenn ich http://www.frozentux.net/ipsysctl-tutorial/chunkyhtml/tcpvariables.html lese , sollte es keinen Sinn machen, diese Option zu deaktivieren, aber in unserem Fall hat es geholfen.

Sie können diese Änderung dauerhaft machen, indem Sie eine Zeile net.ipv4.tcp_sack=0zu /etc/sysctl.conf hinzufügen (auf anderen Linux-Systemen YMMV).

Flug
quelle
0
  1. Finde deine Pfad-MTU heraus

    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. Richten Sie diese MTU für Ihre Netzwerkverbindung ein

    ip link set eth0 mtu 1196
    

    (Beachten Sie, dass dies nur vorübergehend ist.)

törzsmókus
quelle