一、建立反向隧道的原因和目的
因要做微信支付和支付寶支付,這兩個支付在用戶支付完成后,都會將支付結果推送到我放服務器上,而我們的開發服務器一般位於公司路由器后,外網無法訪問到,這時有四中解決方法。
方法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如何在添加完畢連接后進行修改?

