나의 공부기록

05. 슈퍼넷팅 & VLSM & 사설네트워크 & NAT 본문

CS/네트워크

05. 슈퍼넷팅 & VLSM & 사설네트워크 & NAT

나의 개발자 2025. 1. 4. 21:37

슈퍼넷팅(Supernetting) ( ↔️ 서브넷팅)

  • 나눠져 있는 서브넷을 합치는 개념
  • 사용 이유
    • 10.10.32.0/24인 서브넷과 10.10.33.0/24인 서브넷 = 10.10.32.0/23 서브넷임을 함축적으로 표현 가능

 

지금까지는 서브넷을 균일한 크기로 나누는 서브넷을 했지만, 각 네트워크의 규모가 다르게 서브넷을 하는 방법을 알아보자. 서브넷을 파악하기 위해서는 서브넷 마스크를 필요로 한다. 이때, 서브넷 마스크의 크기가 균일하지 않은 서브넷 마스크를 VLSM이라고 한다.

 

VLSM(Variable Length Subnet Mask)

  • 비균등 서브넷팅
    ➡️ 균일하지 않은 길이의 서브넷 마스크

 

[ VLSM으로 서브넷 나누는 방법 ]

서브넷을 VLSM하는 방법

  1. 각 네트워크들을 '규모' 순으로 정렬
    • '규모'순으로 서브넷❌
      ➡️ 서브넷 마스크에 의해 고정되는 2진수의 자리가 같지 않은 호스트가 같은 서브넷에 포함
      ➡️ 2진수 법칙 위배
  2. 큰 순서대로 서브넷 구하기
    • 각 서브넷 마스크가 다름을 알 수 있음
      ➡️ A: /25, B : /26, C : /27

✅ '규모'순으로 정렬한 후, 서브넷팅 해야 하는 이유

  • 2진수의 법칙 위배
    = 모든 서브넷과 그 서브넷이 속한 IP들은 항상 앞에 고정된 비트(prefix)가 동일해야 하는데, 그러지 않은 경우가 발생하기 때문에
    ➡️ '규모'순으로 정렬한 후, 서브넷팅 해야 함

 

사설 네트워크(Private Network)

  • 사설 IP를 사용하는 '내부' 네트워크
  • IP의 부족으로 인해 생긴 개념 
    ➡️전세계에 무수히 많은 사설 네트워크가 존재
    ➡️IPTime 공유기의 Default 192.168.0.0/24
  • AWS에서는 VPN이라는 용어로 사용됨
  • 사설 네트워크(내부)와 공용 네트워크(외부)는 항상 '경계'가 존재하며, 이 '경계'에서 항상 NAT가 발생

 

NAT(Network Address Translation)

NAT 발생 과정

  • IP의 변화 = NAT
    = 일반적으로는 '내부↔️외부'의 경우 가장 많이 사용됨
    예) 1.1.1.1 ➡️ 1.1.1.2
  • 네트워크 = 집, NAT =현관문 ➡️ 내/외부 분리
    • 특별한 케이스를 제외하고는 외부에서 내부를 바로 찾아갈 수 없음
    • 접근 제한 ➡️ 보안⬆️

 

NAT의 종류

PAT&DNAT

  • PAT(Port NAT, 내부➡️외부) : Source(출발지) ➡️ Dynamic(동적) 변환
  • DNAT(Destination NAT, 외부➡️내부) : Destination(목적지) ➡️ Static(정적) 연결

Port(4 계층, NIC의 포트❌ = Router의 인터페이스❌)

  • IP에서 확장된 개념(192.168.0.100:80 ➡️ 192.168.0.100 호스트의 80번 포트)
  • 16비트 ➡️ 2^16 : 0 ~ 65,535 개
    • 포트가 많은 이유
      • 여러 개의 서비스를 제공하기 위해
      • 특정한 포트를 찾기 어려워서 보안에 도움
    • Well-Known Port
      • 0 ~ 1023까지 Well-Known Port
Port Num(포트 번호) 용도
0  
...  
20, 21 ftp
23 telnet
53 dns
67, 68 dhcp
80 http
...  
1023

 


 

PAT(Port NAT) 설정

  • 내부 IP외부 IP로 변환하는 과정

1. Source(출발지) 정의(ACL - Access Control List)

Router(config)# access-list 1 permit <대표주소> <Wildcard Mask>
= Router(config)# access-list 1 per <대표주소> <Wildcard Mask>

Router(config)# access-list 1 permit 192.168.1.0   0.0.0.255
➡️출발지 : 192.168.1.0/24
➡️access-list에 192.168.1.0/24인 서브넷을 허용
  • IP주소 기반 접근 제어
  • 대상을 정의하고 규정하는 데 사용

2. 내/외부 구분

Router(config)# int <인터페이스 포트>
Rotuer(config-if)# ip nat inside/outside

Router(config)# int f0/0
Router(config-if)# ip nat inside
Router(config)# int f0/1
Router(config-if)# ip nat outside
➡️ inside/outside 중 하나라도 설정하지 않으면, 통신 안됨

 

3. NAT 명령어 입력

Router(config-if)# ip nat inside source list <access-list 번호> <인터페이스 포트> overload
➡️PAT(하나의 IP에 존재하는 포트에 다수의 출발지 사설 IP들을 매칭)

Router(config-if)# ip nat inside source list 1 int f0/1 overload
➡️192.168.1.0/24의 내부 사설 출발지 주소들을 f0/1에 설정된 공인 IP로 변환

 


 

✅ ping을 쳤을 때, NAT가 발생한 목록 확인 명령어

Router(config)# do sh ip nat tran
➡️ ping 명령어를 실행한 후에, 1분 이내에 실행해보면 NAT가 발생 여부를 확인 가능
➡️ 목록에 없으면, NAT 설정❌

 

do sh ip nat tran 실행 화면

  • ping을 보낼때, ARP를 제외하고 4번 NAT가 발생한 것을 확인 가능
  • Inside = 나 / Outside = 상대 / Global = 공인 / Local = 사설
    ➡️ Inside global : 외부의 출발지 IP / Inside local : 내부의 출발지 IP / Outside local : 내부의 목적지 IP / Outside global : 외부의 목적지 IP

 

❗️ 주의사항

  • PAT를 설정하고 DNAT를 설정하지 않으면 당연히 접속❌
    ➡️ 다른 사설 네트워크의 내부로 진입하는 것 자체가 성립❌
  • 검색할 때, Port를 따로 지정해주지 않았는데, 어떻게 내부 IP를 찾아가는가?
    ➡️ TCP에는 Well-Known Port가 존재하는데, http - 80을 나타냄
    ➡️ http://1.1.1.200 = 1.1.1.200:80
    ➡️ Port를 따로 지정해 줬다면, Port도 입력해야 함

 

DNAT(Destination NAT) 설정

1.  내/외부 명시

Router(config)# <인터페이스 포트>
Router(config-if)# ip nat inside/outside

Router(config)# int f0/0
Router(config-if)# ip nat inside
Router(config)# int f0/1
Router(config-if)# ip nat outside

 

2. DNAT 설정

Router(config-if)# ip nat inside source static tcp <내부 IP> <내부 Port> <외부 IP> <외부 Port>

Router(config-if)# ip nat inside source static tcp 172.168.101.80 80 1.1.1.200 80
➡️ TCP/UDP 통신 방법 설정
➡️ 외부에서 1.1.1.200:80로 접근하면 내부의 172.168.101.80:80으로 연결