frp內網穿透
什麼是FRP?
frp 是一個高效能的反向代理應用,可以幫助您輕鬆地進行內網穿透,對外網提供服務,支援 tcp, http, https 等協議型別,並且 web 服務支援根據域名進行路由轉發。
你需要掌握的知識:
- 首先你需要知道一些網路知識,內網、外網、動態IP、域名等。
- 你得有臺掛在公網上的一臺伺服器,現在伺服器都挺便宜的,阿里雲、騰訊雲等等。
- 我說的這個frp是一個開源的專案,在GitHub上。可能會牽扯到別的東西。
- 另外你需要會一些常用的linux系統命令。
這是frp的官方文件,上面有詳細的介紹。
frp分為server端與client端。顧名思義,server端放到伺服器上,client端放在你要穿透的機器上。
1先下載frp的軟體,為了方便,我們直接下載人家打包好的。
開啟這個網頁,選擇你需要的版本frp
一般伺服器都是用的64位系統,所以直接選擇linux_amd64的就可以了,使用wget
命令下載。
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz tar -zxvf frp_0.20.0_linux_amd64.tar.gz cd frp_0.20.0_linux_amd64 外網主機作為服務端,可以刪掉不必要的客戶端檔案,使用rm指令刪除檔案。 rm -f frpc rm -f frpc.ini
2下面是配置服務端
vim frps.ini
[common]
bind_port = 7000
#vhost_http_port = 8088
dashboard_port = 7500
#儀表板的使用者名稱和密碼都是可選的,如果未設定,則預設為admin。
dashboard_user = admin
dashboard_pwd = admin123
login_fail_exit = false
[common]部分是必須有的配置,其中bind_port是自己設定的frp服務端埠,vhost_http_port是自己設定的http訪問埠。(這個地方比較坑,所以還是不要使用http協議了,我統一使用了tcp協議)
儲存上面的配置後,使用以下指令啟動frp服務端。(文章下面會附上後臺執行frp)
./frps -c ./frps.ini
服務端到此就已經全部配置完畢。
3下面是配置客戶端
客戶端配置操作跟服務端配置差不多。
wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
tar -zxvf frp_0.20.0_linux_amd64.tar.gz
cd frp_0.20.0_linux_amd64
rm -f frps
rm -f frps.ini
vim frpc.ini
以下是客戶端配置:
[common]
server_addr = 你的伺服器IP地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web01]
type = tcp
local_port = 8080
remote_port = 8080
[common]中的server_addr填frp服務端的ip(也就是外網主機的IP),server_port填frp服務端的bind_prot。
[ssh]中的local_port填客戶端的ssh埠,一般都是22。
[web01]是你要代理的web頁面,我這裡代理的是8080埠。
在這裡需要說明一點,local_port是客戶端的埠,remote_port是伺服器端的埠。
然後使用 ./frpc -c ./frpc.ini
來執行
4檢視成果
使用任意任意bash來連線你客戶端的ssh。
ssh -oPort=6000 使用者名稱@伺服器ip
如果要訪問網頁,瀏覽器中輸入 http://yourip:8080 ,即可檢視到你代理的網頁。
多說一句,當有域名的時候,你可以直接將伺服器ip替換成域名即可。
這是frp自帶的一個面板,可以檢視埠的連線情況。
5如何讓frp在後臺執行。
使用nohup可以讓程式在後臺執行。命令如下。
nohup ./frpc -c ./frpc.ini &
這也不是最終的解決方法,具體設定在: frp後臺啟動的幾個方法
6為什麼配置了,卻打不開網頁,連線不上呢
- 首先確保有網。
- 其次伺服器的安全組是不是沒有放開埠。