服務器搭建(基於NatApp的內網穿透)

前言

  一直使用阿里雲的ECS作我的服務器,來部署本身的後臺。由於是首次續費,因此三折優惠。去年五月份的時候三百塊錢就買了一年的時間,雖然是最低配置的服務器,可是聊勝於無。閒暇時間本身寫寫接口,作點網站也學到了一些東西。可是立刻5月1號就要到期了,一看續費金額,938一年。你這個價格對得起突發型15%實例的價格嗎?老哥,一核一兆一G,20G硬盤?果斷棄用,因此有了接下來的內容。在經歷了一通踩坑以後,成功的使用基於Natapp的內網穿透實現了物理本機映射外網的功能。java

一、內網和外網

  這是很簡單的概念,內網和外網沒有一個具體的界限來劃分。能夠簡單的理解爲同一個局域網就屬於一個內網。那麼這個範圍就很是大了,咱們公司能夠是一個局域網,校園網也能夠是一個局域網,一樣咱們家中路由器下多個設備也能夠組成一個局域網。
  對於這些小的局域網而言,城域網能夠稱之爲外網,牆內牆外的均可以稱之爲外網。   爲何要這樣解釋這兩個名詞,由於後續內容中的內網穿透要用到上面說的東西。這其中牽扯到一個你們都沒有察覺到的一個「騙局」,而這個騙局對咱們普通的用戶是沒法感知的。git

二、內網穿透

內網穿透就是讓咱們本身局域網中的設備能夠直接和外網進行互聯,實現一個具體的業務功能和需求。github

三、爲何須要內網穿透

  到了這裏,就要說到運營商的「騙局」了。
  有計算機基礎的人都知道隨着全球各類電子設備的增多,2011年2月3日,IpV4(第四代互聯網通訊協議)主地址池的資源已經耗盡,分配給了全部的電子設備,因此纔有了IpV6的誕生,IpV6使用了更大的地址範圍,其地址長度爲128,即造成的地址池有2^128-1個,誇張一點講就是全球的每一粒沙子都能得到一個本身獨有的地址。   既然IpV4已經枯竭,那麼爲何咱們還能夠上網呢?由於咱們已經不在IpV4的主地址池裏面了。咱們是在其下面的某個局域網中,而後獲取局域網分配的ip,因此現狀就是咱們不少臺設備經過一個外網的IpV4地址進行互聯網的訪問,而國家規定正規繳費入網的用戶是能夠分配一個獨立的外網ip的。因此咱們不少人都被運營商欺騙了,那麼這時候能夠打電話給運營商,運營商通常會分配一個獨立的外網ip給咱們,這樣咱們在本身的路由器作一個簡單的映射就能夠當作服務器來使用了。可是我居住的這裏不知道上面嵌套了幾層運營商,因此這樣確定是行不通的。   其實咱們的普通撥號網絡在每一次撥號會獲取一個獨立的ip,這個ip是在每次重連以後會改變的,因此使用一個隨時變化的ip來作服務器的映射是一件很不舒服的事情。那麼就會有人問了,爲何不用一個固定的ip呢?這個問題很是好,由於面向普通用戶的都是會變得ip,只有面向公司的或者大額套餐的纔會給予固定的ip。web

1、另闢蹊徑

既然沒辦法獲取一個固定的ip,甚至連一個會變得外網ip都獲取不到的狀況下,咱們想搭建本身的外網物理服務器,只能另闢蹊徑,重頭再來。數據庫

一、Ngrok

基於Ngrok的內網穿透是一個反向代理。經過在公共端點和本地運行的Web服務器之間創建一個徹底的通道,實現內網主機的服務能夠暴露給外網。windows

二、Natapp

Natapp是基於Ngrok的或內收費內網穿透工具。相似花生殼,有免費版本。提供了自定義隧道,自定義端口的模式。緩存

三、小米球,Sunny-Ngrok,echosite

這些都是是基於Ngrok開發的內網穿透工具。tomcat

四、Ssh,autossh

ssh配合autossh使用,會自動從新啓動ssh會話和隧道。服務器

五、Lanproxy

lanproxy是一個將局域網我的電腦、服務器代理到公網的穿透工具。微信

2、基於Natapp的內網穿透

多方面查閱資料以後,決定使用Natapp實現內網穿透。

一、電腦一臺

