初學、沒有雲服務器的時候總想着怎樣才能讓別人訪問到自己的項目。
在查閱了百度,逛過了一些論壇之后,了解到了 內網穿透 這個詞。
經過一番鑽研,通過 手機 + KSWEB + 電腦 成功將內網服務映射出去了(現在想來在手機上跑服務器有點多此一舉)
后來慢慢接觸到了更多內網映射的渠道,如櫻花frp、浮居frp等等,也充過會員,速度還行。
但是,怎能止步於此,前段時間接觸到了用私人雲服務器搭建的frp服務,這激起了我的興趣,經過一番琢磨最終搭建起來了,特此記錄
Windows 和 Linux 通用,只是軟件版本和命令稍有不同
開始前你得具備以下條件
雲服務器 + 大陸境內已備案的域名 + 願意琢磨(第一次會稍微有一點點繞,其實很簡單)
1.下載對應雲服務器版本的 frp(frps) 包
我的雲服務器版本是 CetenOS 7,這里給出我用到的,其余系統百度下載
frp_0.27.0_linux_amd64.tar 點擊下載
2.把 frp 包上傳到雲服務器,放到自己習慣的目錄下(也可解壓后通過寶塔面板上傳),如下圖
不會 傳/解壓 用就百度,新人用寶塔也方便
3.修改 frps.ini 配置文件
示例:
[common] # frp服務端口 bind_port = 7000 # 用戶連接時的url端口 vhost_http_port = 10000 # 主域名 通過此域名連接(也可用公網IP) subdomain_host = test.com dashboard_port = 7500 # 賬戶 dashboard_user = admin # 密碼 dashboard_pwd = admin123 max_pool_count = 10 # 日志文件位置及名字 log_file = ./frps.log # 日志級別 log_level = info # 日志最多記錄天數 log_max_days = 3 # token 客戶端token需要與此一致 token = testtoken [web01] # 如果值為http,則必須設置 vhost_http_port type = http # 如果代理類型等於http,則必須設置自定義_域,並用逗號分隔 # 例:custom_domains = web01.yourdomain.com,web01.yourdomain2.com custom_domains = test.com
4.雲服務端口放行
步驟3自定義配置好了后
放行frp服務端口(步驟三的 bind_port = 7000)
放行自定義訪問端口(步驟三的 vhost_http_port = 10000)
5.添加域名解析
例如你的主域名是 test.com
這里添加解析名為 frp,記錄值為雲服務器的 公網IP
最終效果是 frp.test.com
6.啟動frp服務
先切換到frp的根目錄
再用命令 ./frps -c ./frps.ini 啟動服務
(上面是相對路徑,也可不切換路徑,直接在啟動命令中用絕對路徑)
此種方式啟動服務后不能關閉命令窗口,命令窗口關閉后服務也會關閉
掛后台方式參考 步驟13
7. 至此,雲服務器端配置全部完成!!!
只有最后幾個步驟了,馬上完工!
8.客戶端下載 frpc 包(不是frps包)
我的系統是 Win10,所以用Windows對應的 frpc包
這里給出我用到的,其余系統百度下載
frpc_0.29.0_windows_amd64 點擊下載
下載好 frpc包后將文件解壓到C盤以外的其它盤(一般文件不建議放C盤)
示例:在E盤根目錄新建一個名為 frpc的文件夾,將frpc包解壓在里面
如圖:
9.配置 frpc.ini
windows下雙擊打開 frpc.ini
左側是雲服務器的frps配置,供對照
右側是客戶端的frpc配置,這才是我們要設置的地方
1.local_ip 是要映射服務所在的主機ip,如果和fprc在同一電腦可用127.0.0.1(一般都是),不是的話要用對應ip地址
2.local_port 是我們的服務端口,比如SpringBoot程序或者Tomcat的端口是8080就填8080
3.右側自定義域名與 步驟5 的解析一致(配置文件第6行和第10行請保持一致,防止多客戶端沖突)
10.萬事俱備,檢查一遍
1.至此配置都完成了,檢查一遍以上步驟是否有遺漏或者錯誤配置
2.確保雲服務器 frps 處於運行狀態 (./frps -c ./frps.ini 執行后不能關閉命令界面,否則會停止服務。掛后台方式參考 步驟13)
3.確保本地 frpc 處於啟動狀態,Windows下啟動后cmd窗口不能關(Windows下雙擊.bat文件啟動,不能直接點 frpc.exe)
4.確保要映射的端口處於運行狀態(如映射Tomcat請確保Tomcat處於運行狀態)
11.啟動內網映射
在確保以上步驟無誤后
以Windows為例,雙擊 frpc.bat 啟動映射服務(Windows客戶端掛后台方式參考百度)
如下圖,提示success且光標處於待定狀態便是啟動成功了
12.訪問服務
此前配置如下(參考 步驟3 和 步驟9):
主域名:test.com
解析值:frp
訪問端口:10000
映射類型:http
合並起來就是:http://frp.test.com:10000
外網即可通過以上鏈接訪問我們映射出來的服務
13.frps 服務掛后台運行
以 Linux 為例,在目錄 /etc/systemd/system 下新建文件名為 frps.service 的文件(Windows參考百度)
說明: ExecStart = frps.exe所在的目錄/frps -c frps.ini所在的目錄/frps.ini
內容如下:
[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/home/frp_0.27.0_linux_amd64/frps -c /home/frp_0.27.0_linux_amd64/frps.ini [Install] WantedBy=multi-user.target
文件新建好后用以下命令控制(Linux的客戶端也是此命令,把 frps 改成 frpc 即可):
systemctl enable frps #設置開機啟動
systemctl start frps #啟動
systemctl stop frps #停止
systemctl status frps #狀態
其它:多個客戶端使用映射
我們只需要在 步驟五 給每個不同客戶端添加一個解析值就可以了
如 frp, frp2, frp3
不同客戶端的配置文件里對應解析域名分別填上frp, frp2, frp3
最終訪問的url就是:
http://frp.test.com:10000
http://frp2.test.com:10000
http://frp3.test.com:10000