系列文章目錄
????????基于http+公網ip的Frp內網穿透教程(win server)
????????基于http+域名的Frp內網穿透教程(win server+IIS反向代理)
????????基于http+公網ip的Frp內網穿透教程(Linux)
????????基于https+域名的Frp內網穿透教程(Linux+Nginx反向代理)
目錄
系列文章目錄
前言
一、Frp是什么?
1. Frp介紹
2. Frp工作原理
二、配置手冊
1. 準備工作
????????1.1 公網云服務器(server端):
????????1.2?公司內網服務器(client端):
2.?實操篇
????????2.1?公網云服務器(server端):
配置frps.ini
運行frps.exe:
配置frps開機自啟
公司內網服務器端
將frp軟件拷貝到公司內網服務器上
配置frpc.ini
運行frpc.exe:
配置frpc開機自啟
通過域名+7001端口訪問網站
反向代理隱藏端口(IIS)
大功告成
?
前言
我在文章基于HTTP+公網ip的Frp內網穿透教程(win server)中已經介紹了公網ip的Frp內網穿透教程,本文主要介紹https+域名(無端口)的Frp內網穿透配置教程。
寫本文主要是做一個記錄,以便以后需要再次配置內網穿透時有所參考。如對您有所幫助不甚榮幸。
本文主要涉及的軟硬件條件為:
- 外網云服務端:阿里云服務器 + Alibaba Cloud Linux + 域名 + Nginx反向代理;
- 內網服務器:Ubuntu?+ 臺式電腦;
一、Frp是什么?
1. Frp介紹
frp 是一個開源、簡潔易用、高性能的內網穿透和反向代理軟件,支持 tcp, udp, http, https等協議。frp 項目官網。
2. Frp工作原理
FRP是一種內網穿透工具,主要用于將內網的服務暴露到公網上。它的工作原理可以簡單概括為以下幾個步驟:
- 在公網服務器上部署FRP服務器,并在內網主機上部署FRP客戶端。
- 在FRP服務器上配置一個公網端口,用于接收來自公網的請求。
- 在FRP客戶端上配置一個本地端口,指定需要暴露到公網的服務端口號。
- 當有來自公網的請求訪問FRP服務器上的公網端口時,FRP服務器會將請求轉發到內網主機上的FRP客戶端,并將請求轉發給客戶端上配置的本地端口。
- FRP客戶端收到請求后,會將請求轉發到本地服務端口上,從而實現將內網服務暴露到公網上的目的。
需要注意的是,FRP還可以通過配置反向代理來實現多個內網主機的服務共享一個公網IP的功能。此時,FRP服務器會根據請求中指定的域名將請求轉發到不同的內網主機上,從而實現內網服務的多路復用。
總之,FRP的工作原理是通過在公網和內網之間建立一個通道,將公網請求轉發到內網主機上的服務端口,從而實現內網服務的暴露和共享。
二、配置手冊
1. 準備工作
????????1.1 公網云服務器(server端):
????????????????阿里云服務器
????????????????操作系統:Alibaba Cloud Linux
????????????????反向代理工具:Nginx
????????????????阿里云暴露端口:7000、7001、80、443
????????????????域名:web.qianyuhui.top
????????????????公網ip:139.224.x.x(域名需要解析到公網Ip上)
??
????????1.2?公司內網服務器(client端):
????????????????操作系統:Ubuntu 22.04
????????????????內網ip:192.168.31.31
????????????????設置防火墻暴露端口:7000、7001、9001、9002
????????????????準備好1個web網站:? ? ? ? ? ??
2.?實操篇
????????2.1?公網云服務器(server端)
? ? ? ? ? ? ? ? 2.1.1 下載Frp安裝包
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
?解壓:
tar zxf frp_0.44.0_linux_amd64.tar.gz
移動至 /usr/local
在/usr/local/下創建一個frp文件夾。/usr/local目錄類似于windows系統的C:/Progrem Files/。用戶自己編譯的軟件默認會安裝到這個目錄下:
mkdir /usr/local/frp
將frp_0.44.0_linux_amd64移動到 /usr/local/frp 里面:
mv frp_0.44.0_linux_amd64/* /usr/local/frp/
進入文件夾:
cd /usr/local/frp/
列表顯示根目錄下的文件:
ls
?frps就是frp server端的部分;frpc 是frp client端的部分。這里我們只需要關心Server端。
這里我們可以直接刪掉frpc、frpc_full.ini、frpc.ini三個文件,節省硬盤空間
find . -name 'frpc*' -exec rm {} \;
?
???????????????2.1.2?修改配置文件:frps.ini
vi frps.ini
鍵入【i】,修改內容如下:
[common]
# frp server 綁定的端口
bind_port = 7000
# 設置 http 訪問端口為 80
vhost_http_port = 80
# 設置域名(保證此域名可用;我們假設你的域名為【subdomain.yourdomain.com】)
subdomain_host = yourdomain.com
【bind_port】:frp客戶端連接服務端的端口
【vhost_http_port】:是http訪問的端口(外網端口)。我這里設置成80端口。也就是說,在配置正確的前提下,外網可以通過瀏覽器直接訪問【http://47.99.x.x】訪問內網服務。
【subdomain_host】:你的一級域名。我們假設你的域名為:【subdomain.yourdomain.com】。【subdomain】是二級域名,【yourdomain.com】是一級域名。如果不需要用到域名則不需要配置此項。
[注意]:
建議1:不要加注釋。我在配置ini的時候,加了注釋好像會報錯。
建議2:新手建議只設置這兩個,設置越多越容易出錯。建議走通后再慢慢改。
修改完成后。按下Esc退出編輯模式。然后輸入:wq保存并退出。
?
配置frps.ini
frps.ini文件配置如下:
[common]
#記得下面2個端口在服務器上放行# 服務端frps端口,與客戶端frpc一起綁定的端口
bind_port = 7000#web服務http接口,就是你打開網址時輸入的端口號,因為80端口被禁用,所以我使用了別的
vhost_http_port = 7001
??
[common] 表示frp的通用配置。
bind_port 表示server端frps與client端frpc綁定的端口號。
vhost_http_port 表示http綁定的接口。
運行frps.exe:
終端手動運行方式:
命令行:
C:
cd C:\FTP\frp_0.48.0_windows_amd64
frps.exe -c ./frps.ini
??
frps started successfully。
frps tcp 綁定到7000端口上,http 服務綁定到7001端口上。
bat腳本運行方式:
新建run.bat文件,用記事本打開,輸入以下命令:
C:
cd C:\FTP\frp_0.48.0_windows_amd64
frps.exe -c ./frps.ini
??
保存后,鼠標單擊run.bat即可手動運行。
??
如上圖表示server端運行成功。
配置frps開機自啟
配置frps開機自啟動的方式:
將bat文件復制到:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,重命名為:frp內網穿透開機自啟.bat。
這樣以后,只要云服務器開機之后就會自動運行frps.exe文件。
??
公司內網服務器端
將frp軟件拷貝到公司內網服務器上
將安裝包發布到公司內網服務器上,刪除不需要的文件,保留frpc.exe和frpc.ini文件。
這里的目錄為:G:\frp\frp_0.48.0_windows_amd64
??
配置frpc.ini
frpc.ini文件配置如下:
[common]
#外部云服務器地址+設置的端口
server_addr = 8.136.x.x
server_port = 7000#第一個web網站,端口號為內部對應端口,及對應訪問網址,這個網址需要在外部云服務器上綁定
[web1]
type = http
local_port = 9001
custom_domains = web1.whqyjy.com#第二個web網站,端口號為內部對應端口,及對應訪問網址,這個網址需要在外部云服務器上綁定
[web2]
type = http
local_port = 9002
custom_domains = web2.whqyjy.com
??
[common] 表示frp的通用配置;
server_addr 表示server端的公網ip地址;
server_port 表示server端frps綁定的端口;
[web1] 這里的[web1]表示一個網站的名稱,可以自定義;
type表示請求的類型,我們用的是http;
local_port 表示本機端口,也就是網站web1在本機綁定的端口號;
custom_domains 表示用戶通過瀏覽器訪問網站web1的域名;
web2同理。
運行frpc.exe:
終端手動運行方式:
命令行:
G:
cd G:\qainyuhui\frp_0.48.0_windows_amd64
frpc.exe -c ./frpc.ini
bat腳本運行方式:
新建run.bat文件,用記事本打開,輸入一下命令:
G:
cd G:\qainyuhui\frp_0.48.0_windows_amd64
frpc.exe -c ./frpc.ini
??
保存后,鼠標單擊run.bat即可手動運行。
??
如上圖表示client端運行成功,并且成功登陸到server端,網站[web1]、[web2]成功加入到協議中。
與此同時,云服務器(server端)也會輸出同樣的日志信息:
??
配置frpc開機自啟
配置frpc開機自啟動的方式:
將bat文件復制到:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup下,重命名為:frpc內網穿透開機自啟.bat。
這樣以后,只要內網服務器開機之后就會自動運行frpc.exe文件。
??
通過域名+7001端口訪問網站
內網穿透已經配置成功,我們現在可以在外網環境中通過域名+端口的形式訪問web1和web2:web1.whqyjy.com:7001、web2.whqyjy.com
??
??
至此,frp的職責已經完成了。剩下的工作就要交給反向代理去將7001端口隱藏掉。
反向代理隱藏端口(IIS)
云服務器端,可以通過反向代理隱藏掉7001端口。
這里我使用IIS進行反向代理操作。參考文章:IIS的反向代理
IIS插件安裝
IIS配置反向代理需要依靠兩個插件:Application Request Routing(ARRv3.0)、Url-Rewite。如果您的IIS中沒有安裝需要單獨安裝插件。安裝教程可參考IIS的反向代理。
??
反向代理設置
??
IIS中打開占用服務器80端口的網站(IIS默認中是Default Web Site),點擊右上角瀏覽Default Web Site所在文件夾。
windows中Default Web Site的默認地址一般為:C:\inetpub\wwwroot。我們需要修改web.config進行反向代理的配置。配置之前請確保您已經安裝好Application Request Routing(ARRv3.0)、Url-Rewite這兩個插件,否則配置無法生效。
??
默認情況下web.config內容如下:
??
我們在<system.webServer>節點中添加重寫規則:
<rewrite><rules><rule name="web1.whqyjy.com"><match url="^(.*)" /><conditions><add input="{HTTP_HOST}" pattern="^web1.whqyjy.com$" /></conditions><action type="Rewrite" url="http://web1.whqyjy.com:7001/{R:1}" /></rule><rule name="web2.whqyjy.com"><match url="^(.*)" /><conditions><add input="{HTTP_HOST}" pattern="^web2.whqyjy.com$" /></conditions><action type="Rewrite" url="http://web2.whqyjy.com:7001/{R:1}" /></rule></rules>
</rewrite>
意思就是說:讓云服務器上的IIS將用戶輸入的URL:【web1.whqyjy.com】轉成【http://web1.whqyjy.com:7001】,web2同理。
??
保存web.config,重啟Default Web Site 網站。即可生效。
??
大功告成
配置完成之后,我們在外網環境中訪問http://web1.whqyjy.com和 http://web2.whqyjy.com.就可以訪問內網中的web1和web2了。
??
??
?
?
?