如何利用外網服務器和本地內網機搭建反向隧道?


一、建立反向隧道的原因和目的

  因要做微信支付和支付寶支付,這兩個支付在用戶支付完成后,都會將支付結果推送到我放服務器上,而我們的開發服務器一般位於公司路由器后,外網無法訪問到,這時有四中解決方法。

  方法1,直接將外網網絡接入你的開發機器,這樣外網可以直接訪問了,缺點是公司其他同事都無法上網了。

  方法2,在路由器上做NAT轉發,這樣同樣可以在外網訪問了,缺點是要有路由器的訪問權,其次如果是多級路由的話,配置比較復雜。

  方法3,直接在有外網的服務器上做開發或者測試,比如代碼寫完了打包部署到外網服務器上進行測試。缺點是無法很好的對代碼進行調試。

  方法4,利用外網服務器做反向隧道,缺點是需要擁有一台外網服務器,不過現在阿里雲已經提供了按量付費的按量服務器,可以選擇1C1G版本即可。

  恰好前段時間阿里雲搞活動,1C2G服務器購買3年僅需298元,還送1M網絡,而推薦的人則獲得1C2G1M服務器一台3個月。剛好有同事需要購買,就用了我的推薦,所以就有了一台帶有外網的服務器。

二、反向隧道環境

  建立反向隧道需要的環境

  1.帶有外網的Linux服務器一台,此處選擇阿里雲ECS,CentOS7系統

  2.Windows版本的XShell5軟件

三、如何搭建反向隧道?

  反向隧道的搭建分兩步,一是服務端配置文件配置,允許服務器進行反向隧道(服務本身默認是關閉的,需要打開)。二是本地XShell進行反向隧道的配置。

  a.服務端反向隧道配置

  進入配置修改,主要是vim的操作

vim /etc/ssh/sshd_config

  按insert鍵進入編輯功能,在配置最后面添加一行,並輸入一下內容

GatewayPorts clientspecified

  按ECS退出編輯功能,輸入 :wq,按回車進行保存,同時要使用重新加載配置的方法,使得新設置生效。因本人是Linux小白,此處並不知道如何加載,但我還有終極武器,重啟服務器。

reboot

  服務器重啟后,配置自動生效。

  b.本地XShell配置

  本地配置主要體現在連接、隧道、跟蹤三個類別上,具體看圖,第一張圖的重連最好打上√,第三張圖是為點擊新增功能。

  配置連接,設置連接名稱、賬號、密碼

  

  

  真正的重頭戲,設置隧道,此處不要設置錯了,隧道有兩種方式,一種是從遠程到本地,一種是從本地到遠程,此文章只講從遠程到本地的配置,所以按照順序來。

  

 

   

 

  

  偵聽端口填寫要訪問的外網端口,目標端口填寫局域網內本地計算機提供服務的端口。默認網站端口為80。如果訪問不同,並且使用的是阿里雲的服務器,需要登錄控制台看看是否有打開對應的端口。

  

  至此配置結束,下面看看反向隧道是否建立成功。

  

  看看轉移規則是否為上圖所示。看看提示是否如下圖所示。

  

  最后測試下聯通性,請在本地配置好服務,並設置好訪問地址和端口。我使用的是IIS,配置的本地和外網的端口均為80,最后測試結果如下圖所示,左邊是訪問服務器的頁面,右邊是本地訪問的頁面。服務器上並未配置任何網站,並且站點是.NET的,並不能在Linux上部署。所以真實的反映了本次配置的結果:成功!

  

 

  附錄:XShell如何在添加完畢連接后進行修改?

  

 


免責聲明!

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



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