frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp, http, https 協議。linux
frp 的做用git
1.利用處於內網或防火牆後的機器,對外網環境提供 http 或 https 服務。github
2.對於 http, https 服務支持基於域名的虛擬主機,支持自定義域名綁定,使多個域名能夠共用一個80端口。shell
3.利用處於內網或防火牆後的機器,對外網環境提供 tcp 和 udp 服務,例如在家裏經過 ssh 訪問處於公司內網環境內的主機。centos
以 Centos 7.6 爲例,咱們來實現一個簡單的內網機器到 公網 IP 的端口映射,使得內網的機器能夠在外部進行訪問。安全
須要一臺有公網 IP 的映射機器,咱們這裏用的是一臺 阿里雲的 centos 7.7服務器
下面進入正文:架構
根據對應的操做系統及架構,從 Release 頁面下載最新版本的程序。ssh
將 frps 及 frps.ini 放到具備公網 IP 的機器上。tcp
將 frpc 及 frpc.ini 放處處於內網環境的機器上。
centos64位下載amd64,寫這篇文章的時候,最新版本是0.29。因此執行:
解壓:tar -xvf frp_0.29.0_linux_amd64.tar.gz
cd frp_0.29.0_linux_amd64
2.配置 Server 端(用來代理的 那臺 阿里雲公網 IP 服務器)
修改 frps.ini 文件,這裏使用了最簡化的配置:
frps.ini
[common] bind_port = 7000 注意:7000端口要開放,(下方有詳細解釋怎麼開放系統端口) 啓動 frps:
nohup ./frps -c ./frps.ini & 3.配置 Client 端(咱們的內網服務器)
修改 frpc.ini 文件,假設 frps 所在服務器的公網 IP 爲 x.x.x.x;
這裏是指將內網的22端口映射到公網的6000端口上
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 = 6000
注意:公網服務器6000、7000端口要開放 (在阿里雲的機器,點擊「配置安全組」,在「配置規則」裏假如兩條安全組規則,)
image.png
同時,在 centos 的防火牆裏,咱們要開放這兩個端口設置成對外可訪問的。
分別執行這三條命令:
firewall-cmd --zone=public --add-port=6000/tcp --permanent # 開放 6000 端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent # 開放 7000 端口
firewall-cmd --reload # 重載防火牆設置
啓動 frpc:
nohup ./frpc -c ./frpc.ini &
上面是吧公網服務器的6000端口映射到內網服務器的22端口,這樣就能夠隨時使用ssh鏈接內網服務器了。
image.png
成功了,咱們經過公網 IP 鏈接到了一臺內網的機器!
寫在末尾:此次只是簡單使用下,幾步就成功了。這個工具功能還很強大有待使用挖掘。若是你們跟着這篇教程作了以後還有問題,或沒法成功,歡迎下方評論留言,我會及時回覆~