首頁>Club>
6
回覆列表
  • 1 # mofee015

    我們一般所說的NAT是指snat,既源網路地址轉換。這類NAT不接受從外部發起的連線,而是隻處理從內部向外部發起的請求。比如NAT內部的機器A向百度發起查詢請求,資料包經過NAT時,NAT把資料包的原地址(既機器A的IP地址)換成NAT所在的機器的IP地址(如果有多個可以指定某一個),把源埠換成NAT所在機器的某個未被使用的埠,然後把資料包發出去。同時NAT把這個對映關係記錄下來(源地址,源埠對應NAT轉換後的IP和埠),並且會在轉換後的主機埠等待發出去的請求響應。等請求響應回來以後,會查詢對映表,把響應的資料包轉發給後端的機器A。由於NAT隱藏了後端的所有機器地址,所以從外面發起的請求必須經過NAT所在的機器IP(一般是個公有地址)以及某個埠,但是這時這個埠不在NAT的對映表裡,資料包不會得到處理,被丟棄掉了。因此一般情況下從外部無法發現NAT後端的機器也無法訪問他們。

    但是就沒辦法了嗎?也不是。

    第一,假如有某個軟體在NAT機器的某個埠監聽,把收到的資料包轉發給後端的某個IP的某個埠,這就把NAT後端的某個IP和埠間接的暴露了出去。實際上NAT就有這個埠對映功能(簡單點的可以看vmware work station 的網路設定,裡面就有NAT埠對映)。但是這個只能埠一一對應對映,對於要發現NAT後端任意機器並進行通訊是不行的。

    第二,想要發現NAT後端的任意機器,實際上你也必須加入到NAT後端的這個網路。手段就是VPN。在NAT機器上架設一個VPN伺服器,IP網段為NAT後端的網段IP,透過NAT機器IP提供服務,VPN客戶端連上以後分配到一個NAT後端同樣的IP並給你的機器自動設定路由,這樣就可以發現NAT裡的任意機器了。

  • 中秋節和大豐收的關聯?
  • 有錢≠有價值,對嗎?