[네트워크] Network Address Translation (NAT)

hugingstar·2025년 12월 2일

Network

목록 보기
19/21
post-thumbnail

1. NAT 개념

  • NAT는 사설 IP를 공인IP로 변경하는 것을 의미한다.
  • 구체적으로는 사설 네트워크(Private Network)에 속한 여러 개의 호스트가 일대일, 다대일 방식으로 공인 IP 주소에 매핑하여 인터넷에 접속한다.
  • IPv4 주소를 그대로 공개된다면 무분별하게 많은 IP가 낭비되기 때문에 공개하고자 하는 IP를 관리함으로써 원활한 통신이 가능하게 한다.
    (사설망 IP를 알려주지 않는한 외부사람은 이 공인 IP만 본다. 하나의 공인IP 안에는 여러개의 사설망 IP가 물려있을 수 있다.)

1-1. 종류

  • Static NAT (사설 IP : 공인 IP = 1 : 1)

    • 단점 : 일대일 매핑하기 때문에 공인IP가 많이 필요하다.

  • Dynamic NAT (사설 IP : 공인 IP = n : m)

    • 장점 : Static에 비해 공인 IP 수가 줄어든다.

    • 단점 : 공인IP m개를 모두 사용하면 다른 사설 IP는 통신이 불가능하다.

  • NAT-PAT(Port Address Translation) (사설 IP : 공인 IP = n : 1)

    • 장점 : 공인 IP 1개를 사용하나 Port 번호로 구분하기 때문에 다수의 사설 IP가 사용 가능하다.

    • 단점 : 같은 공인 IP를 사용하기 때문에 여러면이 같은 서버에 접속할 경우 차단 가능성이 있다.

    • NAT-PAT로 신호가 나갔다가, 다시 돌아올 때는 포트가 붙어야지만 누구한테 돌려줘야하는지를 알 수가 있다. 자동으로 할당되도록 실습이 아래에 이어진다.

1-2. S(Source)-NAT와 D(Destination)-NAT

  • Static NAT는 양방향 NAT로서, S-NAT, D-NAT 모두에 함께 사용할 수 있다.
  • S-NAT : 출발지의 IP주소를 사설IP에서 공인 IP로 변경
  • D-NAT : 공인 IP망에서 사설IP망에 있는 서버(컴퓨터)에 접근할 때

2. Static NAT 연습

  • 양방향 NAT

  • 아래의 그림처럼 네트워크를 구성한다. 192.168.53.0/24는 사설망이고, 10.200.0.0./8은 공인IP라고 가정하고 NAT를 연습한다.

  • 라우터를 기준으로 먼저 사설망에 있는 PC에 IP를 할당한다.(시뮬레이션 툴에서 처음 컴퓨터를 켜면 IP가 할당안되어 있음.) IP주소와 게이트웨이 둘 다 넣어야 한다.

ip (사설망 IP 주소) (서브넷마스크) (게이트웨이)
ip 192.168.53.2 255.255.255.0 192.168.53.1

  • 라우팅 하는 방법 그대로 라우터에서 인터페이스별로 ip주소를 할당한 후에 shutdown을 해제한다. 인접한 부분의 게이트웨이, 통로주소를 쓴다.

int f0/0
ip address 192.168.53.1 255.255.255.0
no shutdown

int f0/1
ip address 10.200.0.17 255.0.0.0
no shutdown

  • 라우터를 기준으로 사설망 부분이 inside, 공인 IP 부분이 outside로 구분한다. 각각 인터페이스별로 선언해준다.

int f0/0
ip nat inside

int f0/1
ip nat outside

  • Static NAT : Static NAT는 직접 내부 IP와 외부 IP를 연결해주는 것이다. 라우터에서 인터페이스를 연결할 때는 게이트웨이 주소를 사용하지만, NAT는 게이트웨이가 아닌 사설망 IP 주소와 외부망의 IP 주소를 입력해야 한다.
  • 예시 : config 모드에서 사설망PC(192.168.53.2)를 공인 IP (10.200.0.17)으로 설정하여라. 아래의 테스트는 inside 입장에서 나가는 통로에 대한 NAT를 한 것이다. 이것을 S-NAT(Source-NAT)라고 한다. Static NAT는 아래의 그림처럼 선언하는 절차를 말하는 것이다. (라우팅 하는 것과 비슷하지만 어떤 값을 입력으로 사용하는지 자세히 봐야한다.)

