사내망 croc 릴레이 서버 구축으로 대용량 데이터 전송 속도 높이기
TuBrief 편집팀
2026년 7월 19일
0
컴퓨터/소프트웨어원본 영상을 바탕으로 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로 컨테이너를 실행해 환경을 격리하십시오.
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)에 아래 설정을 넣으십시오.
export CROC_RELAY="내부서버IP:9009"
export CROC_PASS='비밀번호'
이렇게 하면 외부 서버를 거치지 않아 데이터 전송 승인 대기 시간이 사라집니다.
서버가 재부팅될 때마다 수동으로 릴레이를 띄우는 것은 비효율적입니다. systemd 유닛 파일을 만들어 프로세스를 상시 구동하십시오. root 대신 nobody 계정을 쓰면 보안 사고 시 피해를 최소화할 수 있습니다.
/etc/systemd/system/croc-relay.service 파일을 만드십시오.
[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로 묶고 체크섬을 확인하는 방식을 쓰십시오.
전송 스크립트 예시입니다.
# 발신 측
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에 소켓 파라미터를 추가하십시오.
net.ipv4.tcp_keepalive_time=60
net.core.rmem_max=134217728
TCP 킵얼라이브 주기를 60초로 줄이면 상태 보존형 방화벽이 세션을 강제로 끊는 문제를 해결할 수 있습니다. 여러 팀이 동시에 이 서버를 쓴다면 9010-9014, 9020-9024처럼 팀별로 포트 대역을 할당해 컨테이너를 각각 띄우십시오. 방화벽 설정만 고정해두면 팀끼리 간섭 없이 안정적인 전송이 가능합니다.