Un túnel TCP moderno y simple en óxido que expone los puertos locales a un servidor remoto, evitando los firewalls estándar de conexión NAT. Eso es todo lo que hace: no más, y nada menos.
# Instalación (requiere óxido, consulte las alternativas a continuación) Instalación de carga Bore-Cli# en su MachineBore local Local 8000-To Bore.pub
Esto expondrá su puerto local en localhost:8000
a Internet público en bore.pub:<PORT>
, donde el número de puerto se asigna al azar.
Similar a LocalTunnel y NGROK, excepto que bore
está destinado a ser una herramienta altamente eficiente y no opensada para reenviar el tráfico TCP que es fácil de instalar y fácil de autohost, sin adornos.
( bore
totaliza alrededor de 400 líneas de código de óxido de Async y es trivial de configurar, simplemente ejecute un solo binario para el cliente y el servidor).
Si está tomando macOS, bore
está empaquetado como una fórmula de núcleo casero.
Brew Instale Bore-Cli
De lo contrario, la forma más fácil de instalar orificio es de binarios prebuilados. Estos están disponibles en la página de versiones para macOS, Windows y Linux. Simplemente descomprima el archivo apropiado para su plataforma y mueva el ejecutable bore
a una carpeta en su ruta.
También puede construir bore
desde la fuente con carga, el administrador de paquetes de óxido. Este comando instala el binario bore
en una ruta accesible para el usuario.
Cargo Instale el orificio-cli
También publicamos imágenes de Docker versión para cada lanzamiento. La imagen está construida para una arquitectura AMD de 64 bits. Están etiquetados con la versión específica y le permiten ejecutar el binario bore
vinculado estáticamente desde un contenedor mínimo de "scratch".
Docker Run -it --init - -Rm -Network Host Ekzhang/Bore <Aggs>
Esta sección describe un uso detallado para el comando bore
CLI.
Puede reenviar un puerto en su máquina local utilizando el comando bore local
. Esto requiere un argumento posicional, el puerto local para reenviar, así como una opción --to
, que especifica la dirección del servidor remoto.
Bore Local 5000 -To Bore.pub
Opcionalmente, puede pasar una opción --port
para elegir un puerto específico en el control remoto para exponer, aunque el comando fallará si este puerto no está disponible. Además, aprobar --local-host
le permite exponer un host diferente en su red de área local además de la dirección de localhost
de bucle.
Las opciones completas se muestran a continuación.
Inicia un proxy local al servidor remoto Uso: Bore Local [Opciones] -a <to> <local_port> argumentos: <local_port> El puerto local para exponer Opciones: -l,--Local-Host <gest> El host local para exponer [predeterminado: localhost] -t, -a <to> la dirección del servidor remoto para exponer los puertos locales a [env: bore_server =] -p, --port <port> puerto opcional en el servidor remoto para seleccionar [predeterminado: 0] -s, --secret <ecret> secreto opcional para la autenticación [env: bore_secret] -h, -Información de ayuda de impresión de ayuda
Como se mencionó en las instrucciones de inicio, hay una instancia pública del servidor bore
que se ejecuta en bore.pub
. Sin embargo, si desea bore
de sí mismo en su propia red, puede hacerlo con el siguiente comando:
servidor
¡Eso es todo lo que se necesita! Después de que el servidor comience a ejecutarse en una dirección determinada, puede actualizar el comando bore local
con la opción --to <ADDRESS>
para reenviar un puerto local a este servidor remoto.
Las opciones completas para el comando bore server
se muestran a continuación.
Ejecuta el servidor proxy remoto Uso: Servidor de orificio [Opciones] Opciones: --Min-Port <Min_port> Número de puerto TCP mínimo aceptado [predeterminado: 1024, env: bore_min_port] -MAX-PORT <MAX_PORT> Número de puerto TCP máximo aceptado [predeterminado: 65535, env: bore_max_port] -s, --secret <ecret> secreto opcional para la autenticación [env: bore_secret] -h, -Información de ayuda de impresión de ayuda
Hay un puerto de control implícito en 7835
, utilizado para crear nuevas conexiones a pedido. En la inicialización, el cliente envía un mensaje de "hola" al servidor en el puerto de control TCP, pidiendo proxy de un puerto remoto seleccionado. El servidor luego responde con un reconocimiento y comienza a escuchar conexiones TCP externas.
Cada vez que el servidor obtiene una conexión en el puerto remoto, genera un UUID seguro para esa conexión y la devuelve al cliente. Luego, el cliente abre una transmisión TCP separada al servidor y envía un mensaje de "aceptar" que contiene el UUID en esa secuencia. El servidor luego proxera las dos conexiones entre sí.
Por razones de corrección y para evitar fugas de memoria, el servidor solo almacenan las conexiones entrantes durante hasta 10 segundos antes de ser descartadas si el cliente no las acepta.
En una implementación personalizada de bore server
, opcionalmente puede requerir un secreto para evitar que el servidor sea utilizado por otros. El protocolo requiere que los clientes verifiquen la posesión del secreto en cada conexión TCP respondiendo desafíos aleatorios en forma de códigos HMAC. (Este secreto solo se usa para el apretón de manos inicial, y no se encripta por defecto el tráfico adicional).
# en el servidor Serverbore --secret my_secret_string# en el clientbore local <local_port> - -to <to> --secret my_secret_string
Si un secreto no está presente en los argumentos, bore
también intentará leer de la variable de entorno BORE_SECRET
.
Creado por Eric Zhang (@Ekzhang1). Licenciado bajo la licencia del MIT.
El autor desea agradecer a los colaboradores y mantenedores del proyecto Tokio por hacer posible escribir servicios de red ergonómicos y eficientes en óxido.