利用frp內網穿透實現用自家電腦釋出網站(不用買伺服器了)
一直想總結一下使用frp的經驗,今天來寫一下
我的yiiu.co域名的網站都是用frp做的內網穿透實現的,伺服器就在我身邊,釋出的網站服務外網都訪問,下面就來說說我的配置方法
下載frp
這個不多說,選擇好自己的平臺就可以了,注意版本號一定要一致,ofollow,noindex" target="_blank">下載地址
開啟可以看到 linux 平臺有很多版本,386, amd64, arm, arm64 等等,這裡說一下,如果你伺服器是32位,就下載 386,如果你伺服器是64位的,而且你又不能分清cpu是arm架構的還是amd架構的,那也選386
總之一句話,對系統架構分不清的就只下載386的就對了
解壓下載好的壓縮包,可以看到幾個檔案
. ├── LICENSE ├── frpc ├── frpc.ini ├── frpc_full.ini ├── frps ├── frps.ini └── frps_full.ini
各檔案說明
- LICENSE 版權說明檔案
- frpc 客戶端啟動命令
- frpc.ini 客戶端配置檔案
- frpc_full.ini 客戶端配置檔案參考檔案
- frps 服務端啟動命令
- frps.ini 服務端配置檔案
- frps_full.ini 服務端配置檔案參考檔案
frp執行流程
做內網穿透需要事先準備的
- 一臺外網伺服器
- 一臺內網伺服器
一次請求的經過,最簡單的流程
使用者請求(瀏覽器) -> 外網伺服器ip -> 外網伺服器上部署的frps -> 內網伺服器上部署的frpc -> 內網伺服器上部署的服務
請求成功後,響應過程與請求過程相反
這個過程中還可以加上 nginx 來做不同域名共用80埠的轉發工作,那樣就會變成
使用者請求(瀏覽器) -> 外網伺服器ip -> 外網伺服器nginx -> 外網伺服器上部署的frps -> 內網伺服器上部署的frpc -> 內網伺服器nginx -> 內網伺服器上部署的服務
好了明白這些了,就可以來做配置了
配置frps
想辦法把frps
frps.ini
拷貝到外網伺服器上
我這假設放在/opt/frp/
下,假設外網伺服器ip是10.10.10.10
, 假設網站域名是example.com
修改frps.ini
[common] bind_port = 7000 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = 123123 token = 123123 vhost_http_port = 8000 subdomain_host = example.com
- bind_port frps啟動時要佔用的埠
- dashboard_port frps啟動後管理後臺的埠
- dashboard_user frps啟動後管理後臺登入的使用者名稱
- dashboard_pwd frps啟動後管理後臺登入的密碼
- token frpc連線frps時要用到的令牌,如果不設定任何一個frpc都能連進來就不安全了
- vhost_http_port frps轉發的內網服務的埠
- subdomain_host 你的域名
然後啟動 frps
# 給frps附上可執行許可權 sudo chmod +x frps # 在後臺執行並將日誌寫入到當前目錄下的 log.file 裡 ./frps -c frps.ini > log.file 2>&1 &
配置frpc
想辦法把frpc
frpc.ini
拷貝到內網伺服器上
我這假設放在/opt/frp/
下, 假設要配置的網站域名是example.com
bbs.example.com
blog.example.com
三個域名
修改frps.ini
[common] server_addr = 10.10.10.10 server_port = 7000 token = 123123 [example] type = http local_ip = localhost local_port = 8080 use_encryption = false use_compression = true custom_domains = example.com [bbs] type = http local_ip = localhost local_port = 8081 use_encryption = false use_compression = true subdomain = bbs [blog] type = http local_ip = localhost local_port = 8082 use_encryption = false use_compression = true subdomain = blog
相關配置說明
frps.ini
啟動 frpc
# 給frps附上可執行許可權 sudo chmod +x frpc # 在後臺執行並將日誌寫入到當前目錄下的 log.file 裡 ./frpc -c frpc.ini > log.file 2>&1 &
注意:內網伺服器上要啟動三個web服務,分別埠對應 8080, 8081, 8082
對映ssh
如果我們不在內網伺服器旁邊,web服務要是出問題了,會比較麻煩,這時可以通過frp對映一個ssh,這樣就可以隨時隨地的操作內網了
只需要配置frpc.ini 即可
[common] ... [ssh] type = tcp local_ip = localhost local_port = 22 remote_port = 7001 [example] ...
同樣的方法還可以對映遊戲,同樣的使用type = tcp
把埠改成遊戲的埠就可以了,比如Minecraft的埠是25565,是不是相當的方便,快跟小夥伴組隊吧
重啟 frpc , 然後就可以使用命令ssh -p 7001 [email protected]
來連線內網的終端了
總結
-
你可以通過訪問
http://10.10.10.10:7500
然後輸入frps.ini
裡配置的dashboard_user
dashboard_pwd
來檢視frp的執行情況 - 在啟動frpc之前,你要在域名提供商那把域名解析到外網伺服器上
- 如果ssh對映連線總是超時,要看一下外網伺服器是否把7001埠開放了,有可能是外網伺服器的防火牆攔住了
- 關於nginx配置https,下一篇部落格分享
參考
原文連結: