在上一個章節咱們講究了私有云的部署,可是會有一個問題,我若是在外面,如何訪問家裏電腦上部署的私有云服務?其實這個問題在擴大化說 就是 如何能夠在家庭網絡之外 能夠訪問到 家庭網絡:公網 訪問 內網。php
顧名思義:就是想辦法把本身的內網機器 能夠直接 讓外網能夠訪問。因爲咱們互聯網技術不是咱們國家發明的,在加入互聯網以後咱們分配到的公網IP也很少,不像美國人口少IP還多,基本每家都有公網IP(好羨慕)。
html
在咱們國家須要公網IP必需要購買服務器或者家裏安裝電信網絡。而我家的狀況安裝了電信公司提供的網絡服務有一個 不固定的公網IP。咱們的文章我主要解釋我家裏的網絡狀況。後面會介紹幾種非網絡服務商提供的公網IP的方式。python
如上圖,經過ip138能夠查詢到,個人出口IP是上圖。切記非電信供應商截圖的IP不必定是經過你家,多是經過多種路由設備轉入到你家,這種就不行的。能夠看到電信貓的管理界面IP和 ip138查詢的同樣,就說明我家的IP是公網IPnginx
如上圖,我家裏的網絡是 電信提供的貓 接入了一個 TP-LINK。家裏的全部上網設備都是接入 TP-LINK進行上網。git
最上面是TP-LINK的管理界面,下面是電信貓的管理界面。我會設置全部從 外網請求 的全部流量都轉發到 TP-LINK這個設備。github
我舉個例子,假如個人公網IP是 a.b.c.d。你經過任何方式的TCP和UDP協議 訪問這個IP的任何端口數據包,都會轉發到 TP-LINK這個路由設備。web
爲何要設置這個東西?服務器
由於咱們的私有云電腦是屬於TP-LINK 局域網的。若是咱們想要經過訪問公網IP或者域名 能夠訪問到這個服務,就必須進行 數據包轉發。須要從電信貓轉發到TP-LINK,而後TP-LINK在轉發到對應的私有云電腦上就能夠了。微信
如上圖,最上面的截圖是nextcloud須要一個網址,能夠看到個人網址是 http://xxx.home.54php.cn。 能夠看到我將 home.54php.cn(54php.cn是我我的註冊的) 全部子域名都解析到了個人公網ip上了(這裏有個問題,就是電信的IP有時候會變的,如何解決這個問題會講解的)網絡
咱們能夠想象一下,經過訪問 http://xxx.home.54php.cn:10000 也就是 a.b.c.d 這個公網IP的 10000端口。首先 a.b.c.d 全部的請求都會轉發到TP-LINK,而後TP-LINK管理界面有 虛擬服務器的功能【上面有截圖】,能夠看到經過TP-LINK 按照端口 將請求再次轉發到對應機器。只要請求到了具體服務器上了指定端口(例如80),那就是服務器上的各類服務配合的事情了。例如經過nginx作web服務器轉發到對應服務,例如php,python等等。
經過如上的操做 我就能夠經過一個域名(其實也是IP,由於域名解析要作的事情就是找到對應的IP,也就是DNS服務的功能)。不知道是否給你們講解清楚了,若是你們還有不明白的能夠直接加入咱們技術交流羣進行交流【QQ羣:325264502】。這塊你們弄清楚了就很是容易理解了。就是多個局域網相互轉發數據包。
爲何不能80或者443 默認端口?
由於電信公司非正規在電信公司備案企業或者我的,是不會開啓默認服務端口,例如80,443,22等
其實這也是爲何不用IP直接訪問的緣由,由於個人域名是不會變的,若是IP變了,我只須要經過一個方式將域名和IP的對應關係更新下就能夠了。接下來就是DDNS登場了。咱們常常據說DNS,前面在加上一個D是什麼玩意。這裏多的一個D是動態的意思。通常咱們理解的一個域名和IP的對應關係是定死的。DDNS就是在本身知道本身的IP變了以後能夠去更新域名的解析IP地址的。
你們能夠看到個人*.home.54php.cn 所有到解析到家裏了。爲了達到咱們的目的咱們要使用一個可以提供ddns服務的dns服務商。我這裏選擇的是 DNSPOD。
目前在github上有人提供腳本:https://github.com/apanly/ArDNSPod。大體原理 就是 經過相似ip138這類網站獲取目前本身的外網ip,而後在獲取域名解析的IP,若是兩個IP不同經過調用DNSPOD提供的接口更改域名綁定IP。
原理其實和電信網絡差很少,只是不一樣於電信服務商提供的公網IP,而是其餘人提供了一個公網IP,而後經過別人家的公網IP服務轉發到 咱們內網機器上。或者你能夠理解 有一我的按照了電信網絡而後通個了一種技術手段 可讓咱們訪問一個他們指定的域名 而後 能夠轉發到本身內網的機器上。
這種內網轉外網的服務其實很是多,例如常常聽到的花生殼,Ngrok,NAT。我記得我博客就有講解過:Ngrok NatApp 微信本地化調試利器。
如何得到這樣的公網IP。你能夠去任何服務器供應商購買服務器 就會獲取一個免費或者付費的IP。例如個人 博客 就是在騰訊雲購買的(爲何買騰訊雲,由於當時作活動便宜,因此不要爭論爲何不用阿里雲,網易雲等等)。而後在本身服務器上搭建各類內網轉外網的服務端服務。
若是是購買服務器搭建內網轉外網的服務,這種比較考驗你們的功底,須要掌握的知識相對要求較高。
若是是別人搭建好了內網轉外網的服務,你只須要搭建別人指定好的客戶端軟件進行設置就能夠了。
若是是別人搭建好的,通常這種網站都會要求註冊會員,而後進行必定免費 + 付費的方式給你們提供服務,而且這種通常有種缺點,只能有一個域名。不像我我的電信IP 能夠綁定多個域名,多個端口,支持多種服務。可是好處是 能夠是 80端口。
我的推薦若是隻是玩玩 能夠在網上找一些別人提供好的服務來體驗下就能夠了。能夠搜索引擎搜索關鍵詞:內網轉外網 。
若是你們擔憂被騙,能夠加入咱們的QQ羣,幾我的合夥買個服務器(能夠按月按年),搭建一個內網轉外網的服務。到時候我能夠技術支持。
DNSPOD DDNS源碼:https://github.com/apanly/ArDNSPod
Ngrok NatApp 微信本地化調試利器:http://www.54php.cn/default/211.html