L2TP/VPN-Datenkorruptionsproblem unter macOS 10.12

Bei der Arbeit an einem L2TP-VPN tritt nach dem Upgrade von macOS 10.11 auf 10.12 ein seltsames Problem mit Datenkorruption auf. Zufällig beschädigte Daten treten mitten in etwas "größeren" heruntergeladenen Dateien auf, z. B. JavaScript-Ressourcen oder andere Quelldateien mit einer Dateigröße von etwa 1 bis 2 MB. Es scheint, dass die Beschädigung gelegentlich bei Dateigrößen < 1 MB auftritt, aber ziemlich zuverlässig bei Dateigrößen darüber. Die Position und der Inhalt scheinen zufällig zu sein. Ich hänge einen Screenshot an, der ein Beispiel für die Dateibeschädigung enthält, die in einer 1,4-MB-JavaScript-Datei aufgetreten ist.

Geben Sie hier die Bildbeschreibung ein

Unter macOS 10.10 oder 10.11 hatte ich diesbezüglich nie Probleme und das neueste Problem führt zu sehr ärgerlichen Folgen. Z.B. Ich kann nicht mehr auf JS-lastige Web-Apps zugreifen. Darüber hinaus ist es riskant, in Live-Systemen von Unternehmenssoftware zu arbeiten, wenn Dateien heruntergeladen, gepatcht und hochgeladen werden. Leute um mich herum, die dasselbe VPN unter macOS 10.12 verwenden, haben das gleiche Problem, während Leute, die noch an macOS 10.11 arbeiten, überhaupt keine Probleme haben.

Hat noch jemand dieses Problem? Wie kann ich das beheben?

Bezieht sich auch auf einen älteren Beitrag in Apple Communities, der ein ähnliches (oder dasselbe?) Problem in älteren macOS-Versionen beschreibt: https://discussions.apple.com/message/30908122?start=0&tstart=0#30908122

Bearbeiten 08.11.2016

Interessant: scp(SSH-)Downloads werden durch einen Fehler abgebrochen.

xyz-macbook:Downloads xyz$ scp xyz@192.168.227.123:/srv/www/xyz/ext-5.0.1/build/ext-all.js .
xyz@192.168.227.123's password:
ext-all.js    0%    0     0.0KB/s   --:-- ETACorrupted MAC on input.
ssh_dispatch_run_fatal: Connection to 192.168.227.123 port 22: message authentication code incorrect
lost connection

Während curl(HTTP)-Downloads beendet werden, aber die oben genannten beschädigten Zeichen enthalten.

xyz-macbook:Downloads xyz$ curl "http://192.168.227.123/xyz/ext-5.0.1/build/ext-all.js" -o "ext-all.js"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1952k  100 1952k    0     0  1728k      0  0:00:01  0:00:01 --:--:-- 1729k

Bearbeiten 11.11.2016

Die beschädigten Daten sind bei jedem Download ein und derselben Datei anders:

xyz-macbook:Downloads xyz$ md5 dummy_novpn.txt 
MD5 (dummy_novpn.txt) = ca323efb28ed75534f8f6b7b0237d9da
xyz-macbook:Downloads xyz$ md5 dummy_vpn.txt 
MD5 (dummy_vpn.txt) = 060bbe9846e7845993041a1481c34b93
xyz-macbook:Downloads xyz$ md5 dummy_vpn2.txt 
MD5 (dummy_vpn2.txt) = dacfc661f9a85606afbdfefa72d50516
xyz-macbook:Downloads xyz$ md5 dummy_vpn3.txt 
MD5 (dummy_vpn3.txt) = 8c3f06f9ee440947a9e5864748bd7010
Das ist ein heimtückisches Versagen. Denken Sie, dass ein Webbrowser (Safari oder andere) tatsächlich nicht die richtigen Dateien empfängt, oder verwenden Sie rsyncoder webdav oder eine andere Möglichkeit, diese Dateien in das Dateisystem herunterzuladen? Grundsätzlich - welche Transportmethode scheitert bei VPN?
Guter Hinweis! Jede Transportmethode. Ich habe viele Tests durchgeführt und es sowohl beim Herunterladen von Dateien über Webbrowser und curl/ wget(WebDAV/HTTP) als auch über scp/ rsync(SSH) bemerkt. Interessant: scp(SSH)-Downloads werden durch einen Fehler ( ETACorrupted MAC on input. / ssh_dispatch_run_fatal: Connection to 192.168.227.227 port 22: message authentication code incorrect / lost connection) unterbrochen, während curl(HTTP)-Downloads beendet werden, aber die oben genannten beschädigten Zeichen enthalten.
Ich bin hierher gekommen, um eine eigene MacOS-Datenbeschädigung zu recherchieren, bei der ein GitHub-Antwortheader falsch geschrieben ist _ransfer-Encoding: chunked. Ich habe dann einen Thread aus dem Jahr 2009 zur HTTP/1.1-Datenbeschädigung gefunden, curl.haxx.se/mail/lib-2009-09/0169.html (aber ich kann git nicht ändern, um HTTP/1.0 zu verwenden).

Antworten (2)

Haben Sie zufällig ein https://eshop.macsales.com/item/OWC/TCDOCK11PSG/ ? Ich hatte das gleiche Problem, und es stellte sich heraus, dass das Problem verschwunden war, wenn ich das Ethernet vom Port des OWC-Replikators auf ein USB-C-Ethernet verschoben hatte.

Ich habe identische Symptome bei einem L2TP-over-IPsec-Tunnel mit der integrierten drahtlosen Schnittstelle auf einem MacBook Pro (2019) mit macOS 12.6 festgestellt.

Nach ein wenig Experimentieren bestand die Lösung darin, das RX-Hardware-Prüfsummen-Offloading zu deaktivieren mit:

sudo sysctl -w net.link.generic.system.hwcksum_rx=0

wodurch 100 % der Datenkorruptionsprobleme behoben wurden. Da das Auslagern der Prüfsumme eine Frage der Leistung ist, möchten Sie es möglicherweise rückgängig machen, wenn Sie das VPN nicht verwenden (dh den Wert auf 1 und nicht auf 0 zurücksetzen).

Es ist möglich, die Einstellung bei Bedarf beizubehalten, indem sysctl beim Neustart aufgerufen wird. Fügen Sie dazu Folgendes in ein /Library/LaunchDaemons/sysctl.plist:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
 <key>Label</key>
 <string>sysctl</string>
 <key>ProgramArguments</key>
 <array>
 <string>/usr/sbin/sysctl</string>
 <string>-w</string>
 <string>net.link.generic.system.hwcksum_rx=0</string>
 </array>
 <key>RunAtLoad</key>
 <true/>
</dict>
</plist>

und dann ausführen

launchctl load /Library/LaunchDaemons/sysctl.plist

Ich zögere jedoch, dies zu empfehlen, da dies Auswirkungen auf die Leistung und/oder den Energieverbrauch haben kann. Persönlich bewahre ich die manuelle Einstellung in einem kleinen Shell-Skript auf, das nur bei Bedarf ausgeführt wird.