Übertragungsgeschwindigkeit großer Datenmengen durch Aufbau eines internen croc-Relay-Servers erhöhen
Wenn Sie ein IT-Experte sind, der aufgrund von Sicherheitsrichtlinien keinen externen Cloud-Speicher nutzen kann und bei jedem Transfer großer Datenmengen Zeit mit zeitraubenden Genehmigungsverfahren verschwendet, ist dieser Artikel die Lösung für Sie. croc verwendet das PAKE-Protokoll, sodass selbst der Relay-Server keinen Einblick in die Daten erhält. Hier ist zusammengefasst, wie Sie die Übertragungsgeschwindigkeit erhöhen können, ohne gegen Sicherheitsrichtlinien zu verstoßen.
1. Wegfall von Firewall-Genehmigungen durch einen dedizierten Relay-Server
Wenn Sie einen Relay-Server direkt in der DMZ platzieren, anstatt externe Server zu nutzen, können Sie den Genehmigungsprozess des Sicherheitsteams umgehen. croc tauscht Steuersignale über den TCP-Port 9009 aus und nutzt die Ports 9010 bis 9013 für die Datenübertragung. Wenn Sie diesen Bereich festlegen, können Sie eine entsprechende Firewall-Richtlinie registrieren.
Führen Sie den Container mit Docker aus, um die Umgebung zu isolieren.
`bash
docker network create --driver bridge croc-dmz-net
docker run -d --name croc-relay
-p 9009:9009 -p 9010-9013:9010-9013
-e CROC_PASS='비밀번호'
docker.io/schollz/croc:latest
`
Fügen Sie die folgenden Einstellungen in Ihre Profildatei (~/.bashrc) ein, damit Sie nicht jedes Mal die Serveradresse und das Passwort auf dem internen Server eingeben müssen.
`bash
export CROC_RELAY="내부서버IP:9009"
export CROC_PASS='비밀번호'
`
Auf diese Weise entfallen externe Server und damit auch die Wartezeiten auf Genehmigungen für die Datenübertragung.
2. Automatische Ausführung des Relay-Servers mit systemd
Es ist ineffizient, das Relay jedes Mal manuell zu starten, wenn der Server neu gestartet wird. Erstellen Sie eine systemd-Unit-Datei, um den Prozess permanent auszuführen. Die Verwendung des Benutzers "nobody" anstelle von "root" minimiert mögliche Schäden bei Sicherheitsvorfällen.
Erstellen Sie die Datei /etc/systemd/system/croc-relay.service.
`ini
[Unit]
Description=croc relay service
[Service]
User=nobody
ExecStart=/usr/local/bin/croc relay --ports "9009,9010,9011,9012,9013"
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
`
Führen Sie nach dem Erstellen systemctl daemon-reload aus und starten Sie den Dienst mit dem Befehl systemctl enable --now croc-relay.service. Selbst wenn der Server abstürzt, stellt er sich innerhalb von 5 Sekunden von selbst wieder her.
3. Tipps zur Sicherstellung der Datenintegrität bei großen Dateien
Beim Verschieben von Projektordnern im Umfang von mehreren hundert Gigabyte müssen Sie sicherstellen, dass keine Dateien verloren gehen. Verwenden Sie tar zum Archivieren und überprüfen Sie die Prüfsumme.
Beispiel für ein Übertragungsskript:
`bash
Senderseite
tar -czf data.tar.gz ./project_folder
sha256sum data.tar.gz > checksum.txt
croc send data.tar.gz checksum.txt
Empfängerseite
croc recv [코드]
sha256sum -c checksum.txt && tar -xzf data.tar.gz
`
Dies vermeidet Entpackungsschwachstellen wie CVE-2023-43616 und stellt sofort nach der Übertragung sicher, dass die Daten nicht beschädigt wurden.
4. Aufrechterhaltung der Geschwindigkeit durch Optimierung der Netzwerkeinstellungen
Wenn das Datenübertragungsvolumen den Terabyte-Bereich überschreitet, entstehen bei den Standardeinstellungen Engpässe. Fügen Sie Socket-Parameter zu /etc/sysctl.conf hinzu, um Verbindungsabbrüche zu vermeiden.
`bash
net.ipv4.tcp_keepalive_time=60
net.core.rmem_max=134217728
`
Die Verkürzung des TCP-Keepalive-Intervalls auf 60 Sekunden löst das Problem, dass zustandsabhängige Firewalls die Sitzung gewaltsam beenden. Wenn mehrere Teams diesen Server gleichzeitig nutzen, weisen Sie jedem Team eigene Portbereiche zu (z. B. 9010-9014, 9020-9024) und starten Sie separate Container. Sobald die Firewall-Einstellungen festgelegt sind, ist eine stabile Übertragung ohne gegenseitige Störungen zwischen den Teams möglich.