주제: NAT/NAPT와 AWS 이야기 - ZIGI 님 (zigispace.net 운영)
지원: Devocean SK의 기술블로그 사이트
devocean에 대한 설명
활발한 블로그 운영 중 - 하루에 게시물 2개 이상
목표 - Network에 대한 포괄적인 지식
공인 IP와 사설 IP
public ip - 상호간의 통신을 위해 필요한 식별자. 각 주소는 유일한 값을 가져야함.
private ip - 내부 네트워크에서 통신하기 위해 사용되는 식별자. 내부에서는 유일하지만 서로 다른 네트워크 간 중복 사용 가능.
-> IP 설계의 관건: 모든 네트워크는 IP가 중복되지 않도록 설계
ex) VPC에 공인 IP를 사설 IP처럼 사용할 경우, 해당 IP를 가진 서비스와 통신이 안됨.
NAT/NAPT(PAT)란?
NAT - IP 주소를 다른 주소로 변환해 원활한 라우팅이 가능하게 해주는 기술
NAPT- 1:1 IP 주소 변환이 아닌 여러 개의 IP 주소를 포트 번호로 구분하여 IP로 변환. 주로 PAT라고 부름. N:M, N:1
사용 이유:
- IP고갈:
- 보안 강화: 내부 IP를 외부에 숨김. 내부로 직접적인 접근 차단
- IP 주소가 동일한 네트워크 간의 통신
NAT 동작 방식:
- 연결 형태: 사용자 -> NAT 장비 -> 웹 서버
- 이때 사용자와 WEB간의 통신에서 IP 테이블이 필요.(송신, 수신시 상대의 IP주소 필요)
- NAT 장비(라우터)에서 테이블 생성해서 가지고 있다가 테이블 내용에 따라 일치하는 IP로 정보를 전달
PAT 동작 시의 인바운드, 아웃바운드 통신
- 아웃바운드: 참조 가능
- 인바운드: NAT 테이블 참조 불가
Source NAT: 출발지 IP 변경 NAT
- 사내 IP를 공인 IP 변경시 필요()
Destination NAT: 목적지 IP 변경 NAT
- 서비스 IP를 서버의 실제 IP로 변경
- ex 1: 사용자 -> 대외사로의 연결
- ex 2: 로드밸런서 사용
public subnet과 priavte subnet에서의 NAT
- pub subnet: IGW를 통해 외부 Internet와 연결 가능
- private subnet: IGW에 있는 NAT을 통해 외부 인터넷과 연결 가능.
- NAT GW에 붙어있는 EIP <-> IGW의 EIP
- 즉, 사설 IP - 사설 IP의 변환이므로 PAT
- 따라서 내부에서 외부로의 응답은 가능하지만 외부에서 private subnet으로의 접속은 불가능
Load Balabncer의 NAT
- ALB: NAT과 비슷한 기능 수행. ..> ?
- NLB: DNAT+SNAT 동시에 수행. ..> ?
Private NAT GW
- 온프레미스 (with 방화벽) -> VPC
- 내부 보안 정책에 의해 고정 IP를 사용해야 하는 경우가 있음.
- 이때, NAT을 이용해 다른 사설 IP를 방화벽에 포함된 사설 IP로 변환해서 온프라미스와 통신
- N:1 변환
Load Balancer의 NAT을 이용한 중복 IP 대역간의 통신
- 온프라미스(10.0.0.0/24) - VPC1(10.10.0.0/24) - VPC2(10.0.0.0/24) 통신
- VPC2와 온프라미스의 통신을 원하는 경우, NLB는 DNAT과 SNAT이 모두 가능하기 때문에 통신 가능.
발표중 질문 - NAT 사용시 추가 비용이 발생하지 않는가?
- VPC간의 통신시 피어링 연결을 하면 추가 트래픽 비용이 발생X
- 즉, AZ를 넘어가면 비용이 발생하지만, Transit GW로 묶어서 peering 연결을 사용하면 트래픽 비용 절감 가능. transit GW 비용만 발생.
Private Subnet에서 특정 인터넷 접속 불가 => NAT GW의 포트 고갈
- 소스포트 변환을 하다보면 포트가 고갈될 수 있음
- AWS에서 여러 IP를 추가해 대상에 연결 가능한 포트 수를 늘림
- ㅁ
NLB의 동작:
- NLB는 DSR로 동작하는가?
- DSR 처럼 동작한다.
- DSR는 L3(사용자) -> 로드밸런서 -> 서버 , 서버 -> 사용자 의 통신 구조를 가짐.
- NLB는 IP를 타겟했을 때만 . 루프백 IP를 받은적이 없음.
- DSR처럼 동작하지만, DSR은 아님
- 그럼 NLB는 어떻게 동작하는가?
NLB는 VPC, 리소스 ID, ENI IP, ENI MAC, Host IP 정보를 포함한 mapping 서비스 사용.
- 물리 host1와 host2 사이에서 HyperPlane가 껴서 도착 IP를 변경함. 하지만 사용자 입장에서는 인식할 수 없기 떄문에 DSR 처럼 동작하는 것으로 보임.