樹(shù)莓派-家庭NAS(2)

樹(shù)莓派-家庭NAS(1) http://www.reibang.com/p/9be7ada37863
樹(shù)莓派-家庭NAS(2) http://www.reibang.com/p/91405ca824b8
樹(shù)莓派-家庭NAS(3) http://www.reibang.com/p/80777ed85246

內(nèi)網(wǎng)穿透選型

上一篇文章中介紹了葛假,家用NAS樹(shù)莓派的整體方案。在整體解決方案中說(shuō)明的搭建整體方案的第一步是解決訪問(wèn)問(wèn)題祟霍。本文將主要介紹訪問(wèn)解決方法安寺。

內(nèi)部網(wǎng)絡(luò)穿透技術(shù)可以分為NAT、DDNS溉旋、反向代理和VPN脾拆。這里就不介紹這些方式夜惭,可以查看參考中的內(nèi)容進(jìn)行了解苦银。這里說(shuō)明他們的大概工作原理用于選型工作啸胧。

  • NAT技術(shù):

    內(nèi)網(wǎng)中的機(jī)器怎樣訪問(wèn)公網(wǎng)上的網(wǎng)站??jī)?nèi)網(wǎng)機(jī)器發(fā)送的數(shù)據(jù)可以經(jīng)過(guò)Router轉(zhuǎn)發(fā)的公網(wǎng)上幔虏,那公網(wǎng)上返回的數(shù)據(jù)怎么到達(dá)內(nèi)網(wǎng)的機(jī)器內(nèi)纺念,這個(gè)過(guò)程就是NAT技術(shù)。主要技術(shù)是通過(guò)動(dòng)態(tài)端口映射技術(shù)完成想括。


    NAT技術(shù)
  • DDNS技術(shù):

    DDNS即動(dòng)態(tài)域名解析陷谱,是將用戶的動(dòng)態(tài)IP地址映射到一個(gè)固定的域名解析服務(wù)上,用戶每次連接網(wǎng)絡(luò)的時(shí)候瑟蜈,客戶端程序就會(huì)通過(guò)信息傳遞把該主機(jī)的動(dòng)態(tài)IP地址傳送給位于服務(wù)商主機(jī)上的服務(wù)器程序烟逊,服務(wù)程序負(fù)責(zé)提供DNS服務(wù)并實(shí)現(xiàn)動(dòng)態(tài)域名解析。就是說(shuō)DDNS捕獲用戶每次變化的IP地址铺根,然后將其與域名相對(duì)應(yīng)宪躯,這樣域名就可以始終解析到非固定IP的服務(wù)器上,互聯(lián)網(wǎng)用戶通過(guò)本地的域名服務(wù)器獲得網(wǎng)站域名的IP地址夷都,從而可以訪問(wèn)網(wǎng)站的服務(wù)眷唉。


    DDNS技術(shù)
  • 反向代理:

    反向代理就是經(jīng)常說(shuō)的,有一臺(tái)公網(wǎng)服務(wù)器和私網(wǎng)服務(wù)器在一個(gè)網(wǎng)絡(luò)內(nèi)囤官。公網(wǎng)服務(wù)器上構(gòu)建一個(gè)服務(wù),把用戶請(qǐng)求轉(zhuǎn)發(fā)到死亡服務(wù)器上就可以了蛤虐。


    反向代理技術(shù)
  • VPN技術(shù):

    VPN技術(shù)就是將兩個(gè)私網(wǎng)通過(guò)隧道技術(shù)組合成一個(gè)子網(wǎng)党饮。


    VPN技術(shù)

方案選擇

本次我們的方向是家用NAS,所以驳庭,網(wǎng)絡(luò)環(huán)境也是家庭環(huán)境刑顺。所以氯窍,可能需要組合各種內(nèi)網(wǎng)穿越技術(shù)才可以滿足整體要求。所以蹲堂,現(xiàn)在開(kāi)始組織方案狼讨。

家用NAS

在本方案中家用網(wǎng)絡(luò)使用的是電信網(wǎng),電信網(wǎng)是有公網(wǎng)IP的柒竞。在沒(méi)有公網(wǎng)IP的通信服務(wù)商政供,請(qǐng)自行選擇其他方案。然后朽基,再使用NAT技術(shù)的端口靜態(tài)映射布隔,將樹(shù)莓派上的服務(wù)發(fā)布出去。使用DDNS技術(shù)的域名動(dòng)態(tài)解析將路由器域名發(fā)布到域名上稼虎。

實(shí)現(xiàn)

  1. 先把樹(shù)莓派的內(nèi)網(wǎng)IP設(shè)置為靜態(tài)IP衅檀。
  2. 實(shí)現(xiàn)上圖中的第七步,在路由器上設(shè)置端口映射霎俩。因?yàn)樽约沂褂玫穆酚善鞑灰粯影Ь揖筒唤貓D了。幾乎所有的家用路由器都是支持端口映射的打却。
  3. 在樹(shù)莓派上編寫代碼排苍,實(shí)現(xiàn)上圖中1,2,3步。我使用的是NETGEAR R6200V2学密,所以根據(jù)路由器的特點(diǎn)進(jìn)行了公網(wǎng)IP的獲取工作淘衙。
  4. 配置定時(shí)執(zhí)行過(guò)程。

定時(shí)執(zhí)行(cron)代碼:

*/2 * * * * root /home/pi/update_public_ip.py > /dev/null 2>&1 &

更新域名IP代碼(python):

#!/usr/bin/python2.7
#-*-coding:utf-8-*-

