為什麼NAT可以防止外部主機攻擊內部主機與服務器,是因為它不可以逆向解析嗎?

運維網絡工程師


下面某些大V不懂能不能不要瞎答呢,每次百度一下答案不是誤導群眾嗎?你連樓主的意思都沒理解清楚,而且連NAT的基本的五元組都答錯了,誤導什麼呢?我來回答一下樓主的問題。首先,樓主說的沒錯,NAT防止外部主機攻擊內部主機的最基本原理,就是NAT的不可逆的特性。


首先,我們理解一下什麼是NAT,NAT就是訪問網絡服務時,源IP地址和源端口的轉換過程。因此NAT是對IP地址和TCP/UDP端口的轉換

我們訪問網絡上的服務時,標識我們的網絡流量一般有5個關鍵要素,既:源IP、源端口、協議、目的IP、目的端口,這些我們稱之為五元組。也就是我們通過網頁訪問某個網站時,我們實際流量是這樣的

源IP就是我們PC機或者手機獲取的IP,目的IP就是網頁IP,TCP就是使用的網絡協議(你可以理解為一種網絡技術)、源端口,就是我們PC機使用的TCP端口,目的端口就是網頁使用的端口。也就是我們通過網頁的IP+TCP+網頁的端口,就可以標識我們的訪問目標了。


例如,訪問流量中目的IP是今日頭條的IP地址,再加上TCP協議和80端口,就標誌著我們正在訪問今日頭條的網頁服務


這裡就有一個問題,也就是源IP(就是我們PC、手機獲取的IP)如果要能訪問今日頭條,就必須通過運營商的互聯網訪問,而且互聯網網絡就必須認識我們的源IP地址和目的IP地址,不認識的話,運營商的網絡就認為這個流量是非法的,這就好比如果要撥打電話,我們主叫號碼和被叫號碼必須是運營商移動網絡認識的,不認識就打不通


但是有一種情況需要解決,就是我們PC機或者手機使用私網地址訪問網絡服務。私網地址就是我們網絡不認識的地址,按照上面的原則,私網地址發出的網絡流量在網絡會被丟棄的。但是這時候我們只有一個公網地址,但是卻讓更多的人使用網絡服務,怎麼辦呢?那就是做NAT,NAT會把多個私網的源IP和源端口,與公網的源IP和多和源端口做一個映射,那麼私網的用戶就可以訪問網絡服務了


所謂映射就是直接在訪問網絡服務流量時,把私網IP和端口替換成公網IP和端口,所有NAT設備都有一個替換過程


例如我們家有3個電腦和2個手機要訪問新浪,我們獲得的公網地址是111.100.2.112,百度的網頁服務地址和端口分別是180.97.33.107,我們的家庭NAT上實際保存了下表中的信息


這些信息叫NAT Session,也就是NAT會話表,我們訪問網絡時,NAT設備裡有一堆這種會話表,這是NAT轉換的基本原理,也是NAT更加安全的保證


由於網絡流量的私網IP和端口在NAT設備已經替換成公網IP和端口,那麼在運營商網絡只存在NAT轉換後的流量,因此所有的網絡用戶只能看到用戶轉換後的公網IP,也就是用戶的私網IP是隱藏起來的,這是第一個安全的措施


但是這不意味著我們內部的私網服務器就是安全的。NAT設備做了2個事情來保證我們的私網設備安排


特性1:用戶的流量必須和NAT Session中的信息對應,才可能讓流量通過。舉個例子,下面是一個Session,如果NAT做了嚴格五元組檢查,NAT設備中只有匹配Session表的正反兩條流量可以通過。如下圖,分別是192.168.0.100(1234)訪問180.97.33.107(80)的TCP流量和180.97.33.107(80)訪問192.168.0.100(1234)TCP流量可以,其他流量都要丟棄。

NAT設備會檢查網絡流量和NAT Sesion的對應信息,不存在NAT session對應的流量全部丟棄。也就是非法攻擊流量如果匹配不上NAT Session,就會被丟棄


特性2:NAT的不可逆特性。什麼叫NAT不可逆?這個又和NAT Session有關。我們剛才說了,必須匹配NAT Session的正反兩條流量才能通過NAT設備。那麼NAT Session是怎麼建立的?NAT Session必須由私網用戶建立。也就是第一個私網用戶訪問公網的數據才能建立起Session,例如TCP就是由私網訪問公網的第一個TCP SYN包觸發建立NAT Session。

