Total Pageviews

Saturday, 3 October 2020

VProxy = HTTP Forward Proxy + HTTP Reverse Proxy

HTTPS proxy disguised in HTTPS web site. / 隐藏在HTTPS网站中的代理服务器.

Schema

VProxy works as a reverse proxy in common cases to pretend as an HTTPS web site. Only when VProxy receives HTTP/1.1 proxy request whose credential is valid, it handles that request as an HTTPS forward proxy. The traffic is encrypted by TLS hence HTTPS proxy is disguised an HTTPS web site.

Features

  • Forward Proxy - HTTP proxy requests are forwarded to allow client access Internet
  • Disguise Mode - Credentials (username and password) are mandatory for forward proxy. If credentials are not valid in HTTP proxy request, VProxy does not response error. Instead, it works as reverse proxy.
  • Reverse Proxy - VProxy forwards HTTP/HTTPS requests to backend for common requests, and it is seen as a truely web site.
  • Integrated Web Console - Easy to configure and maintain by accessing a secure path in web browser.
  • High Performance - Developed with Rust, which is blazingly fast as C/C++. All network I/O operations are performed asynchronously. No garbage collector, low memory footprint, and absolutely memory-safe!
  • Compatibility - VProxy is compatible with most existing HTTPS proxy softwares as long as they don't rely on challenge–response authentication.

Quick Start

Step 0. Prerequisites

A domain name is required to setup HTTPS. The domain name must be resolved to Internet IP address of the server you are going to setup.

Step 1. Deployment

V-Proxy server is provided as docker images at DockerHub.

The following OS/architectures are supported by docker images.

  • linux/amd64
  • linux/arm64
  • linux/armv7

To deploy VProxy as docker container, first create a data volume

sudo docker volume create --name vproxy-data

Then start the container

sudo docker run -it --name vproxy --network host -v vproxy-data:/app/data/:rw -v vproxy-data:/etc/letsencrypt:rw -v vproxy-data:/var/lib/letsencrypt:rw vproxy/server
  • Volume /app/data/ hosts application data of vproxy
  • Volumes /etc/letsencrypt and /var/lib/letsencrypt are required by certbot to store certificates.

Certainly the container can be started as Linux daemon. Here is a full example

#!/bin/bash

sudo docker volume create --name vproxy-data;  #create data volume

sudo docker rm -f vproxy;  #remove any previous container

#Start the container as daemon
sudo docker run -d \
  --name vproxy \
  --network host \
  --restart=always \
  -v vproxy-data:/app/data/:rw \
  -v vproxy-data:/etc/letsencrypt:rw \
  -v vproxy-data:/var/lib/letsencrypt:rw \
  --cap-add net_bind_service \
  vproxy/server:latest

sudo docker logs -f vproxy;  #Watch the logs

After docker contaienr is started, startup screen presents as below. Start Screen

Step 2. Setup SSL

In the startup screen, Console URL is presented. Copy the Console URL in startup screen to your local machine's web browser, open it. It loads the management backend after input username and password which are presented in startup screen as well.

Configuration

Now you can upload SSL certificate files.

Alternatively you can install a free SSL certificate by clicking "Request free SSL/TLS certificate".

Configuration

You can input the domain name and email address to request.

By clicking "Request" button, Let's Encrypt sends an HTTP GET request to http://some.domain.com:80. Hence before requesting a new SSL certificate, the domain name must be resolved to the server's Internet IP Address. And the web site is accessible at port 80 to the Internet.

If everything goes ok, the new SSL certificate is instally automatically.

Configuration

Try to switch to HTTPS to ensure it is accessible.

Step 3. Setup Client

Next,create users who can use HTTPS proxy to access Internet.

User manager

Next, install client and fill in your domain name / port / username / password to access.

Here are recommanded softwares :

PlatformSoftwareComments
iOSShadowrocketShadowrocket is a rule based proxy utility for iOS. Screenshot1 Screenshot2
Firefox BrowserSwitchyOmega for VProxySwitchyOmega for VProxy is an addon for Firefox web browser. Screenshot

 from https://github.com/vproxy666/v-proxy

No comments:

Post a Comment