用FRP做內網穿透使用遠端桌面連線家裡的windows電腦
大部分家用寬頻沒有獨立的IPV4,沒法直接連線。FRP是一個內網穿透的神器,可以通過一個有公網IP的伺服器搭建FRP服務端,去轉發流量實現內網穿透 |
FRP在Github開源:https://github.com/fatedier/frp
在releases頁面下載對應的版本。壓縮包只是對應平臺不通,每個包解壓都包含伺服器端和客戶端。
伺服器端我用的是centos,所以在releases頁面下載"frp_0.33.0_linux_amd64.tar.gz",如果伺服器端是其他系統,下載對應的解壓就行。
解壓資料夾內:
- "frps"、"frps_full.ini"、"frps.ini"是放在伺服器端執行的可執行檔案和配置檔案。
- "frpc"、"frpc_full.ini"、"frpc.ini"是放在客戶端端執行的可執行檔案和配置檔案。
使用命令vi frps.ini修改frps.ini檔案,然後儲存退出:
[common] bind_addr=0.0.0.0 bind_port = 7000 token=12310086 dashboard_port = 7500 dashboard_user = admin dashboard_pwd = admin123
說明:
-
- "bind_addr"是伺服器本地IP,不改。
- "bind_port"是frp監聽埠。
- "token"是驗證token建議設定上。
- "dashboard_port"是frp面板埠。
- "dashboard_user""dashboard_pwd"是面板的賬戶密碼。
除了"bind_addr"引數之外的其他引數,都可以根據需求自行修改,務必記住改過的引數。
然後給伺服器端frps賦予執行許可權:
sudo chmod 755 ./frps
執行frps
./frps -c ./frps.ini
可以配合nohup或者screen在讓frps後臺執行。注意防火牆或者寶塔之類放行響應的埠。登入網頁檢視一下是否確實成功執行
面板僅供參考,可用可不用。訪問 http://伺服器ip:7500
上面配置的7500埠,使用上面配置的使用者名稱和密碼 admin/admin123
登陸可以看到如下介面:
演示的客戶端為windows,下載frp windows版"frp_0.33.0_windows_amd64.zip",解壓進入資料夾:
本地演示用到程式是windows遠端桌面,使用3389埠。需要用frp將windows客戶端的3389轉發到伺服器端上。比如將客戶端的3389轉發到伺服器端的33389埠。用文字編輯器開啟"frpc.ini"檔案:
[common] server_addr = FRP服務端VPSip server_port = 7000 token=12310086 [RDP] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 33389
儲存退出,在cmd裡執行
frpc.exe -c frpc.ini
出現success就是連線成功
此時伺服器段也有連線提醒
控制面板裡也有提示
如果沒有提示,請注意在伺服器防火牆或者寶塔之類的管理面板裡放行響應的埠!
現在我們在外網任意一臺電腦,開啟windows遠端桌面程式,輸入伺服器ip:33389,就可以連線到本地windows了
注意一定要開啟windows電腦的“允許遠端連線”,否則有可能失敗。
- 伺服器端啟動根據配置檔案監聽7000埠。客戶端根據配置檔案啟動和伺服器的frp 7000埠進行連線。
- 兩者連線成功之後,客戶端讀取本地配置檔案告訴伺服器端,需要哪些轉發操作用到什麼埠。
- 上述操作中,客戶端讀取本地配置檔案告訴伺服器端,客戶端轉發本地的3389埠到了伺服器端的33389。
- 然後伺服器端再新開33389的監聽埠,把來自外網訪問33389埠的流量轉發到客戶端3389
- findmnt命令查詢已掛載的檔案系統
- 在Linux中如何檢視檔案的修改日期
- 用FRP做內網穿透使用遠端桌面連線家裡的windows電腦
- SUSE Linux 的Zypper包管理器使用例項
- 如何使用nload實時監控網路頻寬
- 如何使用awk處理文字內容
- 如何將CentOS 8轉換為CentOS Stream
- 如何自動接受SSH金鑰指紋?
- 夏天到了用TypeScript給自己開個小空調吧
- Bash Shell指令碼中的陣列使用例項
- Linux系統中的basename命令使用例項
- centos8使用chrony作為NTP伺服器
- Linux中如何使用Aria2下載檔案
- Centos8 如何配置DHCP伺服器
- 如何在Shell指令碼中逐行讀取檔案
- 使用Systemctl命令來管理系統服務
- 使用lsblk命令列出系統中的塊裝置
- 如何在Linux中使用 Truncate 命令
- Centos8種如何更改執行級別
- Zeit – Linux圖形化中定時任務的工具