import os
import sys
import httplib
import urllib2
import urllib
import base64
import cookielib

# 獲取網(wǎng)管地址腻暮,即路由器地址
def getGateway():
  return "172.25.1.1"

# 獲取路由器上的公網(wǎng)IP彤守。因?yàn)閷?shí)在路由器上撥號(hào)上網(wǎng)的,所以從路由器上獲取公網(wǎng)IP
def getPublicIP(ip, user, password):
  base64string = base64.b64encode('%s:%s' % (user, password))
  headers = {"Host": ip,
             "User-Agent": "Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0",
             "Accept": "*/*",
             "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
             "Accept-Encoding": "gzip, deflate",
             "Referer": "https://172.25.1.1/RST_st_poe.htm",
             "Connection": "keep-alive",
             "Authorization":"Basic %s"  % base64string}
  # 登錄服務(wù)器哭靖,獲取Cookie
  conn = httplib.HTTPConnection(ip, 80)
  conn.request("GET", "", None, headers)
  response = conn.getresponse()
  cookie = response.getheader("set-cookie")
  headers["Cookie"] = cookie
  conn.close()

  # 獲取公網(wǎng)IP地址所在頁(yè)面
  conn = httplib.HTTPConnection(ip, 80)
  conn.request("GET", "RST_st_poe.htm", None, headers)
  response = conn.getresponse()
  result = response.read()

  # 解析頁(yè)面中內(nèi)容具垫,分解出IP地址
  start_index = result.find("IP地址</B></td>")
  start_index = result.find("<TD NOWRAP>", start_index)
  end_index = result.find("</td>", start_index)
  result = result[start_index:end_index]
  result = result[len("<TD NOWRAP>"):]
  conn.close()

  # 登出路由器
  conn = httplib.HTTPConnection(ip, 80)
  conn.request("GET", "LGO_logout.htm", None, headers)
  response = conn.getresponse()
  conn.close()

  # 返回IP地址
  return result

# 更新二級(jí)域名的IP
def updateDomain(ip):
  os.system("curl \"http://update.dnsexit.com/RemoteUpdate.sv?login=XXXXXX&password=XXXXXX&host=XX.XXX.X&myip=%s\"" % ip)

# 更新二級(jí)域名的主流程
if __name__ == "__main__":
  public_ip = getPublicIP(getGateway(), "XXXXX", "XXXXX")
  print "public ip : %s" % public_ip
  updateDomain(public_ip)

參考:

一分鐘實(shí)現(xiàn)內(nèi)網(wǎng)穿透(ngrok服務(wù)器搭建)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市试幽,隨后出現(xiàn)的幾起案子筝蚕,更是在濱河造成了極大的恐慌,老刑警劉巖铺坞,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件起宽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡济榨,警方通過(guò)查閱死者的電腦和手機(jī)坯沪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)擒滑,“玉大人腐晾,你說(shuō)我怎么就攤上這事叉弦。” “怎么了藻糖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵淹冰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我巨柒,道長(zhǎng)樱拴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任潘拱,我火速辦了婚禮疹鳄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芦岂。我一直安慰自己瘪弓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布禽最。 她就那樣靜靜地躺著腺怯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪川无。 梳的紋絲不亂的頭發(fā)上呛占,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音懦趋,去河邊找鬼晾虑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛仅叫,可吹牛的內(nèi)容都是我干的帜篇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诫咱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼笙隙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起坎缭,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤竟痰,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后掏呼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體坏快,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年哄尔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了假消。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岭接,死狀恐怖富拗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鸣戴,我是刑警寧澤啃沪,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站窄锅,受9級(jí)特大地震影響创千,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜入偷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一追驴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疏之,春花似錦殿雪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至其骄,卻和暖如春亏镰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拯爽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工索抓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毯炮。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓逼肯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親否副。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汉矿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 家里升級(jí)了電信200M寬帶,上行也提高到了20M备禀,原來(lái)的百兆路由器已經(jīng)不能滿足需要了洲拇,經(jīng)過(guò)一番比較最終入手了華碩A...
    0晨鶴0閱讀 206,994評(píng)論 19 138
  • 當(dāng)今互聯(lián)網(wǎng)到處存在著一些中間件(MIddleBoxes),如NAT和防火墻曲尸,導(dǎo)致兩個(gè)(不在同一內(nèi)網(wǎng))中的客戶端無(wú)法...
    空即是色即是色即是空閱讀 1,014評(píng)論 0 0
  • 我相信一些人赋续,不管發(fā)生什么,始終都相信著另患,纽乱,, 他們是怎么樣的一群人呢昆箕?對(duì)我來(lái)說(shuō)鸦列,就算他們是錯(cuò)的租冠,我依舊相信你,我...
    另一個(gè)自己WYH閱讀 94評(píng)論 0 0
  • 今天薯嗤,女兒學(xué)校舉辦二年級(jí)家長(zhǎng)開(kāi)放活動(dòng)顽爹。 早上,七點(diǎn)半骆姐,帶著女兒镜粤,趕到學(xué)校。女兒先進(jìn)教室玻褪,家長(zhǎng)們被老師領(lǐng)著肉渴,去一樓參...
    玉妮閱讀 1,232評(píng)論 22 30
  • 感恩:今天發(fā)現(xiàn)了一個(gè)新規(guī)律,其實(shí)她一直都存在带射,只是我當(dāng)下的眼睛和心態(tài)剛剛發(fā)現(xiàn)他同规,他是什么呢,當(dāng)我開(kāi)始我的心理成長(zhǎng)路...
    冰藍(lán)兒8閱讀 191評(píng)論 0 0