通常情況下連接同一路由器下的電腦之間是可以相互訪問的,但是如果外網要通過本地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
