Directorio de artículos
descripción general
El año pasado, los servicios de dos proyectos y un servidor de juegos (en lo sucesivo, la aplicación del proyecto) debieron liberarse a la red pública, porque la banda ancha de mi hogar no tiene una dirección IP de red pública y no puedo aplicar. para una dinámica IP de red pública, por lo que se requiere un software o protocolo para vincular servicios y juegos a la red pública.
Aprendí anteriormente que Apache y Nginx pueden implementar un proxy inverso, usar la conexión SSH para conectar la aplicación del proyecto al servidor y realizar el acceso desde la red pública. Sin embargo, se ha encontrado que la conexión SSH no es estable muchas veces, incluso si el complemento autossh está instalado, la conexión a menudo se desconectará. Por lo tanto, durante más de medio año, he intentado usar los servicios DDOS en un entorno con una red pública dinámica, y existen muchos otros métodos, como: escribir scripts de Python para monitorear el estado de la conexión en tiempo real y forzar el agente para actualizar cuando se cambia la dirección IP.Dirección, o la forma de usar P2P, el cliente y el servidor están conectados directamente, el efecto no es satisfactorio.
Por lo tanto, es necesario cambiar otras formas de colgar la aplicación del proyecto en la red pública, por lo que se utiliza FRPHerramienta de penetración de intranet FRPPara colgar la aplicación del proyecto en la red pública.
¿Qué es FRP?
FRP es una aplicación de proxy inverso de alto rendimiento que se puede utilizar para penetrar en la red interna y brindar servicios a la red externa. Es compatible con tcp, http, https y otros tipos de protocolos, y los servicios web admiten el enrutamiento y el reenvío en función de los nombres de dominio.
Preparación
Antes de construir un servicio completo de FRP, debemos preparar algunas cosas por adelantado:
- Un host en la nube con una dirección IP pública (por ejemplo: ECS de Alibaba Cloud) o un VPS;
- Los hosts con direcciones IP públicas deberían intentar instalar Ubuntu o Linux;
- El host en la red pública debe presentarse ante el Ministerio de Industria y Tecnologías de la Información, de lo contrario, es fácil verificar el medidor de agua;
- La red local debe tener un entorno de red relativamente bueno (el enlace descendente de 300 Mbps, el enlace ascendente de 30 Mbps es el mejor, la prueba mínima de enlace ascendente no debe ser inferior a 5 Mbps);
- El host local debe instalar el sistema operativo Windows;
- Debe haber algunos comandos básicos de Linux simples (como comandos simples como cd ls cp tar);
Configuración del lado del servidor del servicio FRP
En primer lugar, primero descargamos el paquete de instalación para el servidor desde la dirección de Github de FRP, página de versiones de Github , al momento de escribir este documento, la versión oficial se ha actualizado a la versión 0.39.0.
Elija descargar aquí linux_amd64.tar.gz
. Subir al directorio a través de FTP /usr/local
.
Ingrese al directorio, puede ver lo siguiente:
El rojo es nuestro paquete comprimido, y luego lo descomprimiremos
tar -xvf frp_0.39.0_linux_amd64.tar
Una vez que se completa la descompresión, puede ver una carpeta sin ningún sufijo a la izquierda, vamos a cd en la carpeta.
Puede ver el directorio de carpetas de la siguiente manera:
frp_0.39.0_linux_amd64
|- frpc
|- frpc_full.ini
|- frpc.ini
|- frps
|- frps_full.ini
|- frps.ini
|- LICENSE
|- systemd
El lado del servidor solo necesita ser editado frps.ini
, podemos abrirlo con vim o usar FTP para descargarlo localmente y abrirlo con VSCode.
Por defecto es
[common]
bind_port = 7000
[common]
Significa que esta parte es necesaria. bind_port
Este puerto se usa para configurar el puerto del servidor FRP. Lo que configuro aquí es 17465
el puerto.
[common]
bind_port = 17465
También puede agregarlo token
para una autenticación simple; de lo contrario, cualquiera puede usar su servidor para la penetración de la intranet.
Como servidor, el servidor puede eliminar algunos archivos de cliente innecesarios, para no elegir el archivo de configuración incorrecto al iniciar más tarde.
rm -f frpc
rm -f frpc.ini
Para que el servicio siga ejecutándose después de cerrar la conexión SSH, debemos permitir que el servicio se ejecute en segundo plano. Las instrucciones se usan aquí screen
Este módulo no está cubierto por Ubuntu y debe instalarse solo:
apt-get update
Instalar después de que se complete la actualización
apt-get install screen
En este punto, la instalación está completa. Aquí hay algunos screen
comandos de uso común:
screen -S name 启动一个名字为name的screen
screen -S name -X quit 删除某个session
screen -ls 是列出所有的screen
screen -r name或者id 可以回到某个screen了(如不行先detached: screen -d name)
键盘 ctrl + a + d 可以回到前一个screen,当时在当前screen运行的程序不会停止
creamos un nuevoscreen
screen -S frps
Luego ingrese al directorio FRP, ingrese el siguiente comando para iniciar el servicio
./frps -c ./frps.ini
¡El servicio comenzó con éxito!
En este momento, presione el teclado ctrl + a + d
para regresar, y luego puede salir de SSH, y el programa no se interrumpirá.
Configuración del cliente para el servicio FRP
En primer lugar, primero descargamos el paquete de instalación para el cliente desde la dirección de Github de FRP, página de versiones de Github , al momento de escribir este documento, la versión oficial se ha actualizado a la versión 0.39.0.
Simplemente elija aquí windows_amd64.zip
y luego descomprima el archivo en una carpeta que le guste, preste atención a la jerarquía de carpetas no demasiado profunda.
El cliente solo necesita configurar frpc
archivos relacionados, abra aquí frpc.ini
, mi configuración es la siguiente
[common]
server_addr = x.x.x.x
server_port = 17465
[minecraft]
type = tcp
local_ip = 127.0.0.1
local_port = 25565
remote_port = 17778
La configuración anterior debe coincidir con la configuración del servidor.
[common]
Complete server_addr
la dirección IP del servidor en este momento server_port
y complete el archivo bind_port
.
[minecraft]
Complete el puerto de ssh, que es el puerto que se ingresará cuando se conecte de local_port
forma remote_port
remota, y se asigna a través del servicio frp local_port
.
Guarde la configuración, ábrala en la carpeta cmd.exe
e ingrese el siguiente comando para iniciar el cliente.
frpc.exe -c frpc.ini
En este momento, debería poder ver las siguientes palabras en el servidor, lo que indica que la conexión se ha realizado correctamente. La parte roja está codificando.
Es conveniente que el cliente inicie, y bat
se escribe un archivo simple, llamado como frp-client.bat
, el contenido es el siguiente
@echo off
@title frp client service
frpc.exe -c frpc.ini
pause
Después de guardar y hacer doble clic para iniciar, haga clic para minimizar y frp
se iniciará el servicio.
Esos llamados "agujeros"
¿No puede conectarse al servidor o no puede acceder a él desde Internet?
Verifique si el firewall de Ubuntu está habilitado, si está habilitado, abra el puerto. Si el puerto está abierto o el firewall no está habilitado, inicie sesión en la plataforma del proveedor de servicios en la nube para verificar si el firewall del proveedor de servicios tiene una configuración de puerto de entrada y salida. Si el puerto no está configurado, configúrelo.
Si aún no funciona, verifique la configuración de entrada y salida del firewall de la computadora cliente.