Aumentar la velocidad de transferencia de datos de gran tamaño mediante la configuración de un servidor de relevo croc en la red interna
Si usted es un profesional de TI que pierde tiempo pasando por procesos de aprobación cada vez que necesita transferir datos de gran tamaño debido a que las políticas de seguridad le impiden utilizar almacenamiento en la nube externo, este artículo es la solución. croc utiliza el protocolo PAKE, lo que garantiza que ni siquiera el servidor de relevo pueda acceder a sus datos. A continuación, se detalla cómo garantizar la velocidad de transferencia sin infringir las políticas de seguridad.
1. Eliminar la espera de aprobación del firewall con un servidor de relevo dedicado
Si coloca un servidor de relevo directamente en la zona DMZ sin pasar por servidores externos, puede omitir el proceso de aprobación del equipo de seguridad. croc utiliza el puerto TCP 9009 para señales de control y los puertos 9010 a 9013 para la transferencia de datos. Al fijar este rango, es posible registrar la política en el firewall.
Ejecute el contenedor con Docker para aislar el entorno.
`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
`
Para evitar ingresar la dirección del servidor y la contraseña cada vez desde los servidores internos, agregue la siguiente configuración al archivo de perfil (~/.bashrc).
`bash
export CROC_RELAY="내부서버IP:9009"
export CROC_PASS='비밀번호'
`
De esta manera, se elimina el tiempo de espera de aprobación para la transferencia de datos, ya que no se pasa por servidores externos.
2. Ejecución automática del servidor de relevo con systemd
Es ineficiente reiniciar manualmente el relevo cada vez que se reinicia el servidor. Cree un archivo de unidad systemd para mantener el proceso en ejecución constante. El uso de la cuenta "nobody" en lugar de root minimiza los daños en caso de un incidente de seguridad.
Cree el archivo /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
`
Después de escribirlo, ejecute systemctl daemon-reload e inicie el servicio con el comando systemctl enable --now croc-relay.service. El sistema se recuperará automáticamente en 5 segundos si el servidor se cae.
3. Consejos para la integridad de archivos de gran tamaño y transferencia
Al mover carpetas de proyectos de cientos de gigabytes, debe evitar la pérdida de archivos. Utilice el método de comprimir con tar y verificar la suma de comprobación (checksum).
Ejemplo de script de transferencia:
`bash
Lado emisor
tar -czf data.tar.gz ./project_folder
sha256sum data.tar.gz > checksum.txt
croc send data.tar.gz checksum.txt
Lado receptor
croc recv [코드]
sha256sum -c checksum.txt && tar -xzf data.tar.gz
`
Esto permite evitar vulnerabilidades de descompresión como CVE-2023-43616, asegurando inmediatamente después de la transferencia que los datos no se hayan corrompido.
4. Ajuste de la configuración de red para mantener la velocidad
Si el volumen de transferencia de datos supera el rango de los terabytes, la configuración predeterminada causará cuellos de botella. Agregue parámetros de socket a /etc/sysctl.conf para evitar que la sesión se desconecte.
`bash
net.ipv4.tcp_keepalive_time=60
net.core.rmem_max=134217728
`
Reducir el ciclo de mantenimiento de TCP (keepalive) a 60 segundos puede resolver el problema de los firewalls con estado que desconectan las sesiones a la fuerza. Si varios equipos utilizan este servidor simultáneamente, asigne rangos de puertos por equipo, como 9010-9014 y 9020-9024, y ejecute contenedores separados. Siempre que la configuración del firewall esté fijada, es posible realizar transferencias estables sin interferencias entre equipos.