天天看點

FRP内網穿透

參考github文檔

frp 是一個可用于内網穿透的高性能的反向代理應用,支援 tcp, udp, http, https 協定。

frp 的作用

  • 利用處于内網或防火牆後的機器,對外網環境提供 http 或 https 服務。
  • 對于 http, https 服務支援基于域名的虛拟主機,支援自定義域名綁定,使多個域名可以共用一個80端口。
  • 利用處于内網或防火牆後的機器,對外網環境提供 tcp 和 udp 服務,例如在家裡通過 ssh 通路處于公司内網環境内的主機。

架構

FRP内網穿透

image.png

使用示例

下載下傳frp:

https://github.com/fatedier/frp/releases

将 frps 及 frps.ini 放到具有公網 IP 的機器上。

将 frpc 及 frpc.ini 放到處于内網環境的機器上。

配置ssh通路公司内網多台伺服器及自定義子域名通路多台機器上的web服務

在多人同時使用一個 frps 時,通過自定義二級域名的方式來使用會更加友善。

通過在 frps 的配置檔案中配置

subdomain_host

,就可以啟用該特性。之後在 frpc 的 http、https 類型的代理中可以不配置

custom_domains

,而是配置一個

subdomain

參數。

隻需要将

*.{subdomain_host}

解析到 frps 所在伺服器。之後使用者可以通過

subdomain

自行指定自己的 web 服務所需要使用的二級域名,通過

{subdomain}.{subdomain_host}

來通路自己的 web 服務。

1. 下載下傳解壓

下載下傳的軟體包中包含frps和frpc所需的啟動程式和配置檔案。

wget https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz

tar xvf frp_0.14.1_linux_amd64.tar.gz

cd frp_0.14.1_linux_amd64
           

2. 編輯

frps.ini

[common]
bind_port = 7000            # frps與frpc用戶端通信的端口
vhost_http_port = 8080      # 對user開放的web通路端口
subdomain_host = frps.com
           

将泛域名

*.frps.com

解析到 frps 所在伺服器的 公網IP 位址。

啟動frps:

./frps -c ./frps.ini

3. 編輯

frpc.ini

假設公司内網有三台伺服器,ip分别為:

  • 10.0.1.104 (compute1)
  • 10.0.1.105 (compute2)
  • 10.0.1.106 (control1)

3.1 編輯10.0.1.104 (compute1)的

frpc.ini

[common]
server_addr = x.x.x.x    # frps所在主機的IP
server_port = 7000       # frps與frpc用戶端通信的端口

[ssh-compute1]           # 如果有多台内網伺服器共用一台frps,則這個名稱不能重複
type = tcp               # 通信協定類型
local_ip = 10.0.1.104    # 本地IP
local_port = 2002        # 本地開放的SSH端口
remote_port = 6001       # 遠端通路的端口(多台内網伺服器,此端口不能重複), 從遠端通過ssh連接配接本機器,指令:ssh -p 6001 x.x.x.x

[web-compute1]           # 内網多台web伺服器,此名稱不能重複
type = http              # 通信協定類型   
local_port = 8000        # 本地開放的web端口
subdomain = compute1     # 子域名
           

啟動frpc:

./frpc -c ./frpc.ini

可以通過

compute1.frps.com:8080

就可以通路到内網的web服務了。

SSH通路伺服器:

ssh -p 6001 x.x.x.x

3.2 編輯10.0.1.105 (compute2)的

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh-compute2]
type = tcp
local_ip = 10.0.1.105
local_port = 2002
remote_port = 6002

[web-compute2]
type = http
local_port = 8000
subdomain = compute2
           

compute2.frps.com:8080

通路到内網的web服務。

ssh -p 6002 x.x.x.x

3.3 編輯10.0.1.106 (control1)的

frpc.ini

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 10.0.1.106
local_port = 2002
remote_port = 6000

[web]
type = http
local_port = 8000
subdomain = control1
           

control1.frps.com:8080

ssh -p 6000 x.x.x.x

繼續閱讀