출발지의 ip address가 변경된 Source NAT (안에서 밖으로만 나갈때)
Router(config)# ip nat inside source static 192.168.53.2 10.200.0.17

  • Ping test : 사설망 컴퓨터 (192.168.53.2)에서 ping을 라우터로 보내면, 라우터에서 클라우드로 넘어갈 때는 공인IP (10.200.0.17)로 변경되서 보인다. Wire shark 부분을 보면 Source에 공인 IP(10.200.0.17)가 나오는 것을 볼 수 있다.

  • S-NAT 특징 : 외부에서 10.200.0.17로 신호를 보내더라도, 응답이 오지 않는 것을 볼 수 있다. 외부로 들어올 때 어떤 곳으로 보내줘야하는지 정확히 알 수 없다.

  • Static nat의 작업 순서
# inside/outside 지정
R1(config)# interface f0/0
R1(config-if)# ip nat inside
R1(config)# interface f0/1
R1(config-if)# ip nat outside

# nat 설정
# 출발지의 ip address가 변경된 Source NAT
R1(config)# ip nat inside source static 192.168.53.2 10.200.0.17

3. Dynamic NAT 연습

  • 단방향 NAT (S-NAT)

  • Dynamic NAT 역시 inside와 outside nat를 설정하는 것까지는 동일하다.
  • 차이점으로는 nat pool이라는 것을 선언한다.
  • ACL은 허용되는 데트워크 주소와 와일드 마스크를 사용한다.
  • ACL을 Dynamic pool에 적용한다.
# inside/outside 지정
R1(config)# interface f0/0
R1(config-if)# ip nat inside
R1(config)# interface f0/1
R1(config-if)# ip nat outside

# 라우터에서 acl 생성 : 공인 IP 주소로 변환되어야 할, 사설 IP 주소들의 범위를 지정한다. 단, Access-list는 Netmask가 아닌 Wild mask로 설정하여야 한다.
access-list [리스트 번호] permit [대상 네트워크 주소] [와일드 마스크]
access-list 1 permit 192.168.53.0 0.0.0.255

# 라우터에서 dynamic nat pool 생성 : 다중 공인 IP를 사용하므로, 해당 주소들을 담을 pool을 설정한다.
ip nat pool [pool 이름] [첫 공인 IP 주소] [마지마 공인 IP 주소] netmask [서브넷마스크]
ip nat pool kedu 10.200.0.17 10.200.1.17 netmask 255.0.0.0

# 라우터에서 dynamic nat pool에 acl 적용
ip nat inside source list [리스트 번호] pool [pool 이름]
ip nat inside source list 1 pool kedu
  • Dynamic pool과 Access-list를 만든다.

  • Access list를 Dynamic pool에 적용한다.

  • 자동으로 할당된 것이 보인다. 사설망 게이트웨이인 10.0.0.1로 ping을 테스트해보면 10.200.1.17로 연결된 것을 볼 수있다.

4. NAT-PAT 연습

  • 단방향 - SNAT
  • 공인 IP 1개에 여러 사설 IP를 사용한다.
  • 공인 IP를 사용할 때 Interface(Outside)에 할당된 IP를 사용한다.
  • 망의 구조는 동일하다. 적용하는 NAT 방법이 다르다.
# inside/outside 지정
R1(config)# interface f0/0
R1(config-if)# ip nat inside
R1(config)# interface f0/1
R1(config-if)# ip nat outside

# acl 생성 : Access-list를 먼저 설정한다. 역시 내부 사설망의 네트워크 주소와 와일드마스크가 필요하다.
R1(config)# access-list 1 permit 192.168.53.0 0.0.0.255

# PAT 설정
# outside에 있는 Interface 주소로 변환(overload)
R1(config)# ip nat inside source list 1 interface fa0/1 overload

  • NAT-PAT 같은 경우에는 Inside local에 있는 것들을 Inside global 1개로 관리하도록 하기 위해 overload 옵션을 넣는다.

ip nat inside source list 1 interface fa0/1 overload

  • Inside global은 10.200.0.17로 하나인데 Inside local은 192.168.53.2, 192.158.53.3으로 2개를 사용한다.

5. VPC에서 외부로 통신

  • NAT 설정이 필수이다.
  • Router에서 공유기(Gateway)로 Defualt route 설정한다.
  • 디폴트 라우팅을 하면 외부와도 연결된다.
  • 10.0.0.1은 사설망의 게이트웨이이다.

Router(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.1

  • 구글에서 운영중인 퍼블릭DNS에 접속해본다.

PC2> ping 8.8.8.8

0개의 댓글