|
@@ -10,26 +10,35 @@ frp is a fast reverse proxy to help you expose a local server behind a NAT or fi
|
|
|
|
|
|
## Catalog
|
|
## Catalog
|
|
|
|
|
|
|
|
+<!-- vim-markdown-toc GFM -->
|
|
* [What can I do with frp?](#what-can-i-do-with-frp)
|
|
* [What can I do with frp?](#what-can-i-do-with-frp)
|
|
* [Status](#status)
|
|
* [Status](#status)
|
|
* [Architecture](#architecture)
|
|
* [Architecture](#architecture)
|
|
* [Example Usage](#example-usage)
|
|
* [Example Usage](#example-usage)
|
|
- * [Communicate with your computer in LAN by SSH](#communicate-with-your-computer-in-lan-by-ssh)
|
|
|
|
- * [Visit your web service in LAN by custom domains](#visit-your-web-service-in-lan-by-custom-domains)
|
|
|
|
|
|
+ * [Communicate with your computer in LAN by SSH](#communicate-with-your-computer-in-lan-by-ssh)
|
|
|
|
+ * [Visit your web service in LAN by custom domains](#visit-your-web-service-in-lan-by-custom-domains)
|
|
|
|
+ * [Forward DNS query request](#forward-dns-query-request)
|
|
* [Features](#features)
|
|
* [Features](#features)
|
|
- * [Dashboard](#dashboard)
|
|
|
|
- * [Authentication](#authentication)
|
|
|
|
- * [Encryption and Compression](#encryption-and-compression)
|
|
|
|
- * [Reload configures without frps stopped](#reload-configures-without-frps-stopped)
|
|
|
|
- * [Privilege Mode](#privilege-mode)
|
|
|
|
- * [Port White List](#port-white-list)
|
|
|
|
- * [Connection Pool](#connection-pool)
|
|
|
|
- * [Rewriting the Host Header](#rewriting-the-host-header)
|
|
|
|
|
|
+ * [Dashboard](#dashboard)
|
|
|
|
+ * [Authentication](#authentication)
|
|
|
|
+ * [Encryption and Compression](#encryption-and-compression)
|
|
|
|
+ * [Reload configures without frps stopped](#reload-configures-without-frps-stopped)
|
|
|
|
+ * [Privilege Mode](#privilege-mode)
|
|
|
|
+ * [Port White List](#port-white-list)
|
|
|
|
+ * [Connection Pool](#connection-pool)
|
|
|
|
+ * [Rewriting the Host Header](#rewriting-the-host-header)
|
|
|
|
+ * [Password protecting your web service](#password-protecting-your-web-service)
|
|
|
|
+ * [Custom subdomain names](#custom-subdomain-names)
|
|
|
|
+ * [Connect frps by HTTP PROXY](#connect-frps-by-http-proxy)
|
|
* [Development Plan](#development-plan)
|
|
* [Development Plan](#development-plan)
|
|
* [Contributing](#contributing)
|
|
* [Contributing](#contributing)
|
|
* [Donation](#donation)
|
|
* [Donation](#donation)
|
|
|
|
+ * [AliPay](#alipay)
|
|
|
|
+ * [Paypal](#paypal)
|
|
* [Contributors](#contributors)
|
|
* [Contributors](#contributors)
|
|
|
|
|
|
|
|
+<!-- vim-markdown-toc -->
|
|
|
|
+
|
|
## What can I do with frp?
|
|
## What can I do with frp?
|
|
|
|
|
|
* Expose any http and https service behind a NAT or firewall to the internet by a server with public IP address(Name-based Virtual Host Support).
|
|
* Expose any http and https service behind a NAT or firewall to the internet by a server with public IP address(Name-based Virtual Host Support).
|
|
@@ -82,6 +91,8 @@ Put **frpc** and **frpc.ini** to your server in LAN.
|
|
auth_token = 123
|
|
auth_token = 123
|
|
|
|
|
|
[ssh]
|
|
[ssh]
|
|
|
|
+ type = tcp
|
|
|
|
+ local_ip = 127.0.0.1
|
|
local_port = 22
|
|
local_port = 22
|
|
```
|
|
```
|
|
|
|
|
|
@@ -139,6 +150,48 @@ Howerver, we can expose a http or https service using frp.
|
|
|
|
|
|
6. Now visit your local web service using url `http://www.yourdomain.com:8080`.
|
|
6. Now visit your local web service using url `http://www.yourdomain.com:8080`.
|
|
|
|
|
|
|
|
+### Forward DNS query request
|
|
|
|
+
|
|
|
|
+1. Modify frps.ini, configure a reverse proxy named [dns]:
|
|
|
|
+
|
|
|
|
+ ```ini
|
|
|
|
+ # frps.ini
|
|
|
|
+ [common]
|
|
|
|
+ bind_port = 7000
|
|
|
|
+
|
|
|
|
+ [dns]
|
|
|
|
+ type = udp
|
|
|
|
+ listen_port = 6000
|
|
|
|
+ auth_token = 123
|
|
|
|
+ ```
|
|
|
|
+
|
|
|
|
+2. Start frps:
|
|
|
|
+
|
|
|
|
+ `./frps -c ./frps.ini`
|
|
|
|
+
|
|
|
|
+3. Modify frpc.ini, set remote frps's server IP as x.x.x.x, forward dns query request to google dns server `8.8.8.8:53`:
|
|
|
|
+
|
|
|
|
+ ```ini
|
|
|
|
+ # frpc.ini
|
|
|
|
+ [common]
|
|
|
|
+ server_addr = x.x.x.x
|
|
|
|
+ server_port = 7000
|
|
|
|
+ auth_token = 123
|
|
|
|
+
|
|
|
|
+ [dns]
|
|
|
|
+ type = udp
|
|
|
|
+ local_ip = 8.8.8.8
|
|
|
|
+ local_port = 53
|
|
|
|
+ ```
|
|
|
|
+
|
|
|
|
+4. Start frpc:
|
|
|
|
+
|
|
|
|
+ `./frpc -c ./frpc.ini`
|
|
|
|
+
|
|
|
|
+5. Send dns query request by dig:
|
|
|
|
+
|
|
|
|
+ `dig @x.x.x.x -p 6000 www.goolge.com`
|
|
|
|
+
|
|
## Features
|
|
## Features
|
|
|
|
|
|
### Dashboard
|
|
### Dashboard
|
|
@@ -151,8 +204,8 @@ Configure a port for dashboard to enable this feature:
|
|
[common]
|
|
[common]
|
|
dashboard_port = 7500
|
|
dashboard_port = 7500
|
|
# dashboard's username and password are both optional,if not set, default is admin.
|
|
# dashboard's username and password are both optional,if not set, default is admin.
|
|
-dashboard_username = abc
|
|
|
|
-dashboard_password = abc
|
|
|
|
|
|
+dashboard_user = admin
|
|
|
|
+dashboard_pwd = admin
|
|
```
|
|
```
|
|
|
|
|
|
Then visit `http://[server_addr]:7500` to see dashboard, default username and password are both `admin`.
|
|
Then visit `http://[server_addr]:7500` to see dashboard, default username and password are both `admin`.
|
|
@@ -167,6 +220,8 @@ Client that want's to register must set a global `auth_token` equals to frps.ini
|
|
|
|
|
|
Note that time duration bewtween frpc and frps mustn't exceed 15 minutes because timestamp is used for authentication.
|
|
Note that time duration bewtween frpc and frps mustn't exceed 15 minutes because timestamp is used for authentication.
|
|
|
|
|
|
|
|
+Howerver, this timeout duration can be modified by setting `authentication_timeout` in frps's configure file. It's defalut value is 900, means 15 minutes. If it is equals 0, then frps will not check authentication timeout.
|
|
|
|
+
|
|
### Encryption and Compression
|
|
### Encryption and Compression
|
|
|
|
|
|
Defalut value is false, you could decide if the proxy will use encryption or compression whether the type is:
|
|
Defalut value is false, you could decide if the proxy will use encryption or compression whether the type is:
|
|
@@ -314,11 +369,67 @@ host_header_rewrite = dev.yourdomain.com
|
|
|
|
|
|
If `host_header_rewrite` is specified, the Host header will be rewritten to match the hostname portion of the forwarding address.
|
|
If `host_header_rewrite` is specified, the Host header will be rewritten to match the hostname portion of the forwarding address.
|
|
|
|
|
|
|
|
+### Password protecting your web service
|
|
|
|
+
|
|
|
|
+Anyone who can guess your tunnel URL can access your local web server unless you protect it with a password.
|
|
|
|
+
|
|
|
|
+This enforces HTTP Basic Auth on all requests with the username and password you specify in frpc's configure file.
|
|
|
|
+
|
|
|
|
+It can be only enabled when proxy type is http.
|
|
|
|
+
|
|
|
|
+```ini
|
|
|
|
+# frpc.ini
|
|
|
|
+[web]
|
|
|
|
+privilege_mode = true
|
|
|
|
+type = http
|
|
|
|
+local_port = 80
|
|
|
|
+custom_domains = test.yourdomain.com
|
|
|
|
+http_user = abc
|
|
|
|
+http_pwd = abc
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+Visit `test.yourdomain.com` and now you need to input username and password.
|
|
|
|
+
|
|
|
|
+### Custom subdomain names
|
|
|
|
+
|
|
|
|
+It is convenient to use `subdomain` configure for http、https type when many people use one frps server together.
|
|
|
|
+
|
|
|
|
+```ini
|
|
|
|
+# frps.ini
|
|
|
|
+subdomain_host = frps.com
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+Resolve `*.frps.com` to the frps server's IP.
|
|
|
|
+
|
|
|
|
+```ini
|
|
|
|
+# frpc.ini
|
|
|
|
+[web]
|
|
|
|
+privilege_mode = true
|
|
|
|
+type = http
|
|
|
|
+local_port = 80
|
|
|
|
+subdomain = test
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+Now you can visit your web service by host `test.frps.com`.
|
|
|
|
+
|
|
|
|
+Note that if `subdomain_host` is not empty, `custom_domains` should not be the subdomain of `subdomain_host`.
|
|
|
|
+
|
|
|
|
+### Connect frps by HTTP PROXY
|
|
|
|
+
|
|
|
|
+frpc can connect frps using HTTP PROXY if you set os environment `HTTP_PROXY` or configure `http_proxy` param in frpc.ini file.
|
|
|
|
+
|
|
|
|
+```ini
|
|
|
|
+# frpc.ini
|
|
|
|
+server_addr = x.x.x.x
|
|
|
|
+server_port = 7000
|
|
|
|
+http_proxy = http://user:pwd@192.168.1.128:8080
|
|
|
|
+```
|
|
|
|
+
|
|
## Development Plan
|
|
## Development Plan
|
|
|
|
|
|
-* Support udp protocol.
|
|
|
|
-* Support wildcard domain name.
|
|
|
|
* Url router.
|
|
* Url router.
|
|
|
|
+* Log http request information in frps.
|
|
|
|
+* Direct reverse proxy, like haproxy.
|
|
* Load balance to different service in frpc.
|
|
* Load balance to different service in frpc.
|
|
* Debug mode for frpc, prestent proxy status in terminal.
|
|
* Debug mode for frpc, prestent proxy status in terminal.
|
|
* Inspect all http requests/responses that are transmitted over the tunnel.
|
|
* Inspect all http requests/responses that are transmitted over the tunnel.
|