보안세상

NAT와 PAT 기본 세팅 및 명령어 본문

공부

NAT와 PAT 기본 세팅 및 명령어

똔민 2015. 6. 20. 22:15
반응형

  <NAT - Network Address Translation>


- 내부 네트워크에서는 사설 IP를 사용하고 외부 인터넷으로 나가는 경우 공인 IP주소로 변환돼서 나가게 하는 기술


- 공인 IP주소의 부족으로 많이 사용된다. (보안과 경제상의 이유로 NAT를 이용해서 사설 IP를 사용하기도 한다.)

 

     => 공인 IP : 유료, 외부와 통신 가능(인터넷 사용 가능), 사설 IP : 무료, 외부와 통신 불가능(인터넷 사용 X)


  - NAT는 실제 출발지 주소가 NAT 처리에 의해 다른 주소로 변환되어 외부로 나가기 때문에 내부 네트워크 정보를 

    공개하지 않아서 어느 정도 보안적인 역할도 할 수 있다. (외부에서 내부 사설망으로는 접근이 힘들다.)


  - 내부 네트워크에서 사용되는 비공인 주소를 Inside local address라고 한다.


  - 외부로 나갈 때 변환되어서 나가는 주소를 Inside global address라고 한다.


      => 즉, NAT란  내부에서 사용되는 Inside local주소를 외부로 나갈 때 Inside global 주소로 바꿔주는 기술이다.



  - NAT에는 Static NAT, Dynamic NAT, PAT(Port address translation)가 있다.



   1) Static NAT 

   

        => Inside Local IP주소와  Inside Global IP주소간에 일대일 매핑을 하도록 설정


        => DNS 서버나 이메일 서버 같이 외부 인터넷에서 접속해야 하는 내부 IP 호스트에 유용하다.


        => 호스트가 꼭 변하지 않는 global 주소를 가져야 할 경우 static NAT 사용


        => 외부에서 내부 사설망을 접속하고자 할때 사용된다.


        => Static NAT에는 1:1 주소 NAT와 1:1 Port NAT가 있다.

                

                   1:1 주소 NAT는 내부 IP를 외부에서 다른 IP로 보이게 한다.

                   1:1 Port NAT는 내부 port (8080)를 외부에서 다른 port(80)으로 보이게 한다.

       

   2) Dynamic NAT


        =>  Inside Global IP주소 그룹 (pool)에서 하나의  Inside Global IP주소를 사설 IP 주소와 동적으로 매핑되도록 설정

              (공인 IP 그룹과 사설 IP 그룹을 그룹 대 그룹으로 매핑한다.)


        => 사설망에서 인터넷에 접속할 때 주로 사용된다.


   3) PAT(Port address translation)


        => 다수의 사설 IP를 1개의 공인 IP로 변환시켜서 외부와 통신이 가능하게 하는 기술이다. 

            (이론적으로는 64000개의 사설 IP를 하나의 공인 IP로 사용 가능) 



  * NAT의 대표적인 예는 우리가 집에서 많이 사용하는 공유기가 있다. 공유기는 인터넷 전용선과 연결되서 공인 IP주소를

    받은 다음에 사설 IP를 연결된 PC들에게 뿌린다. (기본적으로는 class C의 사설 IP를 할당한다.)


     PC가 외부와 통신을 하기 위해서는 공유기가 사설 IP를 다시 공인 IP로 변환시켜준다.

     (공유기가 PAT 작업까지 같이 수행해서 연결된 모든 PC가 동시에 인터넷 사용이 가능하다.)


     IP공유기와 NAT의 차이점은 IP 공유기는 공인 IP 주소 하나를 할당받아 공유하지만(PAT)

     NAT는 일정 범위에 있는 공인 IP 그룹의 주소를 할당 받고 이 주소를 사설 IP와 매핑해서 사용하는 개념이다. (dynamic NAT)

     (사설 IP 그룹을 공인 IP 그룹으로 변환한다.)



  * 클래스 별 사설 주소 (Inside local로 사용되는 주소)


    - class A :  10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)


    - class B :  172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12)


    - class C : 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16)



 ex> 10.10.10.1 주소를 가진 호스트가 외부(198.10.23.2)와 통신을 할 경우 (dynamic NAT)


   => 10.10.10.1 주소가 라우터를 거치게 되면서 라우터의 NAT 테이블에  Inside Global IP Address 주소중 하나(공인 IP주소(ex. 211.221.221.203))로 

        변환되고 변환된 내용은 NAT 테이블에 보관된다.

        따라서 외부(198.10.23.2)에서는 10.10.10.1을 공인 IP주소인 211.221.221.203으로 알게되고 외부에서는 응답을 211.221.221.203으로

        전송한다.


        211.221.221.203을 목적지로 하는 패킷을 수신한 라우터는 NAT 테이블에서 211.221.221.203과 match 되는 원래의 주소인

        10.10.10.1로 변환해서 내부 네트워크로 전달하기 때문에 외부와 통신이 가능하다. 


          *  NAT table 

          -------------------------------------------------------------------------------

         |         NAT Table         |                           |                             |

          -------------------------------------------------------------------------------

         |  Inside Local IP Address  |  Inside Global IP Address |  Outside Global IP Address  |

          -------------------------------------------------------------------------------

         |        10.10.10.1         |    211.221.221.203        |          198.10.23.2        |

          -------------------------------------------------------------------------------



   *  PAT(Port address translation)

 

    - 하나 혹은 소수의 공인 IP를 여러 host들이 사용할 수 있도록 하는 기술


    - host마다 포트 번호를 다르게 설정해서 하나의 공인 IP 주소로 외부와 통신할 수 있다.

       (포트 번호로 각각의 host 들을 구분할 수 있기 때문에 외부와의 통신에 문제가 없다.)

 

    - PAT는 Cisco IOS 설정에서는 Overload라고 한다.


    - PAT는 inside global ip address에 송신지 포트 번호를 사용해서 변환된 주소를 구분한다.


    - PAT는 여러개의 inside local ip address를 단지 하나 또는 몇 개의 inside global ip address에 포트 번호를 다르게 

       해서 외부 네트워크과 통신을 한다.


    - 라우터는 외부 IP 주소에 유일한 송신지 포트 번호을 붙여서 할당하기 때문에 내부 호스트 별로 패킷을 구분할 수 있다.


           * PAT table

          -------------------------------------------------------------------------------

         |              NAT Table with Overload                                                                                     |                               |

          -------------------------------------------------------------------------------

         |  Inside Local IP Address    |  Inside Global IP Address   |  Outside Local IP Address  |   Outside Global IP Address     |

          -------------------------------------------------------------------------------

         |      10.10.10.3 : 1331      |   211.221.221.203 : 1331    |      198.10.23.2 : 80      |   198.10.23.2 : 80              |

            

         |      10.10.10.5 : 1555      |   211.221.221.203 : 1555    |       152.30.12.1 : 80     |    152.30.12.1 : 80             |     

    -------------------------------------------------------------------------------


          =>  Inside Global IP Address가  211.221.221.203로 동일하지만 뒤에 따라오는 포트번호가 1331, 1555로 각각 다르다.

                때문에 각 포트 번호로 내부 네트워크의 사설 IP를 각각 구분해서 정상적으로 외부 네트워크와 통신을 할 수 있다.


              - Inside Local IP Address : port   => 내부 네트워크의 IP address와 포트 번호

              - Inside Global IP Address : port  => 외부로 나갈때 변환되어질 IP address와 포트 번호

              - Outside Local IP Address : port  => 외부 호스트의 IP address와 포트 번호

              - Outside Global IP Address : port => 외부 네트워크의 한 호스트에 할당되는 IP address와 포트 번호               

            

--------------------------------------------------------------------------------------


 - 내부 호스트의 경계(border)게이트 웨이 라우터가 NAT 기능을 수행한다.


--------------------------------------------------------------------------------------

  <Static NAT 설정>


    Router(config)#ip nat inside source static <local-ip> <global-ip>          // inside Local IP주소와  Inside Global IP주소간에 일대일 매핑


  * 내부인터페이스 지정


    Router(config)#interface <type-number>

    Router(config-if)#ip nat inside                                            // NAT 내부 인터페이스로 지정


  * 외부 인터페이스 지정


    Router(config)#interface <type-number>

    Router(config-if)#ip nat outside                                           // NAT 외부 인터페이스로 지정



 ex> 



--------------------------------------------------------------------------------------

 <Dynamic NAT 설정>



   Router(config)#ip nat pool <name> <start ip address> <end ip address> netmask <subnet mask>    // 공인 IP 그룹을 생성한다.

   Router(config)#access-list <list-number> permit <inside local address> <wildcard mask>         // 사설 IP 그룹을 생성한다.

   Router(config)#ip nat inside source list <list-number> pool <name>                  // 공인 IP그룹과 사설IP 그룹 매핑

                                                                                         (위에서 설정한 ACL 리스트 넘버와 NAT name 적용)

   Router(config)# interface<type-number>

   Router(config-if)# ip nat inside                                                    // NAT 내부 인터페이스로 지정


   Router(config)#interface <type-number>

   Router(config-if)#ip nat outside                                                    // NAT 외부 인터페이스로 지정



 ex >    Router(config)#ip nat pool NAT_TEST 211.100.1.2 211.100.1.253 netmask 255.255.255.0  // 1

         Router(config)#access-list 10 permit 192.168.0.1 0.0.0.255                           // 2

         Router(config)#ip nat inside source list 1 pool NAT_TEST                             // 3

         

         Router(config)#interface fastethernet 0/0      

         Router(config-if)#ip address 192.168.0.1 255.255.255.0                                                               

         Router(config-if)#ip nat inside                                                       

 

         Router(config)#interface serial 0/1

         Router(config-if)#ip address 211.100.1.1 255.255.255.0                       // pool에 포함되지 않는 IP를 설정 

         Router(config-if)#ip nat outside        


       => 1 : 외부로 나갈때 사용되는 Inside Global IP 주소의 pool. 사용할 첫 주소와 마지막 주소와 서브넷마스크 

          2 : inside local IP 주소로 사용될 영역을 ACL로 지정한다. 

          3 : indide로 지정한 인터페이스에서 오는 패킷의 source address(출발지 주소)가 ACL 1에 정의된 source address에 

              해당하면 지정한 pool에 있는 주소로 변환해주겠다는 의미. 

              또한 outside로 지정한 인터페이스에서 들어오는 패킷의 destination address(목적지 주소)가 pool에 속한 주소면

              다시 inside local address(즉, 사설주소)로 변환해주겠다는 것을 의미 

         

--------------------------------------------------------------------------------------

 <PAT 설정>



   Router(config)#ip nat pool <name> <start ip address> <end ip address> netmask <subnet mask>    

   Router(config)#access-list <list-number> permit <inside loca addressl> <wildcard mask>         

   Router(config)#ip nat inside source list <list-number> pool <name> overload              // Dynamic NAT와 차이점은 뒤에 overload

                                                                                               명령어를 사용한다는 점이다.                                                                                                

   Router(config)# interface<type-number>

   Router(config-if)#ip nat inside                                                                


   Router(config)#interface <type-number>

   Router(config-if)#ip nat outside                                                              


=======================================================================================


  * 확인은 'debug ip nat'로 디버깅해서 주소가 변환되는 것을 확인해본다.


  * 내부에서 외부와 통신을 해본 다음 'show ip nat translations'명령어로 NAT 테이블 내용을 확인해본다.

     ('clear ip nat translations *'로 NAT 테이블을 갱신할 수 있다.)


  * 'show ip nat statistics' 명령어로 주소 변환 통계를 표시 


======================================================================================




반응형

'공부' 카테고리의 다른 글

NAT와 PAT 예제 풀이  (0) 2015.06.22
NAT방식과 PAT방식 예제  (0) 2015.06.21
OSPF의 개요및 장점 세팅까지  (0) 2015.06.20
패킷트레이서를 이용해서 dscp 실습  (0) 2015.06.20
리눅스 네임서버 구축  (0) 2015.01.11
Comments