centos7搭建frps內網穿透服務


一、安裝frps服務端:

1、新建一個存放目錄

1 # mkdir frps

2、拉取一鍵搭建腳本

# wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh

3、增加腳本權限

# chmod 700 ./install-frps.sh

4、安裝

1 # ./install-frps.sh install

 

之后他會讓你輸一些參數,全部參數都有默認值,直接回車就是輸入默認值:

Please input frps bind_port [1-65535](Default Server Port: 5443): #輸入frp提供服務的端口,用於服務器端和客戶端通信,默認即可
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #輸入frp進行http穿透的http服務端口,建議選擇其他端口,默認的80端口給Nignx,然后用Nginx代理frp的http端口
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #輸入frp進行https穿透的https服務端口,同上面的80端口類似,建議分配其他端口,然后通過Nginx代理此端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):#輸入frp的控制台服務端口,用於查看frp工作狀態,默認即可

Please input dashboard_user (Default: admin):#登錄控制台的用戶名,默認即可
Please input dashboard_pwd (Default: arepR7VZ):#登錄控制台的密碼,如果記不住默認的建議修改


Please input privilege_token (Default: 9e2UAeWa6hxrwdc):#輸入frp服務器和客戶端通信的密碼,默認是隨機生成的,默認即可
Please input frps max_pool_count [1-200](Default max_pool_count: 50):#設置每個代理可以創建的連接池上限,默認50


##### Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]): 默認即可
Please input frps log_max_days [1-30](Default log_max_days: 3 day): 默認即可
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):默認即可

安裝完畢后會彈出以下內容,標明了具體信息,到此服務端操作全部完成。
==============================================
You Server IP      : X.X.X.X
Bind port          : 5443
KCP support        : true
vhost http port    : 8085
vhost https port   : 4435
Dashboard port     : 6443
token              : 9e2UAeWa6hxrwdc
tcp_mux            : true
Max Pool count     : 50
Log level          : info
Log max days       : 3
Log file           : enable
==============================================
frps Dashboard     : http://X.X.X.X:6443/
Dashboard user     : admin
Dashboard password : admin
==============================================


frps status manage : frps {start|stop|restart|status|config|version}
Example:
  start: frps start # 啟動frps命令
   stop: frps stop # 停止frps命令
restart: frps restart # 重啟frps命令

[root@root frps]#

 

至此,安裝完成,可以訪問ip地址+控制台端口查看(如果是阿里雲騰訊雲的服務器或者服務器已安裝寶塔面板的,記得在安全組放行以上的配置的端口,否則無法訪問),見下圖

 

二、安裝客戶端:
下載客戶端軟件:
Mac版本
 
Win版本
 
Linux版本

 

下載完成后解壓,找到 frpc.ini 文件
修改 frpc.ini 文件,假設 frps 所在的服務器的 IP 為 127.0.0.1,local_port 為本地機器上 web 服務對應的端口, 綁定自定義域名mock.test.com
以下為我本地的配置,可做參考:
[common]
server_addr = 127.0.0.1
server_port = 5443
token = 9e2UAeWa6hxrwdc


# 通過tcp的方式可以不使用域名的情況下進行內網穿透,直接訪問http://127.0.0.1:8080即可
# tcp穿透需要設置remote_port(為將服務器的8080端口綁定到你的穿透服務,此處的8080端口也需要在防火牆中放開訪問權限)
[mock-tcp]
type = tcp
local_ip = 172.18.50.59
local_port = 8089
remote_port = 8080
# custom_domains = mock.frp.test.com


[mock-http]
type = http
local_ip = 172.18.50.59
local_port = 8089
custom_domains = mock.frp.test.com


[web]
type = http
local_ip = 172.18.50.59
local_port = 8091
custom_domains = api.frp.test.com

 

修改完成后,保存。然后啟動 frpc

 

三、啟動客戶端:
liunx啟動客戶端命令: 
./frpc -c ./frpc.ini    ---- ini文件與執行文件在同一目錄
win啟動客戶端命令: 
frpc.exe -c ./frpc.ini

 

注意:frp.test.com這個二級域名需要提前在域名解析中進行A記錄解析,見下圖:

 

 

 

通過瀏覽器訪問 http://mock.frp.test.com:8085 即可訪問到處於內網機器上的 web 服務。

我們通過服務器控制台就可以看到有客戶端已經連接了,見下圖:

 

 