須要設備:服務器一臺。(電腦也能夠,開機除了停電就別想關機了)

二、搭建服務器環境:Linux或Windows Server

  相對於Linux服務器,Windows Server 是比較容易上手的,畢竟咱們都習慣了Windows的操做模式,而實際上Server和咱們Window10旗艦版在感知上差異不是很大,最主要的是其系統比Windows標準版更加穩定,而且多出了一些緩存糾錯和數據恢復功能。

三、Windows Server 2019 安裝

  首先咱們須要一個U盤做爲啓動盤,而後隨便使用一個啓動工具作成啓動盤,好比大白菜啓動盤製做工具。而後在MSDN下載Server 2019的iso文件,導入U盤,按照正常的裝機流程進行安裝。系統裝好後就須要配置項目環境。使用java配置好jdk和jre環境,而後搭建Tomcat環境,搭建MySql數據庫,而且配置好字符集編碼,以防亂碼。配置成功後先在本地啓動項目。項目成功啓動後就能夠接入Natapp穿透隧道了。

四、註冊Natapp我的帳戶

NatApp官網 natapp.cn/

3、配置tcp遠程鏈接隧道

  首先購買一個tcp類型的免費隧道,這裏須要注意的是作遠程控制的話須要服務器打開遠程控制,切記不是關閉防火牆。服務器在開啓防火牆的狀況下都比較脆弱,更況且關閉防火牆。natapp tcp的端口必定要設置3389,由於這是windows遠程鏈接的端口,若是不設置這個端口沒法遠程控制。

tcp
配置好tcp隧道以後就能夠進行遠程鏈接了。

4、配置Web隧道

  Web隧道能夠綁定一個natapp購買的一個二級域名(3元一個),若是不使用二級域名,那麼域名在每次啓動natapp.exe的時候,域名是會改變的。同時也能夠綁定本身的頂級域名,前提是域名已經經過備案。而且要將域名映射到natapp提供的隧道上。

web

5、配置natapp config.ini 並啓動服務

將隧道的token寫入配置文件,而後啓動natapp服務

config

#將本文件放置於natapp同級目錄 程序將讀取 [default] 段
#在命令行參數模式如 natapp -authtoken=xxx 等相同參數將會覆蓋掉此配置
#命令行參數 -config= 能夠指定任意config.ini文件
[default]
authtoken=********              #對應一條隧道的authtoken
clienttoken=                    #對應客戶端的clienttoken,將會忽略authtoken,若無請留空,
log=none                        #log 日誌文件,可指定本地文件, none=不作記錄,stdout=直接屏幕輸出 ,默認爲none
loglevel=ERROR                  #日誌等級 DEBUG, INFO, WARNING, ERROR 默認爲 DEBUG
http_proxy=                     #代理設置 如 http://10.123.10.10:3128 非代理上網用戶請務必留空
複製代碼

配置好natapp config.ini後就能夠啓動natapp.exe

cmdweb

6、測試

到此,隧道已經啓動成功了,內網穿透已經ok。能夠經過外網測試一下了。收穫成果的時候到了。

xiyangkeji

7、踩坑

到此咱們已經成功配置好了服務器的tcp和web隧道。能夠直接進行外網調試和外網的遠程鏈接。
一、有時候咱們直接ping不到外網的地址或者隧道。這是由於服務器沒有開放ping的進出規則。阿里雲鬚要配置-1/-1的端口策略,物理服務器則須要開啓打印機共享傳輸服務。
二、配置www.xxxx.com和xxx.com訪問同一項目
雲服務器:則須要在域名解析的時候經過 www和@來分別配置。
物理服務器:在tomcat中的server.xml中添加host節點,映射的host分別爲以上類型網址。而且要新建一個webbapp文件夾,來對應不一樣的host。


長路漫漫,菜不是原罪,墮落纔是原罪。
個人CSDN:blog.csdn.net/wuyangyang_…
個人簡書:www.jianshu.com/u/20c2f2c35…
個人掘金:juejin.im/user/58009b…
個人GitHub:github.com/wuyang2000
我的網站:www.xiyangkeji.cn
我的app(茜茜)蒲公英鏈接:www.pgyer.com/KMdT
個人微信公衆號:茜洋 (按期推送優質技術文章,歡迎關注)
Android技術交流羣:691174792

以上文章都可轉載,轉載請註明原創。

相關文章
相關標籤/搜索