Aumentando a velocidade de transferência de dados massivos construindo um servidor de retransmissão croc na rede interna
Se você é um profissional de TI que perde tempo passando por processos de aprovação toda vez que precisa mover grandes volumes de dados porque não pode usar armazenamento em nuvem externo devido a regulamentações de segurança, este post é a solução. O croc usa o protocolo PAKE, o que significa que nem mesmo o servidor de retransmissão pode visualizar os dados. Compilei abaixo uma maneira de garantir velocidade de transferência sem violar as políticas de segurança.
1. Eliminando esperas de aprovação de firewall com um servidor de retransmissão dedicado
Ao colocar um servidor de retransmissão diretamente na zona DMZ, sem passar por servidores externos, você pode pular os procedimentos de aprovação da equipe de segurança. O croc usa a porta TCP 9009 para sinais de controle e as portas 9010 a 9013 para transferência de dados. Ao fixar esse intervalo, torna-se possível registrar políticas de firewall.
Isole o ambiente executando um container com 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='sua_senha'
docker.io/schollz/croc:latest
`
Adicione as configurações abaixo ao seu arquivo de perfil (~/.bashrc) para não precisar inserir o endereço do servidor e a senha toda vez a partir de um servidor interno.
`bash
export CROC_RELAY="IP_DO_SERVIDOR_INTERNO:9009"
export CROC_PASS='sua_senha'
`
Dessa forma, o tempo de espera pela aprovação da transferência de dados desaparece, pois não há necessidade de passar por servidores externos.
2. Execução automática do servidor de retransmissão com systemd
É ineficiente subir a retransmissão manualmente toda vez que o servidor é reiniciado. Crie um arquivo de unidade systemd para manter o processo em execução constante. Usar a conta 'nobody' em vez de 'root' pode minimizar danos em caso de incidentes de segurança.
Crie o arquivo /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
`
Após escrever o arquivo, execute systemctl daemon-reload e suba o serviço com o comando systemctl enable --now croc-relay.service. Mesmo que o servidor caia, ele se recuperará automaticamente em 5 segundos.
3. Dicas para garantir a integridade de arquivos grandes e transferência
Ao mover pastas de projetos com centenas de gigabytes, você deve evitar a perda de arquivos. Use o método de compactar com tar e verificar o checksum.
Exemplo de script de transferência:
`bash
Lado emissor
tar -czf data.tar.gz ./project_folder
sha256sum data.tar.gz > checksum.txt
croc send data.tar.gz checksum.txt
Lado receptor
croc recv [código]
sha256sum -c checksum.txt && tar -xzf data.tar.gz
`
Isso evita vulnerabilidades de descompactação como o CVE-2023-43616 e permite confirmar imediatamente após a transferência se os dados não foram corrompidos.
4. Ajuste de rede para manter a velocidade
Quando o volume de transferência de dados excede a casa dos terabytes, as configurações padrão criam gargalos. Adicione parâmetros de socket ao /etc/sysctl.conf para evitar que a sessão caia.
`bash
net.ipv4.tcp_keepalive_time=60
net.core.rmem_max=134217728
`
Reduzir o ciclo de TCP keepalive para 60 segundos pode resolver o problema de firewalls com estado forçando o encerramento da sessão. Se várias equipes usarem este servidor simultaneamente, aloque intervalos de portas por equipe (como 9010-9014, 9020-9024) e execute containers separados. Contanto que as configurações de firewall estejam fixas, é possível uma transferência estável sem interferência entre as equipes.