到此就完成了frp的客戶端搭建和連接,完成了內網穿透服務。

 

四、設置客戶端自啟動:

Linux下添加frp內網穿透工具開機啟動

在/etc/rc.local里面添加/home/frp/frps -c /home/frp/frps.ini (文件的具體路徑根據實際情況填寫),終端里面輸入下面的命令,或者把文件下載回本地修改后重新上傳覆蓋源文件。

vim /etc/rc.local

 

Windows系統下添加frp內網穿透工具為開機啟動項

因為Windows系統下從命令行啟動frp內網穿透工具后,如果關閉命令行的黑窗口,frp內網穿透服務就停止了,並且任務欄上一直有個命令行窗口也很不方便,所以要開機后啟動並且要隱藏frp內網穿透工具的窗口,方法是這樣的:
新建一個文本文件,文件內寫入如下內容,frp的文件路徑根據自己的實際情況修改,然后重命名這個文本文件為frp.vbs ,注意txt的擴展名也要改為vbs,然后把這個frp.vbs放到Windows的啟動目錄里面。   
Windows的啟動目錄位於“C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp”(如果找不到這個目錄可以在CMD運行里面輸入:     “shell:startup” 或者輸入“%programdata%\Microsoft\Windows\Start Menu\Programs\Startup”)
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\frpc.exe -c d:\frpc_net.ini",0

 

五、自定義域名訪問:

上面我們發現連接內網還是需要 輸入 8085端口,而且域名是nginx上配置的三級域名,其實我們可以通過Nginx來反向代理一下,這樣就可以自己的頂級域名,並通過80端口來訪問了。
1、Nginx新建一個虛擬主機配置,或者直接改默認的主機配置也可以
在Nignx 的listen 后 增加 default_server 配置,用來監聽默認情況下所有來自解析到該服務器的域名
然后在 server 段內增加 反向代理配置
在nginx子配置文件目錄下新增一個名為:frps.conf文件
vim frps.conf
# frps內網穿透服務--測試服務為mock服務
server{
    listen 80;
    listen 8086;
    listen 443 ssl http2;
    server_name mock.frp.test.com;
    location /{
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_read_timeout 300;
       proxy_pass http://127.0.0.1:8085;
       access_log /www/wwwlogs/access8085.log;
       error_log /www/wwwlogs/access_error8085.log;
    }
}

 

這樣Nginx 將接管域名的綁定工作,監聽到80端口的網站后,會將網站轉發到 本機的frp 8085 端口

 

六、frp進階配置(未實際測試,摘抄於原作者):

1、轉發 DNS 查詢請求
DNS 查詢請求通常使用 UDP 協議,frp 支持對內網 UDP 服務的穿透,配置方式和 TCP 基本一致。
修改 frpc.ini 文件
 1 [common]
 2 server_addr = 180.28.83.22 #這里是服務器的IP
 3 server_port = 5443 #服務器的連接端口
 4 token = LnDeMkeiIedDeDw #服務器的連接Token
 5 
 6 [dns]
 7 type = udp
 8 local_ip = 8.8.8.8
 9 local_port = 53
10 remote_port = 6000

 

2、轉發 Unix域套接字
通過 tcp 端口訪問內網的 unix域套接字(例如和 docker daemon 通信)。
frps 的部署步驟同上。
啟動 frpc,啟用 unix_domain_socket 插件,配置如下:
 1 [common]
 2 server_addr = 180.28.83.22 #這里是服務器的IP
 3 server_port = 5443 #服務器的連接端口
 4 token = LnDeMkeiIedDeDw #服務器的連接Token
 5 
 6 [unix_domain_socket]
 7 type = tcp
 8 remote_port = 6000
 9 plugin = unix_domain_socket
10 plugin_unix_path = /var/run/docker.sock
通過 curl 命令查看 docker 版本信息
 
3、win系統遠程桌面
通過tcp 來連接位於內網中的電腦,配置如下:
 1 [common]
 2 server_addr = 180.28.83.22 #這里是服務器的IP
 3 server_port = 5443 #服務器的連接端口
 4 token = LnDeMkeiIedDeDw #服務器的連接Token
 5 
 6 [dns]
 7 type = tcp
 8 local_ip = 127.0.0.1
 9 local_port = 3389
10 remote_port = 33890
然后通過 mstsc -v 180.28.83.22:33890 就可以遠程桌面到內網。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM