Construcción del servicio de penetración de intranet FRP, configuración del servidor (Ubuntu) y del cliente (Windows)

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.

Captura de pantalla 2022-02-05 00.44.46

Elija descargar aquí linux_amd64.tar.gz. Subir al directorio a través de FTP /usr/local.

Ingrese al directorio, puede ver lo siguiente:

Captura de pantalla 2022-02-05 01.06.32

El rojo es nuestro paquete comprimido, y luego lo descomprimiremos

tar -xvf frp_0.39.0_linux_amd64.tar

Captura de pantalla 2022-02-05 01.08.21

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.

Captura de pantalla 2022-02-05 01.09.10

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_portEste puerto se usa para configurar el puerto del servidor FRP. Lo que configuro aquí es 17465el puerto.

[common]
bind_port = 17465

También puede agregarlo tokenpara 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í screenEste 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 screencomandos 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

Captura de pantalla 2022-02-05 16.40.47

¡El servicio comenzó con éxito!

En este momento, presione el teclado ctrl + a + dpara 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.

Captura de pantalla 2022-02-05 00.44.46

Simplemente elija aquí windows_amd64.zipy 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 frpcarchivos 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_addrla dirección IP del servidor en este momento server_porty complete el archivo bind_port.

[minecraft]Complete el puerto de ssh, que es el puerto que se ingresará cuando se conecte de local_portforma remote_portremota, y se asigna a través del servicio frp local_port.

Guarde la configuración, ábrala en la carpeta cmd.exee 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.

Captura de pantalla 2022-02-05 16.53.44

Es conveniente que el cliente inicie, y batse 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 frpse 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.

Guess you like

Origin blog.csdn.net/qq_17790209/article/details/122791535