因此不可逆特性就保證了,一般無法從公網(互聯網)主動訪問私網,因為公網主動訪問私網,無法觸發NAT Session的建立,沒有NAT Session的流量都會丟棄。這也就保證了從公網來的攻擊流量無法到達私網PC機,私網PC機會更安全


這就是做了NAT的設備更加安全的原因,當然這種安全也是相對的。比如NAT設備的對應規則可能會寬鬆一點等等,這樣會給部分攻擊者可乘之機。但是不可逆和NAT Session規則的匹配特性,的確可以讓我們的主機更安全一些


IT老菜鳥


    NAT隱藏了內網結構,在保證路由器安全的情況下,外網只能“看到”路由器的對外地址,因此一定程度上可以防止外部攻擊內部主機和服務器。


    什麼是NAT?

    NAT地址轉換,廣泛應用在家庭網絡中。光貓PPPOE撥號之後獲取一個外網地址,家庭內網終端通過端口複用的方式,共享一個外網地址訪問互聯網。

    NAT地址轉換的核心是一張映射表,(源ip,源port,映射ip,映射port),簡單的說就是,家庭內網的不同終端的ip地址映射到一個公網地址的不同端口,如下圖所示的例子。


    NAT保護內網

    NAT實現地址轉換的同時,隱藏了內網結構,外網只能看到光貓PPPOE撥號獲取的外網IP地址,內網是不可見的。

    這裡假設光貓撥號後獲取的IP地址是100.65.100.100。內網的一臺終端192.168.1.100訪問外網,經過光貓時,映射到100.65.100.100:1234,那麼外網看到的是100.65.100.100:1234,而不是192.168.1.100。

    NAT對內網的保護,僅限於路由器安全的情況,如果路由器被“攻破”,那麼家庭內網就沒有安全可言了。


    總之,NAT通過端口映射的方式,多個內網終端共享一個公網IP地址的方式訪問互聯網。內網對於外網是不可見的,一定程度上保護了內網安全。

如果覺得對你有幫助,可以多多點贊哦,也可以隨手點個關注哦,謝謝。

Geek視界


正確的答案是因為nat破壞了端到端的連接。

第一,這句話是什麼意思呢?

因為ipv4地址不夠用,所以使用了nat技術。

nat技術有一個侷限,就是破壞了端到端的通訊。

意思就是你在互聯網上不能訪問,你在路由器後面的那個設備。

第二,nat是做什麼目的?

因為在互聯網上通訊,大家必須用公網IP。

什麼是公網IP?

你可以這樣理解,比如說我在我家的小名叫做狗剩,

但是如果我要出門上街,我就不能叫狗剩,我就必須得有一個身份證和自己的名字,這個身份證的地址必須是唯一的,這就好比公網IP地址一樣。

什麼是私網IP?

但是狗剩這個名字是我的私網IP地址。

用nat的目的就是把私網IP和公網IP做轉換。

那我出門從狗剩變成了一個有身份證的人,這個過程就是nat轉換。

第三,為什麼nat破壞了端到端的通信?

因為你在互聯網上無法和對方的私網ip地址直接通訊。

也就是說如果我的小名叫狗剩,那麼社會上估計有10萬個人小名都叫狗剩,那麼如果你要跟狗剩通訊的話,你就沒辦法溝通了,因為你並不知道哪個人是你想通訊的狗剩。

技術上講,我家裡的電腦是192.168.1.100 ,你從互聯網是沒有辦法訪問我的這個地址。因為我這個地址是私有地址,這個地址全世界的家庭內網或是辦公室內網都有可能用這個地址,所以你要訪問這個地址,互聯網的路由器就煞筆了,不知道怎麼去


網絡工程師成長日記


在互聯網上的每一臺獨立的主機都至少需要一個東西才能被訪問那就是IP地址!

由於IP地址的短缺,人們發展除了NAT技術來緩解這種情況!否則現在很多人都不能上網!NAT的是網絡地址轉換的意思!

他的作用就是把路由器後面連接的上網終端的私有IP地址,轉換為路由器在PPPOE撥號連接後在運營商獲取的一個公網地址!路由器中維護著一張這樣的轉換表,每一臺主機轉換到獲得地址的不同端口上,這樣就可以用一個地址供路由器下面所有的主機上網!



但是NAT是單向的,也就是說可以從局域網主動訪問互聯網,但是不能從互聯網主動訪問局域網!這樣如果互聯網上的電腦需要訪問路由器後面的某一臺電腦,就會由於NAT的存在而不能訪問!在一定程度上保護了局域網中的電腦!


分享到:


相關文章: