NAT(Network Address Translation)
- IPv4(2의 32 제곱, 약 43억개)의 개수로는 부족함을 느낌
- 공인IP와 사설IP의 개념이 나뉨
- 공인 IP : 유료, 큰 그룹이나 기업
- A Class : 0.x.x..x ~ 127.x.x.x
- B Class : 128.x.x.x ~ 191.x.x.x
- C Class : 192.x.x.x ~ 223.x.x.x
- => D, E는 멀티캐스트용, 미래 연구용
- 사설 IP : 무료, 개인이나 작은 기업
- 10.x.x.x/8
- 172.16.x.x/16 ~ 172.31.x.x/12
- 192.168.x.x/24 ~ 192.168.x.x/16
- => IP 유일성 규칙에 위배, 사설 IP로는 공용망에 접근을 제한하는 방법(폐쇄된 내부망에서만 사용하도록)을 제안함
- 사설 IP를 사용하면서 공용망에 접속해 인터넷을 이용할 수 있는 방법으로 NAT가 고안됨
- L3 계층의 IP를 변환(사설IP->공인IP / 공인IP->사설IP), 내부IP->외부IP / 외부IP->내부IP의 개념으로 봐도 됨
- 내부망에서도 여러 대의 NAT 장비를 두고 공용망에 접근하도록 설계할 수도 있음
- ACL 같은 방법으로 사설 IP 범위는 공용망 접근에 deny 함
L1의 물리적인 연결이 없어도 가상회선을 맺어 1대1 통신하는 것처럼 함
가상회선을 맺기 위해 IP(3계층, Network Layer) 위에 단 계층의 TCP(4계층) 연결이 필요
TCP
- 출발지 Port번호(랜덤하게 생성), 목적지 Port번호(http:80, https:443)를 통해 연결을 맺음(TCP Connection)
- 3-way handshake
- 송신지의 사설IP의 개수와 부여 받은 공인 IP의 개수가 동일하면 상관은 없지만, 의미가 없음
- S1 : 10.0.0.1 -> 14.0.0.1
- S2 : 10.0.0.2 -> 14.0.0.2
- S3 : 10..0.0.3 -> 14.0.0.3
- -> 불가능
- IP 주소 외에 포트번호를 추가해 각 수신지를 구분함
- S1 : 10.0.0.1:5555 -> 14.0.0.1:5555
- S2 : 10.0.0.2:5555 -> 14.0.0.1:5556
- S3 : 10.0.0.3:5555 -> 14.0.0.1:5557
- -> IP만으로는 구별이 안되기 때문에 IP와 Port번호를 같이 사용해 구별함
- -> NAT 장비에서 이 변환 정보를 알고 있어야 함(State Ful, 상태 정보를 항상 기억하고 있어야 함)
- State less : 상태 정보 없음 / State Ful : 상태 정보를 가지고 있음
ex)
State Ful : 내부에서 요청한 정보를 들여 받음(NAT)
State Less : 내부에서 요청하지 않은 정보를 받음(ACL)
-> 내가 요청한 정보를 받는 것은 내가 요청했으니 신뢰할 수 있고, 내가 요청하지도 않은 정보를 받는 것은 신뢰하기 힘듦
* 내부망(Inside), 외부망(Outside)의 개념 파악이 중요함
NAT(Netwokr Address Translation)
1. 한 개의 공인 IP - 여러 개의 사설 IP
Port 변환의 과정도 필요(출발지에서의 포트(랜덤)와 서비스 별 도착지 포트(http:80)가 다름)
-> NAT-PAT(Port Address Translation)
-> 1대1 대응을 NAT, n대n(ex. 254개의 공인ip - 60,000개의 사설ip)을 NAT-PAT
* 공인 IP 하나만 부여 받고 NAT 사용하는 경우는 가정집 같은 경우처럼 작은 규모(드문 경우),
보통 기업에서는 전용망 대역(여러 개의 공인ip)을 부여 받고 여러 개의 사설 IP로 변경하는 경우가 많음(n:n)
-> 어차피 사설ip와 공인ip의 개수가 1대1은 매칭은 수가 안맞으니까 NAT-PAT 과정이 필요하기는 함
1) Dynamic NAT
- 사설 IP 범위 하나가 사용 중이지 않은 공인 IP Pool 하나를 자동으로 선택해 물고(Binding) 나가는 방법
- ex) 254 - 60,000 경우
- 60,000개의 사설ip가 동시에 인터넷 사용하지 않는 경우 dynamic으로 14.0.0.1 <-> 10.0.0.1처럼 대응시켜 사용하지 않으면 바로 반환, 다음 10.0.0.2가 다시 14.0.0.1 사용(이렇게 되면 255개 이상의 사설ip가 동시에 사용하지만 않으면 PAT 과정은 필요 없음)
2) Static NAT
- 사설 IP 범위를 지정하고 이에 맞는 공인 IP를 지정해서 나가는 방법
- 예약이 되어 버림, 예약된 주소들 외의 주소들 범위 안에서 dynamic으로 사용 가능
1. 공인 ip 범위 지정
2. 사설 ip 범위 지정 : ACL을 이용
3. 공인ip와 사설ip 매핑
ACL(Access Control List)
- 누구나 사용하는 사설ip 범위를 ACL로 누구는 허용, 누구는 거부(ACL) 지정을 하지 않으면 다른 누군가가 사용하던 사설 ip 대역으로 접속할 수도 있는 경우도 생김
- 사설 네트워크에서 지정한 네트워크대역만 NAT로 변환해 외부망으로 나갈 수 있도록 하기 위해(회사 내에 공유기 하나 가져가서 내 개인 기기들 연결하면 회사 내부 사설 ip를 막 쓰는 셈)
10.0.0.0 255.255.254.0 과 같은 형식(서브넷 마스크)을 사용하지 않고, 10.0.0.0 0.0.1.255 와 같은 형식(와일드카드 비트)을 사용함
-> 서브넷마스크는 연속된 비트로 계산이 2의 지수단으로 올라감(1, 2, 4, 8, 16…)
-> 2, 4, 6, 8 처럼 범위 지정은 불가
-> 와일드카드는 비트 단위로 나눠서 계산하니까
0000 0
0001 1
0010 2
0011 3
0100 4
맨 뒤의 비트가 짝수면 짝수 값, 홀수면 홀수 값
(짝수는 허용, 홀수는 거부)처럼 마지막 비트만 비교해 범위 지정이 가능
* Wildcard Bits
- 0 : 검사(check), 일치
- 1 : 비검사(non-check), 무시
- -> 비트 별로 검사하는지 안하는지 유무를 적어주는 것
- 0000 -> 해당 네 개의 비트를 검사해
- 0001 -> 세 개의 비트를 검사해, 마지막 비트는 검사하지마
- ex) network bits : 0000 1010
- wildcard bits : 1111 0101 -> ip가 1010(10)이니까 1의 비트 값만 검사하면 됨(w.b에서 1은 무시, 0만 검사)
- NAT 장비에서 10.0.0.0/23의 사설 네트워크면 23비트만 네트워크 비트니까 해당 네트워크인지 파악하기 위해 23개의 비트만 검사해서 맞으면 변환해서 나가라
- -> wildcard bits는 내가 어떤 식으로 검사할지를 정할 수 있는 것
- (ex. 짝수, 홀수로 구분 지을 거면 마지막 비트만 검사해서 0이면 짝수, 1이면 홀수 / 해당 네트워크 대역이 맞는지 확인할거면 서브넷 마스크의 네트워크 비트(1)만 검사시켜서 해당 네트워크 대역이 맞으면 통과)
ACL 작성 방법
access-list 10 permit(or deny) 10.0.0.0 0.0.1.255
서브넷마스크의 와일드카드 계산 공식
255.255.255.255
- 255.255.254.0
-------------------
0. 0. 1. 255
10.0.0.0
|
00001010.
|
00000000.
|
00000000.
|
00000000
|
0.0.1.255
|
00000000.
|
00000000.
|
00000001.
|
1111111
|
-> 와일드카드 비트의 0만 검사해서 해당 네트워크 대역인지 파악하고, 뒤의 호스트 비트는 누가 와도 상관 없다는 의미로 검사하지 마라(1)
* ACL의 permit/deny 판단 기준을 짝수/홀수로 구분 지으면 마지막 비트만 검사하면 됨(마지막 비트가 0이면 짝수, 마지막 비트가 1이면 홀수 : 이런 규칙성은 직접 찾아야 함)
- 255.255.255.254(11111111.11111111.11111111.11111110 : 마지막 비트 하나만 검사)
ACL 작성 방법
access-list 10 permit 10.0.0.0 255.255.255.254
|
-> 마지막 비트만 검사해서 10.0.0.0의 마지막 비트 0(짝수)이면 허용
|
ex)
10.0.0.0
|
마지막 비트만 검사해서 마지막 비트가 0(짝수) 허용
|
10.0.0.1
|
마지막 비트만 검사해서 마지막 비트가 1(홀수) 거부
|
-> 이렇게 허용된 대역의 범위를 NAT 구성 시 내부 네트워크의 사설 범위로 봄(ACL의 기능을 응용한 것)
* 학원 강의장은 공인 IP 사용으로 GNS3 구성하는 방법이 다름
- 외부망이 연결된 공용망 구간을 GNS3의 Cloud와 NAT 장비의 구성이 다름
- Cloud는 바로 외부 공용망으로 나갈 수 있게 하는 구름 모양의 장비
- NAT는 라우터의 NAT 설정만 빼와서 외부 공용망으로 나갈 수 있게 하는 구름 모양의 장비(VMware를 이용해 가상 랜카드 VMnet8을 만들고 GNS3에 연결해서 NAT 기능을 하도록 하는 것)
GNS3에서 구름 모양의 NAT 장비 이용해서 하자
구름 모양의 NAT 장비를 이용해서 하면 R1 라우터에 NAT 설정을 하지 않아도 구름 모양의 NAT 장비가 대신 NAT 변환해서 외부망으로 간 것, 그래서 R1에 NAT 설정을 하지 않아도 구글(8.8.8.8)로 통신이 됨
(vmware의 가상 NIC인 VMnet8을 이용해서)
VMnet8의 ip 대역인 192.168.108.0/24 중 .2를 VMnet8(NAT) 장비의 게이트웨이(외부망과 연결된)로 설정되어 있음
-> 라우터에 NAT 설정하고 외부망과 연결된 게이트웨이를 .2로 설정한 셈,
(구름 모양의 Cloud 장비와 다른 점은 NAT 기능만 있는 장비를 꺼내서 둔 느낌)
R1
-> 외부 8.8.8.8 대역을 모르니 라우팅 과정이 필요, 디폴트 라우팅으로 싸그리 묶어서 보냄
VMware의 가상 NIC인 GNS3의 NAT 장비(VMnet8)가 변환해줘서 외부망과 연결된 것, 아직 R1에서 NAT 설정은 안함
끝단 장비인 PC1과 PC2에서 R1의 라우터(디폴트 라우팅 한)를 통해 NAT 변환 후 외부망과 연결된 것
R1에서의 NAT 설정
(위 토폴로지에서는 R1에서 NAT 변환 한번, 구름 모양의 NAT 장비에서 한번 -> 두번 변환 후 외부로 나가는 것)
1) 공인ip와 사설ip가 1:n의 경우
인터페이스 자체에 NAT 설정을 함
허용시킬 acl 생성(내부 사설망이 되는 것)
R1에서 변환시켜준 것이 없다(R1의 NAT 테이블이 올라오지 않음)
이 설정이 빠져서 R1 NAT에서 변환이 안된 것
-> 인터페이스에 적용시키니까 안됨...또 왜ㅡㅡ
(공인ip 풀을 만들어서 해당 풀을 적용시킴)
ip nat pool net108 192.168.108.3 192.168.108.3 netmask 255.255.255.0
공인ip 풀을 만듦
허용시킨 acl 범위의 inside 범위를 nat 변환함(NAT-PAT으로)을 이용해
overload(NAT-PAT으로 하겠다)
2) 공인ip와 사설ip가 n:m의 경우/ 3) 공인ip와 사설ip가 n:m의 경우 + static
ip nat pool net108 192.168.108.3 192.168.108.254 netmask 255.255.255.0
같은 방식으로 공인ip 범위 풀을 지정(net108의 이름으로)
지금은 공인 ip개 여러 개(192.16.108.3~192.168.108.254)니까 overload 생략(NAT-PAT이 아닌 NAT)
내부 사설 네트워크(PC1)에서 10.0.0.2/24 -> 192.168.108.3/24로 변환됨
내부 사설 네트워크(PC2)에서 10.0.0.3/24 -> 192.168.108.4/24로 변환됨
-> 공인 ip가 n개 있으니 공인ip n개의 내에서는 1대1로 맵핑 시켜도 됨
(ex. 공인ip 254개, 사설ip 60,000개
- 사설ip 254개까지는 1대1로 맵핑되고, 맵핑된 사설ip들이 사용하지 않으면 다시 맵핑되었던 공인ip를 반환, 공인ip로 변환되어야 하는 다른 사설ip가 반환된 공인ip를 다시 할당
=> 사설ip 254개 이상이 동시에 공인ip를 모두 사용하지 않는 이상 254개 내에서 할당, 반환을 반복해 사용 가능,
254개 이상이면 NAT-PAT(overload 명령)이 필요함)
ip nat pool net108 192.168.108.100 192.168.108.254 netmask 255.255.255.0
-> 공인ip의 범위(풀)를 192.168.108.100/24 ~ 192.168.108.254/24의 범위로 지정하는데, 이 풀의 이름을 net108로 하겠다. (공인ip 풀 지정)
access-list 1 permit 10.0.0.0 0.0.0.255
-> 내부 사설ip 대역의 범위를 ACL을 통해 지정함
(ACL을 통과한 네트워크들은 해당 네트워크 대역이 맞으니 허용해 통과됨, ACL을 통과한 네트워크들을 사설 ip 범위로 사용하려고 ACL을 응용한 것)
ip nat source list 1 pool net108
-> 공인ip 풀을 지정한 이름 net108과 사설ip 범위를 의미한 acl 1번을 맵핑시킴
ip nat inside source static 10.0.0.2 192.168.108.12
-> 내부 쪽(inside)인 사설ip의 ip하나를 공인ip 하나로 고정적으로 변환시킴
(사설ip 10.0.0.2를 공인ip 192.168.108.12로만 변환되도록)
ip nat inside source static 10.0.0.3 192.168.108.13
-> 내부 쪽(inside)인 사설ip의 ip하나를 공인ip 하나로 고정적으로 변환시킴
(사설ip 10.0.0.3을 공인ip 192.168.108.13으로만 변환되도록)
1. 공인IP(한 개) --- 사설IP(여러 개) (=Dynamic NAT)
1) 공인 풀
2) 사설 범위(ACL)
3) 공인-사설 맵핑(overload)
* inside, outside 인터페이스 결정
(ip는 모두 들어가 있고 NAT 관련 설정이 아예 없다는 전제)
conf t
int fa 0/0
ip nat outside
int fa 0/1
ip nat inside
exit
ip nat pool net108 192.168.108.3 192.168.108.3 netmask 255.255.255.0
access-list 1 permit 10.0.0.0 0.0.0.255
ip nat source list 1 pool net108 overload
2. 공인IP(여러 개) --- 사설IP(여러 개) (=Dynamic NAT)
1) 공인 풀(192.168.108.1 192.168.108.100 netmask 255.255.255.0)
2) 사설 범위(ACL)
3) 공안-사설 맵핑
* inside, outside 인터페이스 결정
(ip는 모두 들어가 있고 NAT 관련 설정이 아예 없다는 전제)
conf t
int fa 0/0
ip nat outside
int fa 0/1
ip nat inside
exit
ip nat pool net108 192.168.108.3 192.168.108.254 netmask 255.255.255.0
access-list 1 permit 10.0.0.0 0.0.0.255
ip nat source list 1 pool net108
3. 공인IP(여러 개) --- 사설IP(여러 개) + static (=Dynamic NAT+Static)
1) 공인 풀
2) 사설 범위
3) 공인-사설 맵핑
4) ip nat source [사설IP] [공인IP]
* inside, outside 인터페이스 결정
(ip는 모두 들어가 있고 NAT 관련 설정이 아예 없다는 전제)
conf t
int fa 0/0
ip nat outside
int fa 0/1
ip nat inside
exit
ip nat pool net108 192.168.108.100 192.168.108.254 netmask 255.255.255.0
access-list 1 permit 10.0.0.0 0.0.0.255
ip nat source list 1 pool net108
ip nat inside source static 10.0.0.2 192.168.108.2
ip nat inside source static 10.0.0.3 192.168.108.3
-> 10.0.0.2는 192.168.108.2로만 변환, 10.0.0.3은 192.168.108.3으로만, 나머지 사설ip들은 192.168.108.100~192.168.108.254 범위 안에서 dynamic으로 변환
* 클라우드에서는 NAT와 동일한 개념으로 NAT Gateway라고 부름
(프라이빗 클라우드에서 외부로 나가려면 NAT Gateway 필요, 공용망에 접속을 위해 NAT 변환 필요)
'On-Premise > Network' 카테고리의 다른 글
L3 Switching, VLAN (0) | 2024.01.02 |
---|---|
ACL (0) | 2024.01.02 |
Default Routing (2) | 2024.01.01 |
Routing 개념, 라우터 초기 보안 설정, Static Routing (1) | 2024.01.01 |
GNS3 2.2.43 설치, 각 장비 별 ip 부여 실습 (0) | 2024.01.01 |
개인 공부 목적으로 사용하는 블로그입니다 :)
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!