Ускорение передачи больших данных путем развертывания ретранслятора croc во внутренней сети
TuBrief 편집팀
2026년 7월 19일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
Если вы IT-специалист, который вынужден тратить время на бесконечные процедуры согласования каждый раз при передаче больших объемов данных из-за того, что политики безопасности запрещают использование внешних облачных хранилищ, эта статья — ваше решение. В croc используется протокол PAKE, поэтому даже сервер-ретранслятор не может получить доступ к вашим данным. Ниже описан способ обеспечения высокой скорости передачи без нарушения политик безопасности.
Размещение ретранслятора непосредственно в DMZ-зоне, минуя внешние серверы, позволяет избежать процедур согласования с командой безопасности. croc использует порт TCP 9009 для передачи сигналов управления и порты с 9010 по 9013 для передачи данных. Фиксация этого диапазона позволяет корректно настроить правила брандмауэра.
Используйте Docker для запуска контейнера, чтобы изолировать среду.
`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
`
Чтобы не вводить адрес сервера и пароль каждый раз на корпоративных машинах, добавьте следующие настройки в файл профиля (~/.bashrc):
`bash
export CROC_RELAY="내부서버IP:9009"
export CROC_PASS='비밀번호'
`
Благодаря этому исчезает необходимость в ожидании подтверждения передачи данных, так как внешние серверы не задействуются.
Вручную запускать ретранслятор после каждой перезагрузки сервера неэффективно. Создайте unit-файл systemd для постоянной работы процесса. Использование учетной записи nobody вместо root позволит минимизировать ущерб в случае инцидентов безопасности.
Создайте файл /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
`
После создания файла выполните systemctl daemon-reload и запустите службу командой systemctl enable --now croc-relay.service. Даже если сервер упадет, он автоматически восстановится в течение 5 секунд.
При перемещении папок проекта размером в сотни гигабайт важно предотвратить потерю файлов. Используйте архивацию через tar с проверкой контрольных сумм.
Пример скрипта передачи:
`bash
tar -czf data.tar.gz ./project_folder
sha256sum data.tar.gz > checksum.txt
croc send data.tar.gz checksum.txt
croc recv [код]
sha256sum -c checksum.txt && tar -xzf data.tar.gz
`
Это позволяет избежать уязвимостей при распаковке (таких как CVE-2023-43616) и сразу же проверить, не были ли повреждены данные при передаче.
При передаче данных терабайтного уровня стандартные настройки могут приводить к появлению узких мест. Чтобы сессия не разрывалась, добавьте параметры сокета в /etc/sysctl.conf:
`bash
net.ipv4.tcp_keepalive_time=60
net.core.rmem_max=134217728
`
Сокращение интервала TCP Keepalive до 60 секунд поможет решить проблему принудительного разрыва сессий межсетевыми экранами, отслеживающими состояние соединений. Если сервер используют несколько команд одновременно, выделяйте каждой команде свой диапазон портов (например, 9010-9014, 9020-9024) и запускайте отдельные контейнеры. При фиксированных настройках брандмауэра команды смогут стабильно передавать данные, не мешая друг другу.