EasyProxyPlus (support multi-client multi-port)

EasyPorxyPlus is composed of three ends, the Web end uses Vue+Antd, through calling the Api of the Server, the Nat port (proxy port) configuration, close, view the connection status, byte traffic and other information, the Server end uses Java+ NetTY, used to communicate with the client, Sends the heartbeat, which the Client writes using Golang to penetrate the target service, etc

The voice-over

Free open source XDM github.com/NoBugBoy/Ea…

Bilibili > Video demo

1. Install and start (I use the local environment to demonstrate here)

  1. Prepare cloud servers that can be accessed from the external network (without pretending to be local).
  2. Install the Web and Server on the cloud Server
#The Server has two environment variables: WEB and PORT, which are the API PORT accessed by the WEB and the PORT connected to the client
#Since the configured penetrating port needs to be accessed by the host, it is best to specify a range port using host mode or -pDocker run it - e - d - WEB = 18888 - network host - name sever yujian1996 / easyserver: 1.0Copy the code
#The Web side directly specifies the port to start, and the address to access the back end is configured in the Settings page
docker run -d -it --name web -p 8888:80 easyweb
Copy the code
#The Client is encapsulated as an executable file and can be run directly. Support Linux MAC Windows, download address
https://github.com/NoBugBoy/EasyPorxyPlus/releases/tag/1.0
#Create a proxy.conf file in the peer directory of the client to describe which local services need to be penetrated
#The format is IP. port
#I have configured this to penetrate an 8080 Web service, and SSH to an Intranet serverlocalhost; 8080 172.16.3.141; 22Copy the code

The installation of non-Docker environments is a bit cumbersome, and you can consider optimizing them later.

The web side needs to clone source code & NPM install & NPM run build to generate the disk directory to nginx to use the agent. Server side needs the server to have a Java environment to use Java -jar to run -h can view help

2. Penetration process (The following ports are configured according to the preceding steps)

Tips: Click on the picture to see a clear big picture

When we start the Web, access the mapped port 8888 to open the page. At this time, there is no time to do it. We need to start the Server

After the Server is started, we configure the Server access address in the Settings page

Indeed, since the proxy is not created on the server side, there is no point in creating a penetrator out of thin air. Only when your client has configured which ports to proxy on and is connected to the server will you see the list. The Web management side controls which Nat port is configured for a certain service on a certain client, and can also control which Nat port is disabled

Hostname is the alias of the client. – Name can be specified. In this case, the page displays the two services specified by the client

If you want to configure a proxy port for client 8080, you can select a Nat port from the drop-down list, specify a Nat port and comment information. If you want to change a proxy port, you can reconfigure it in the close list

After the submission, we returned to the list page to check. At this time, the green color indicates that the NAT port has been successfully set and connected to the client

Let’s configure the SSH proxy in the same way as the Redis middleware proxy

Let’s access port 18080, which has successfully penetrated to port 8080 on the client, which has successfully penetrated

Let’s test the SSH connection to port 18022 and see if it can penetrate 172.16.3.141. It did

After several requests, we look at the page again, and we can see the number of bytes sent and received the actual number of bytes, not counting the packets of the custom protocol

When we disconnect the client and look at the page again, it turns red