使用frp將局域網IP暴露到公網,提供外網訪問本地服務


  通常情況下連接同一路由器下的電腦之間是可以相互訪問的,但是如果外網要通過本地IP訪問就行不通了。

  此方法前提是需要有一台外網服務器。。。

  場景:

    一台百度雲服務器:180.xxx.xxx.124

    idea啟動的一個本地tomcat服務:127.0.0.1 端口:8888

1.下載frp客戶端到本地:https://github.com/fatedier/frp/releases

 

 

  1.1解壓文件,並且進入到文件夾:

 

 

   1.2 修改客戶端配置文件 frpc.ini

[common]
server_addr = 180.xxx.xxx.124  #遠程主機地址
server_port = 7000         #遠程主機端口,應該是用來連接客戶端和遠程服務端的


[www.sprite.cn]            #自定義的域名,配置后可以在frp管理端看到注冊信息
type = http             #我這里是http,貌似還有其他的
local_ip = 127.0.0.1
local_port = 8888          #服務端,會有一個端口與當前端口作映射,即外網訪問本地環境的入口
custom_domains = www.sprite.cn   #自定義的
remotr_port = 6001         #服務端 與 本地客戶端映射的端口(對應上述中的8888)

2.服務端下載對應包

 

 

   2.1 進入到文件夾目錄,修改配置文件frps.ini ⚠️ 注意,與客戶端不是同一個文件

 

 

   2.2修改配置文件

[common]
bind_port = 7000      #與客戶端連接端口一致
vhost_http_port = 6001   #端口與客戶端一致

dashboard_port = 7500  #這里是配置 frp 管理端的
dashboard_user = admin
dashboard_pwd = admin

 

3.配置完成后啟動服務端、客戶端

#進入到【服務端】的frp安裝文件夾下執行該命令
nohup ./frps -c ./frps.ini & 

#進入到【客戶端】的frp安裝文件夾下執行該命令
./frpc -c frpc.ini

4.結果

  4.1服務端命令執行成功后,可以訪問到frp的后管:http://180.xxx.xxx124:7500

  4.2客戶端執行后,可以在后管上看到注冊信息:

 

 

 

 

 

 

 

 

5.本地啟動一個tomcat應用測試一下,端口為8888 【就是上述客戶端配置的8888與6001做了映射】

  5.1 用手機訪問一下:http://180.xxx.xxx.124:6001/api/basket/login/login

  5.2訪問成功

                      .              

 

 

 

 配置過程中出現的問題

   1.因為客戶端對服務端相關進行telnet,提示被拒絕 refused:

    解決辦法:防火牆添加端口允許進行訪問(我當前是CentOS,不同系統防火牆是不一樣的~)

#檢查允許訪問的端口
firewall-cmd --list-ports

#開放指定端口(目前我把所有用到的端口都配了)
firewall-cmd --zone=public --add-port=7000/tcp --permanent
#需要重新加載
firewalld-cmd --reload

  2.防火牆是關閉的,但是端口依然無法訪問

    解決辦法:重啟防火牆,如果防火牆重啟超時失敗,則重啟Linux系統...之后再重啟防火牆

#安全的重啟
shutdow

#重啟計算機
reboot -r

#重啟防火牆
systemctl start firewalld.service
#查看防火牆狀態
systemctl status firewalld

  

 


免責聲明!

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



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