frp實現基於反向代理的內網穿透

xzajyjs發表於2021-12-14

個人部落格主頁: xzajyjs.cn


frp是什麼

簡單地說,frp就是一個反向代理軟體,它體積輕量但功能很強大,可以使處於內網或防火牆後的裝置對外界提供服務,它支援HTTP、TCP、UDP等眾多協議。


實驗環境

  • 一臺擁有公網IP的VPS(Linux)
  • 需要進行內網穿透的實驗機Windows(暫不支援macOS)

三種服務樣例

1. ssh服務

在Linux上和Win上分別下載對應的最新Release版本(點我跳轉)

tar -zxv frp_0.38.0_linux_amd64.tar.gz
cd frp_0.38.0_linux_amd64

在我們的公網伺服器 Server A上配置 frps.ini設定通訊埠

# frps.ini
[common]
bind_port = 7000

啟動服務

./frps -c frps.ini

接著配置我們Windows端的 frpc.ini (這次我們實驗使用預設的ssh型別即可)

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7890

server_addr 填入我們的公網IP

server_port 剛剛的通訊埠

local_ip 需要進行內網穿透的主機ip

local_port 是需要進行對映的埠

remote_port 是對映至公網伺服器的埠

配置好後開啟服務連線

.\frpc.exe -c frpc.ini

此時就可以通過公網IP+埠(7890)連線我們windows的22埠了


2. http服務

配置vps的frps.ini

# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080

配置win的frpc.ini

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = www.example.com

此時通過訪問公網IP+8080埠訪問到我們部署在win上80埠的web服務


3. dns服務

配置frps.ini

# frps.ini
[common]
bind_port = 7000

配置frpc.ini

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000

使用dig進行測試

dig @[公網IP] -p 6000 www.bing.com

其他

frp支援遠遠不止這些服務,當然也可以自定義服務。具體可閱讀手冊

相關文章