NAT全面解析

                                                 NAT全面解析
     ip地址是用來唯一標識資源所屬的主機,每個ip地址都是全球唯一的,當初的ipv4是用32位2進制數來標識ip地址的,當時誰也沒預料到ip地址會短缺的問題。網絡的迅猛發展,直到當今ip地址的短缺問題是網絡設計者們不可迴避的問題。
     於是nat出來了,ipv6出來了,它們就是用以解決ip地址不足的問題的。ipv6用128位2進制ilai標識ip地址,據說全球的每粒沙子都可以分配到一個ip地址,想想應該是足夠了,至少短期內是足夠的。但是ipv6至今並沒有實際的應用或普及應用,在一些實驗室可能會看到ipv6的身影,原因之一就是nat應用的如此的完好,以致ipv6在短期內似乎沒有應用的必要,或許等到nat不能再解決問題的時候,ipv6會拔地而起,稱霸網絡世界。
     什麼是nat,nat到底如何解決ip地址短缺的問題?下面詳細講解下nat:
     nat(network address traslation)即網絡地址轉換,是爲了解決IP地址不夠問題而出現的一種將內部私有地址轉換爲外部公網IP的技術。因爲IP地址短缺,因而,相關組織將IP地址分爲私有地址和公有地址兩中類型。私有地址,在企業內部應用,不同的企業相對獨立,也就是說,這些IP是不對外公開的,各個企業都可以使用,但是企業內部必須要保持地址的唯一性,即不能重複使用某一IP。公有地址,是全球唯一的地址,在internet上不能有2個相同的IP公有地址。由於私有地址可以在不同企業內重複使用,因此說,這樣做節約了IP地址,但internet內不可能用一個地址來表示2個目標主機,因此重複使用的私有IP必須隱藏起來-----不對外呈現,呈現出去的是轉換後的共網IP,這樣就不會有地址衝突,因爲公有IP是全球唯一的。也就是說NAT爲私有IP上公網提供了一種可能。否則私有IP的概念是沒有意義的,那麼IP地址節約了也就沒有意義了。私有IP範圍:10.0.0.0/8,172.16.0.0/12,192.168.0.0/16。
    一般地,企業內部的主機用的是私有ip地址,網絡的邊界與互聯網連接的部分才使用共有ip,而只有共有ip才能上互聯網,於是問題就出現了:內部主機如何上網?"使用公有ip" 當然可以,但這是癡人說夢話,哪兒來那麼多的公網ip?能否用少量的公網IP代替內部私有IP主機上網?可以!!這正是NAT的思想——NAT將內部私有IP在出網絡之前轉換爲已經申請的公有IP,回來時再將目標改爲原來的IP,NAT設備就好象起了一個代理的作用,幫助內部網絡與外部通訊。NAT的思想就是這樣,那麼如何實現呢?
    NAT可以在路由器上和防火牆上實現:
    一,首先談談路由器上做NAT:
    1,nat的分類:靜態NAT,非複用動態NAT,複用動態NAT(PAT)。不同類型應用與不同的場景。靜態NAT,是一一對應的關係且是固定的對應關係,用在外網主動訪問內部服務器。靜態NAT是用手工的方式創建一個靜態轉換表。非複用動態NAT,也是一一對應關係,但是對應關係是動態的變化的。複用動態NAT,也叫PAT,是一對多的關係,即一個公有IP可以轉換多個私有IP,用端口號區分。非複用動態NAT和PAT是有數據經過NAT設備時,再動態的創建轉換表。
    2,NAT的配置:
   1)非複用動態NAT的配置——有一個公有地址池的場景:
           (1)定義裏外口:
                    R(config)#int s0
                    R(config-if)#ip nat inside
                    R(config)#int s1
                    R(config-if)#ip nat outside
           (2)定義可轉換的用戶列表:
                    R(config)#access-list 1 permit 192.168.1.0 0.0.0.255
           (3)定義公有地址池:
                    R(config)#ip nat pool t25 開始IP 結束IP netmask 子網掩碼      (注意:開始IP<結束IP)
           (4)定義如何轉換(內到外基於源還是目標,外到內基於源還是目標):
                    R(config)#ip nat inside source list 1 pool t25   
   2)非複用動態NAT的配置——只有一個公有地址在接口上的場景:
           (1)定義裏外口:
                    R(config)#int s0
                    R(config-if)#ip nat inside
                    R(config)#int s1
                    R(config-if)#ip nat outside
           (2)定義可轉換的用戶列表:
                    R(config)#access-list 1 permit 192.168.1.0 0.0.0.255
           (3)定義公有地址池:
                    R(config)#ip nat pool t25 開始IP 結束IP netmask 子網掩碼     (注意:開始IP=結束IP)
           (4)定義如何轉換(內到外基於源還是目標,外到內基於源還是目標):
                    R(config)#ip nat inside source list 1 pool t25  
     2)也可以以如下方法做:
           (1)定義裏外口:
                    R(config)#int s0
                    R(config-if)#ip nat inside
                    R(config)#int s1
                    R(config-if)#ip nat outside
           (2)定義可轉換的用戶列表:
                    R(config)#access-list 1 permit 192.168.1.0 0.0.0.255
           (3)定義如何轉換:
                    R(config)#ip nat inside source list 1 interface s1    (注意: pool t25 由出口代替)  
   3)複用動態NAT的配置:
           與非複用動態NAT的配置完全一樣,只是在“定義如何轉換”後加上一個單詞:overload,如:
           (1)定義裏外口:
                    R(config)#int s0
                    R(config-if)#ip nat inside
                    R(config)#int s1
                    R(config-if)#ip nat outside
           (2)定義可轉換的用戶列表:
                    R(config)#access-list 1 permit 192.168.1.0 0.0.0.255
           (3)定義公有地址池:
                    R(config)#ip nat pool t25 開始IP 結束IP netmask 子網掩碼      (注意:開始IP<結束IP)
           (4)定義如何轉換(內到外基於源還是目標,外到內基於源還是目標):
                    R(config)#ip nat inside source list 1 pool t25 overload        (注意:加了overload)
    
     4)靜態NAT:
           (1)定義裏外口:
                    R(config)#int s0
                    R(config-if)#ip nat inside
                    R(config)#int s1
                    R(config-if)#ip nat outside
           (2)定義靜態映射關係:
                    R(config)#ip nat inside source static tcp 私有IP 80 公有IP 80
     3,使用場景說明:內網訪問外網時,一般使用PAT而不是非複用動態NAT,因爲只有PAT纔會實現節約公有IP的作用,因爲PAT一個公有IP可以對應多個私有IP。而內部提供對外服務場景中則使用靜態NAT,因爲服務器不會主動發起連接,所以不會激發路由器產生一個轉發表,所以必須用靜態NAT進行手工創建。
     二,上面講了在路由器上做NAT,下面再談談在防火牆上做NAT:
     其實在大型企業裏一般都用防火牆做NAT。因爲防火牆的拿權特性更高,能做的NAT類型更靈活。原理相同,配置命令不同。
          1,nat的分類:靜態nat,動態NAT ,PAT ,策略nat ,一致性nat,排除nat。前面3個上面已經講過。策略nat其實就是ACL+NAT,一致性nat就是把源IP轉換爲自己,就相當沒轉換,但有抓換表的存在。排除nat,就是將其排除在nat之外,是真正的不轉換。
          2,nat的配置:
             1)靜態nat:
              pix(config)#static (inside,outside) tcp 200.1.1.5 ftp 192.168.1.5 ftp netmask 255.255.255.255
              pix(config)#static (inside,outside) tcp 200.1.1.5 http 192.168.1.5 http netmask 255.255.255.255
              pix(config)#static (inside,outside) tcp 200.1.1.5 smtp 192.168.1.5 smtp netmask 255.255.255.255
             2)動態nat:
                    (1)定義要轉換的IP:
                         pix(config)#nat (inside) 1 192.168.2.0 255.255.255.0
                    (2)定義地址池:
                         pix(config)#global (outside) 1 200.1.1.5-200.1.1.100
             3)PAT:
                    (1)定義要轉換的IP:
                         pix(config)#nat (inside) 1 192.168.2.0 255.255.255.0
                    (2)定義公有地址:
                         pix(config)#global (outside) 1 200.1.1.5 netmask 255.255.255.255
                      或 pix(config)#global (outside) 1 interface
                    (3)定義公有地址:(可選)  
                         pix(config)#global (outside) 1 200.1.1.6 netmask 255.255.255.255
            4)策略nat:(基於不同應用)
                    (1)定義要轉換的源IP的的不同流量:
                          pix(config)#access-list wu permit tcp 192.168.2.0 255.255.255.0 10.1.1.1 255.255.255.255 eq 80
                          pix(config)#access-list lu permit tcp 192.168.2.0 255.255.255.0 10.1.1.1 255.255.255.255 eq 23
                    (2)調用ACL定義要轉換的IP:
                          pix(config)#nat (inside) 1 access-list wu
                          pix(config)#nat (inside) 2 access-list lu
                    (3)定義公有IP:
                          pix(config)#globle (outside) 1 200.1.1.5
                          pix(config)#globle (outside) 2 200.1.1.6
            5)策略nat:(基於不同目標主機)
                    (1)定義要轉換的源IP的的不同流量:
                          pix(config)#access-list wu permit ip 192.168.2.0 255.255.255.0 10.1.1.1 255.255.255.255
                          pix(config)#access-list lu permit ip 192.168.2.0 255.255.255.0 10.1.1.2 255.255.255.255
                    (2)調用ACL定義要轉換的IP:
                          pix(config)#nat (inside) 1 access-list wu
                          pix(config)#nat (inside) 2 access-list lu
                    (3)定義公有IP:
                          pix(config)#globle (outside) 1 200.1.1.5
                          pix(config)#globle (outside) 2 200.1.1.6
             6)策略nat:(基於靜態)
                    (1)定義要轉換的源IP的的不同流量:
                          pix(config)#access-list wu permit ip 192.168.2.0 255.255.255.0 10.1.1.1 255.255.255.255
                    (2)調用ACL定義靜態映射:
                          pix(config)#static(inside,outside) 200.1.1.5 access-list wu
                  
              7)一致性nat: 
                          pix(config)#nat (inside)  0 192.168.2.0 255.255.255.0
              8)排除nat:
                     (1)定義要排除的流量:
                          pix(config)#access-list wu permit ip 192.168.2.0 255.255.255.0 10.1.1.1 255.255.255.255
                          pix(config)#access-list wu permit ip 192.168.2.0 255.255.255.0 10.1.1.2 255.255.255.255
                     (2)執行排除任務: 
                          pix(config)#nat (inside) 0 access-list wu
           3,當使用nat-control時,其實inside--dmz(dmz私有IP時用:排除或一致性),dmz--outsode(下載補丁)也可以要用nat。
       
        總的來說nat有如下優點:1緩解了IP地址的不足問題。2對外部隱藏了內網——安全性。也有缺點:每個數據包查nat表,導致了延遲。無法實現端到端的跟蹤,一些引用回受到限制。但優點還是大於缺點。
        nat已經講完了,不知道看完後對大家有沒有幫助,不明白的可以聯繫我。
        QQ:597496863
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章