1 frp
Github地址:https://github.com/fatedier/frp
Github發佈包地址:https://github.com/fatedier/frp/releases
官方教程:https://github.com/fatedier/frp/blob/master/README_zh.md
右鍵該下載項獲取鏈接地址:
2 需求說明
如果我們在內網部署了一個網頁即時聊天程序,使用websocket保持長連接並即時通信,網頁http請求端口爲80,而websocket請求端口爲45635,該網頁聊天服務在內網機子上部署。
需求:希望使用frp進行內網穿透,可以訪問內網機子上的web服務打開聊天網頁,也可以使用websocket服務進行網頁即時聊天。
3 外網服務器frp服務端配置(安裝時最新版本0.32.1爲例)
3.1 下載frp
使用
mkdir frp
命令創建一個新的文件夾frp,然後在文件夾下使用命令:
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
下載frp。
3.2 解壓,並進入解壓文件夾
tar -zxvf frp_0.32.1_linux_amd64.tar.gz
cd frp_0.32.1_linux_amd64/
3.3 刪掉不必要的客戶端文件
rm -rf frpc
rm -rf frpc.ini
3.4 編輯frps.ini文件
vi frps.ini
打開該文件,並將該文件內容修改爲:
[common]
# 服務器端監聽客戶端連接請求的端口
bind_port = 7000
# 服務器端監聽http請求的端口
vhost_http_port = 80
保存退出。
3.5 防火牆開啓相關端口
開啓端口:
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=45635/tcp --permanent
重啓防火牆:systemctl restart firewalld.service
3.6 啓動服務的幾種方式
3.6.1 正常啓動
./frps -c ./frps.ini
3.6.2 使用nohup後臺掛起服務
nohup ./frps -c frps.ini > ./log.txt 2>&1 &
日誌輸出到log.txt
3.6.3 製作一鍵啓動sh腳本
3.6.3.1 啓動腳本start.sh
#! /bin/bash
nohup ./frps -c frps.ini > log.txt 2>&1 &
echo $! >./pid.txt
3.6.3.2 停止腳本stop.sh
#! /bin/bash
PID=$(cat ./pid.txt)
kill -9 $PID
3.6.3.4 實時日誌查看
tail -f ./log.txt
4 內網服務器frp客戶端配置(安裝時最新版本0.32.1爲例)
4.1 下載
使用
mkdir frp
命令創建一個新的文件夾frp,然後在文件夾下使用命令:
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
下載frp。
4.2 解壓,並進入解壓文件夾
tar -zxvf frp_0.32.1_linux_amd64.tar.gz
cd frp_0.32.1_linux_amd64/
4.3 刪掉不必要的客戶端文件
rm -rf frps
rm -rf frps.ini
4.4 編輯frpc.ini文件
vi frpc.ini
打開該文件,並將該文件內容修改爲:
[common]
server_addr = xx.xx.xx.xx(外網主機ip)
server_port = 7000
# 內網web服務,監聽端口爲80
[web]
type = http
local_port = 80
custom_domains = xx.xx.xx.xx(外網主機ip,和server_addr的相同,或者寫域名,但是要做dns解析)
# websocket服務,端口假設爲45635
[web01]
type = tcp
local_port = 45635
custom_domains = xx.xx.xx.xx(外網主機ip,和server_addr的相同,或者寫域名,但是要做dns解析)
remote_port = 45635
保存退出。
4.5 防火牆開啓相關端口
開啓端口:
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=45635/tcp --permanent
重啓防火牆:systemctl restart firewalld.service
4.6 啓動服務的幾種方式
4.6.1 正常啓動
./frpc -c ./frpc.ini
4.6.2 使用nohup後臺掛起服務
nohup ./frpc -c frpc.ini > ./log.txt 2>&1 &
日誌輸出到log.txt
4.6.3 製作一鍵啓動sh腳本
4.6.3.1 啓動腳本start.sh
#! /bin/bash
nohup ./frpc -c frpc.ini > log.txt 2>&1 &
echo $! >./pid.txt
4.6.3.2 停止腳本stop.sh
#! /bin/bash
PID=$(cat ./pid.txt)
kill -9 $PID
4.6.3.4 實時日誌查看
tail -f ./log.txt
5 訪問測試
分別開啓遠程主機frp服務,以及內網frp服務,保證相關端口已開啓。
frp內網穿透訪問內網web服務:xx.xx.xx.xx:80
frp內網穿透訪問內網websocket服務:xx.xx.xx.xx:45635