運維筆記 -- frp實現內網穿透


需求描述:

    公司內部一台式機配置很好,出現閑置,為資源充分利用,搭建應用測試環境,但是應用啟動后,局限於無法給外地同事or客戶訪問;需要讓內網服務可以提供給外部互聯網訪問;

主流實現方式,花生殼,Ngrok,natapp,frp。。。

    大致分商業收費和免費開源,各有優勢,商業收費的相對穩定。有商業需求的小伙伴,百度下關鍵字。

方案選擇:

  這里選擇免費了開源的frp,

  frp主頁: http://frp.xxorg.com/

  frp項目地址:https://github.com/fatedier/frp

實現原理:

開始配置「兩種場景」:

   1. 准備工作

      (1)一台可以外網訪問的服務器(例:雲服務器,假設IP是:172.100.100.188)--必須

  (2)公司內網台式機 --必須

      (3)如果需要配置多個應用,准備若干域名 --非必須

  2. 下載源代碼: https://github.com/fatedier/frp/releases

        根據自己實際環境,下載對應程序版本,這里阿里雲服務器操作系統用的Ubuntu16.04 ,公司台式機操作系統CentOS7, 注意frp雖然分“服務端”和"客戶端",但是程序代碼是不區分的,也就是一套代碼里包含了"服務端"和"客戶端",這里選擇下載的版本是:frp_0.33.0_linux_amd64.tar.gz

  程序解壓后,目錄結構,顯示如下文件:

   frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  nohup.out  systemd   

      

   frpc_full.ini frpc.ini 是客戶端(內網服務器)需要修改的配置文件

   frps_full.ini  frps.ini 是服務端(雲服務器)需要修改的配置文件

   frpc_full.ini frps_full.ini是比較詳細的客戶端&服務端配置文件,一般場景的使用,我們不需要修改這兩個文件,

只要分別修改兩個最小配置文件:frpc.ini frps.ini 就能滿足日常的需求。

   3. 場景1配置:基本的外網IP+端口訪問

       a. 配置服務端(阿里雲服務器)

          將下載的文件上傳到雲服務器,解壓后進入程序目錄,

          修改服務端配置文件:frps_full.ini

    默認配置:

[common]
bind_port = 7000

    不用修改,啟動frp服務端程序:

nohup ./frps -c ./frps.ini 2>&1 &

      b. 配置客戶端(公司內網台式機)

      在修改frp客戶端配置前,

      先把內網已經部署好的測試應用系統服務啟動起來,假設我們的系統應用服務訪問方式是:127.0.0.1:8080

      然后將frp程序包上傳到內網台式機,解壓,修改客戶端配置文件frpc.ini。

[common]
server_addr = 172.100.100.188  ---服務端IP,即:你的雲服務器IP
server_port = 7000   ---對應frp服務端配置

[test]
type = tcp   ---注意類型要寫tcp
local_ip = 127.0.0.1   ---內網服務IP
local_port = 8080      ---本地端口
remote_port = 8080     ---遠程訪問端口
type即穿透類型一般分為HTTP,HTTPS及TCP三種,其中HTTP和HTTPS是作為Web網站穿透服務,而TCP一般用於其他服務連接使用,比如Linux服務器的SSH登陸,Windows的3389遠程桌面,等無需使用瀏覽器訪問的場景.

    啟動frp客戶端服務:

nohup ./frpc -c ./frpc.ini 2>&1 &

     測試驗證一把,是否配置成功!

       打開瀏覽器,地址欄輸入雲服務器地址+IP,172.100.100.188:8080,是否能訪問到我們的內網系統。

4. 場景2配置: 多域名映射內網多個應用

    上邊我們已經測試了,外網IP+端口 通過tcp協議訪問內網系統的配置;

    接下來,配置下多個域名映射內網多個應用系統的場景。

    操作步驟不變,還是先配置服務端,再修改客戶端配置文件。

    准備工作:

     1. 將多個二級域名解析到我們的雲服務器地址(172.100.100.188)

例如:
app1.beijing.com  解析到: 172.100.100.188
app2.beijing.com  解析到:172.100.100.188

     2. 公司台式機上,部署多個系統,並將程序啟動,這里以兩個應用系統為例,假設系統內網訪問地址為:

---應用系統-app1-訪問地址:
127.0.0.1:8088
---應用系統-app2-訪問地址:
127.0.0.1:8099

    3. 修改frp服務端(雲服務器)配置文件: frps.ini

[common]
bind_port = 7000
vhost_http_port = 6001  ---原先配置不變,增加主機映射端口6001

      啟動frp server端服務

nohup ./frps -c ./frps.ini 2>&1 &

    4. 修改frp客戶端(內網服務器)配置文件:  frpc.ini 

[common]
server_addr = 172.100.100.188
server_port = 7000

[app1]
type = http
remote_port = 6001
local_port = 8088
custom_domains = app1.beijing.com

[app2]
type = http
remote_port = 6001
local_port = 8099
custom_domains = app2.beijing.com

啟動frp客戶端服務:

nohup ./frpc -c ./frpc.ini 2>&1 &

驗證:

    瀏覽器地址欄,分別輸入:app1.beijing.com:6001 和 app2.beijing.com:6001 看能否訪問子系統。

    注意,上邊端口都是寫6001。

5. 注意事項:

    雲服務器開放相應的端口,如上邊例子中的:7000和6001

    內網服務器,要關閉防火牆或開放相應的端口對外訪問 

OK,到這里frp基本的配置使用已完成,小伙伴們可以參考,這里只是介紹了兩種常見的使用場景,其他更多的靈活配置,可以參考下邊的幾個鏈接。

參考:

官方配置教程:https://github.com/fatedier/frp/blob/master/README_zh.md  
https://www.appinn.com/frp/
https://www.jianshu.com/p/6ae5c771ba89
https://blog.csdn.net/u013144287/article/details/78589643/
https://www.jianshu.com/p/0342d083e17b
https://github.com/fatedier/frp/issues/287
https://github.com/fatedier/frp/issues/1189
https://blog.csdn.net/luohongtuCSDN/article/details/88966774
https://www.jianshu.com/p/00c79df1aaf0
https://cloud.tencent.com/developer/article/1437854

 


免責聲明!

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



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