Chiloh

Chiloh Wei

一个尝试理解世界,理解自己的人
jike
twitter

Frp 內網穿透

一直想在公司或者出差時,能夠隨時遠程訪問家裡電腦,互傳文件。在綜合考量了許多方法之後,基於正在使用的 阿里雲 ECS 伺服器 有分配公網 IP 地址,最終選擇了 Frp 內網穿透服務。目前已基本實現隨時隨地訪問家裡 Windows 電腦的需求。

一、伺服器配置#

以 CentOS 伺服器為例,Frps 伺服器配置教程如下:

1. 安裝 Go 環境#

Frp 是基於 Go 語言的,因此參考此教程:https://golang.org/doc/install#requirements,首先在 Linux 上 安裝 Go 語言並配置環境。

2. 安裝 Frps 並啟動#

這裡推薦Frp 伺服器一鍵腳本,相比源碼配置的方式,更為簡單。只需要按照步驟提示,輸入相應的端口號即可。

+------------------------------------------------------------+
|   frps for Linux Server, Author Clang ,Mender MvsCode     |
|      A tool to auto-compile & install frps on Linux        |
+------------------------------------------------------------+

Check your server setting, please wait...

+------------------------------------------------------------+
|   frps for Linux Server, Author Clang ,Mender MvsCode     |
|      A tool to auto-compile & install frps on Linux        |
+------------------------------------------------------------+


Please select frps download url:
[1].aliyun 
[2].github (default)
Enter your choice (1, 2 or exit. default [github]): 1
-----------------------------------
       Your select: 1    
-----------------------------------
Loading network version for frps, please wait...
frps Latest release file frp_0.34.3_linux_amd64.tar.gz
Loading You Server IP, please wait...
You Server IP:your_vps_ip
————————————————————————————————————————————
     Please input your server setting:
————————————————————————————————————————————

Please input frps bind_port [1-65535](Default Server Port: 5443):
frps bind_port: 5443


Please input frps vhost_http_port [1-65535](Default : 80):8080
frps vhost_http_port: 8080


Please input frps vhost_https_port [1-65535](Default : 443):8888
frps vhost_https_port: 8888


Please input frps dashboard_port [1-65535](Default : 6443):
frps dashboard_port: 6443


Please input frps dashboard_user(Default : admin):chiloh
frps dashboard_user: chiloh


Please input frps dashboard_pwd(Default : N2qeE26x):chiloh-wei
frps dashboard_pwd: chiloh-wei


Please input frps token(Default : p57D0IwDHL3LwpJC):your_token
frps token: your_token


Please input frps subdomain_host(Default : your_vps_ip):
frps subdomain_host: your_vps_ip


Please input frps max_pool_count [1-200]
(Default : 50):
frps max_pool_count: 50

Please select log_level
1: info (default)
2: warn
3: error
4: debug
-------------------------
Enter your choice (1, 2, 3, 4 or exit. default [1]): 
log_level: info


Please input frps log_max_days [1-30]
(Default : 3 day):
frps log_max_days: 3

Please select log_file
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]): 
log_file: enable

Please select tcp_mux
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]): 
tcp_mux: true

Please select kcp support
1: enable (default)
2: disable
-------------------------
Enter your choice (1, 2 or exit. default [1]): 
kcp support: true

============== Check your input ==============
You Server IP      : your_vps_ip
Bind port          : 5443
kcp support        : true
vhost http port    : 8080
vhost https port   : 8888
Dashboard port     : 6443
Dashboard user     : chiloh
Dashboard password : chiloh-wei
token              : your_token
subdomain_host     : your_vps_ip
tcp_mux            : true
Max Pool count     : 50
Log level          : info
Log max days       : 3
Log file           : enable
==============================================

Press any key to start...or Press Ctrl+c to cancel
frps install path:/usr/local/frps
config file for frps ... done
download frps ... done
download /etc/init.d/frps... done
setting frps boot... done

+---------------------------------------------------------+
|     Manager for Frps, Author Clang, Mender MvsCode      |
+---------------------------------------------------------+

Starting Frps(0.34.3)... done
Frps (pid 31075)is running.

+------------------------------------------------------------+
|   frps for Linux Server, Author Clang ,Mender MvsCode     |
|      A tool to auto-compile & install frps on Linux        |
+------------------------------------------------------------+


Congratulations, frps install completed!
================================================
You Server IP      : your_vps_ip
Bind port          : 5443
KCP support        : true
vhost http port    : 8080
vhost https port   : 8888
Dashboard port     : 6443
token              : your_token
subdomain_host     : your_vps_ip
tcp_mux            : true
Max Pool count     : 50
Log level          : info
Log max days       : 3
Log file           : enable
================================================
frps Dashboard     : http://your_vps_ip:6443/
Dashboard user     : chiloh
Dashboard password : chiloh-wei
================================================

frps status manage : frps {start|stop|restart|status|config|version}
Example:
  start: frps start
   stop: frps stop
restart: frps restart

** 注意:** 如果是阿里雲等服務商,需要在伺服器的安全組裡,放行上述腳本配置中的端口。

二、客戶端配置#

客戶端配置方法與伺服器類似,步驟如下:

1. 安裝 Frp c 並啟動#

  • 在該頁面:https://github.com/fatedier/frp/releases下載最新版的 Windows 版本 Frp 壓縮包。
  • 解壓 frpc.ini 、 frpc.exe 到 Windows 某個目錄下,比如 D:\frp
  • 參考下方代碼,編輯客戶端配置文件 frpc.ini 。
[common]
#vps的公網地址
server_addr = your_vps_ip
#之前配置的frps的bind_port
server_port = 5443
#之前配置的frps的token
token=your_token
#name隨便取
[RDP]
#type就tcp不變
type = tcp
#本地地址不變
local_ip = 127.0.0.1
#windows遠程的3389端口不變
local_port = 3389
#被遠程時,訪問的端口,取值[1024-65535]
remote_port = 6000

2. 配置 Frp c 自啟動#

配置好伺服器後,最好設置下自啟動,這樣子 windows 電腦開啟的時候,服務就會在後台運行。具體步驟如下:

  • 下載winsw,並重命名為 winsw.exe
  • 新建一個 winsw.xml 格式文件,寫入下面的內容:
<service>
    <id>frp</id>
    <name>frpc</name>
    <description>chiloh's frpc</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <onfailure action="restart" delay="60 sec"/>
    <onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>
  • 新建一個註冊.bat,寫入下面的內容:
@echo off
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 當前運行路徑是:%CD%
echo 已獲取管理員權限

winsw install
winsw start
  • 新建一個卸載.bat,寫入下面的內容:
@echo off
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 當前運行路徑是:%CD%
echo 已獲取管理員權限

winsw stop
winsw uninstall
  • 雙擊運行註冊.bat 文件,即可註冊好服務。之後就可以使用 ip+remote_port 的形式訪問內網的 windows 電腦了。

Frp 遠程桌面連接

三、總體感受#

Frp 的搭建過程,使用腳本的話難度不是很大,最大的要求應該就是公網 IP 地址了。另外,買一個家用智能插座,設置電腦通電後自動開機,就可以遠程控制家裡電腦開關機了。電腦開機後,自啟動內網穿透服務,在任何地方,只要有網,就可以打開平板或者電腦來訪問家裡電腦,遠程操作或者傳輸文件。

參考文章:

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。