IP 및 DNS 기초
IP (Internet Protocol)
인터넷에 연결된 장치를 식별하는 고유 주소
- 공인 IP: 인터넷에서 사용하는 주소
- 사설 IP: 내부 네트워크에서 사용하는 주소
- 고정 IP: 변하지 않는 주소
- 유동 IP: 바뀔 수 있는 주소
DNS (Domain Name System)
도메인 이름과 IP 주소를 서로 변환해주는 분산형 데이터베이스
- 도메인 → IP 변환: Forward DNS
- IP → 도메인 변환: Reverse DNS
- 계층 구조: Root DNS → TLD DNS → Authoritative DNS 순으로 질의
DNS는 하나의 서버가 모든 정보를 가지는 구조가 아니라, 각 서버가 일부 정보를 나누어 가지는 분산 구조
- DNS 레코드 타입:
- A: 도메인을 IPv4 주소에 매핑.
- CNAME: 도메인을 다른 도메인에 매핑.
- NS: 도메인 관리 권한이 있는 네임 서버 지정.
- Alias: Route 53 전용, 도메인을 AWS 리소스에 직접 연결.
네트워크 통신 흐름
- DHCP(Dynamic Host Configuration Protocol) - 내 컴퓨터에 IP 주소를 자동으로 할당해주는 과정
- ARP(Address Resolution Protocol) - IP 주소를 물리적 주소(MAC 주소)로 변환하는 과정
- DNS
- TCP(Transmission Control Protocol) - 데이터를 안전하게 주고받기 위해 연결하는 과정
- HTTP/HTTPS
전화기를 설치하고(DHCP), 상대방의 주소를 알아내고(ARP/DNS), 연결 라인을 확보한 뒤(TCP), 대화를 나누는(HTTP) 과정,,
Route 53
AWS에서 제공하는 DNS 서비스
단순히 도메인과 IP를 연결하는 것만이 아니라, 트래픽을 어떤 대상으로 보낼지 결정하는 기능도 함께 제공
- 역할: DNS + 헬스체크 + 장애 조치(Failover) + 라우팅 정책(GSLB)
- 주요 라우팅 정책:
- 단순: 표준 DNS 기능.
- 가중치 기반: 설정한 비율로 트래픽 분산
- 지리적 위치/근접: 사용자 또는 리소스 위치 기반 라우팅
- 지연 시간: 응답 속도가 가장 빠른 리전으로 연결
- 장애 조치: 대상이 정상일 때만 트래픽 전송
- 다중 응답: 무작위로 여러 레코드 응답
로드 밸런서와 비슷해 보일 수 있지만 완전히 같지는 않음
- 로드 밸런서: 들어온 트래픽을 여러 서버에 분산
- Route 53: DNS 단계에서 어느 대상으로 보낼지 결정
DNS 레코드
DNS 서버가 요청에 어떻게 응답할지 정의한 정보
기본 형식 : RR(Name, Value, Type, TTL)
주요 레코드
-
A 레코드
도메인 이름을 IPv4 주소에 매핑
-
CNAME
하나의 도메인 이름을 다른 도메인 이름에 매핑
-
NS
해당 도메인을 관리하는 네임서버 정보
-
Alias
Route 53 전용 특수 레코드
AWS 리소스와 도메인을 연결할 때 사용
-
TTL: DNS 응답을 캐시에 얼마나 오래 저장할지 정하는 값
-
테스트 시: 짧게 설정 / 운영 시: 보통 300초 이상 권장
Route 53 라우팅 정책
- 단순 라우팅 -> 기본 DNS 응답 방식
- 가중치 기반 라우팅 -> 트래픽 비율 다르게 가능 [ 예) A 서버 80% / B 서버 20% ]
- 지리적 위치 기반 라우팅 -> 사용자 위치 기준으로 다른 대상으로 연결
- 지리적 근접 라우팅 -> 리소스 위치 기준으로 가까운 곳에 연결
- 지연 시간 기반 라우팅 -> 지연 시간이 가장 낮은 리전으로 연결
- 장애 조치 라우팅 -> 정상인 대상에만 연결 / 헬스 체크와 함께 사용
- 다중 응답 라우팅 -> 여러 레코드 중 일부를 무작위로 응답
호스팅 영역
DNS 레코드들을 저장해 두는 공간 -> 특정 도메인에 대해 어떤 레코드를 둘지 관리하는 장소
- Public Hosted Zone: 인터넷에서 접근 가능
- Private Hosted Zone: 같은 VPC 내부에서만 접근 가능
VPC (Virtual Private Cloud)
AWS 안에서 만드는 가상 네트워크
하나의 독립된 네트워크처럼 동작해서 보안, 관리, 확장 측면에서 유리
- 리전 단위로 생성
- 리전당 기본 5개까지 생성 가능
- VPC당 최대 5개의 CIDR 블록 설정 가능
- 사설 IPv4 범위만 할당 가능
- 다른 VPC나 외부 네트워크와 CIDR 대역이 겹치면 안 됨
Subnet
VPC를 더 작은 네트워크 단위로 나눈 것
VPC 안에서 리소스를 배치하는 IP 범위
- Public Subnet / Private Subnet
특징
- 서브넷은 하나의 AZ에만 속할 수 있음
- 서브넷의 IP 범위는 반드시 VPC의 CIDR 범위 안에 있어야 함
서브넷을 나누는 이유
- 보안 격리
- IP 주소 효율적 사용
- 관리 편의성
CIDR
IP 주소 범위를 표현하는 표기법
예시 ; 192.168.0.0/24
의미
- 앞부분: 네트워크 ID (192.168.0.0)
- 뒷부분: 호스트 ID 범위 - 나머지 8비트(32비트 - 24비트)
- 서브넷 마스크 (/24): 앞의 24비트를 고정
슬래시 뒤의 서브넷 마스크가 클수록 네트워크 ID 부분이 길어지고, 내가 쓸 수 있는 IP(호스트 ID 부분)는 적어짐
IP 주소 = 네트워크 ID + 호스트 ID
AWS에서도 VPC와 서브넷의 주소 범위를 정할 때 CIDR 사용
IGW (Internet Gateway)
VPC가 인터넷과 통신할 수 있도록 연결하는 게이트웨이
VPC는 기본적으로 외부와 격리된 네트워크라서 인터넷 연결을 위해 IGW가 필요
하지만 IGW만 붙인다고 바로 인터넷이 되는 것은 아님 -> 인터넷 통신이 되려면 같이 필요
- VPC에 IGW 연결
- 라우팅 테이블에 인터넷 방향 경로 추가
- 공인 IP 또는 퍼블릭 접근 조건 충족
Route Table
트래픽을 어디로 보낼지 정하는 규칙표?
예를 들어 특정 목적지로 가는 요청을 로컬로 보낼지, IGW로 보낼지, NAT Gateway로 보낼지 결정
local → 같은 VPC 내부 통신
0.0.0.0/0 → IGW → 인터넷 통신
0.0.0.0/0 → NAT Gateway → 프라이빗 서브넷의 외부 통신
하나의 라우팅 테이블을 여러 서브넷에 연결할 수도 있음
Public Subnet / Private Subnet
Public Subnet
인터넷과 직접 연결 가능한 서브넷
- IGW 연결
- 라우팅 테이블에 인터넷 경로 존재
- 공인 IP 부여 가능
- Bastion Host
- NAT Gateway
- Public EC2
Private Subnet
인터넷에서 직접 접근 불가능한 서브넷
- DB
- 내부 서버
- 외부에 노출되면 안 되는 애플리케이션 서버
NAT Gateway
Private Subnet의 리소스가 외부 인터넷으로 나갈 수 있게 해주는 장치
내부 → 외부 가능
외부 → 내부 직접 접근 불가
즉, 프라이빗 서브넷 안의 인스턴스가 패키지 다운로드, 외부 API 호출,
업데이트 같은 작업은 가능하게 하고, 외부에서 직접 들어오는 연결은 막는 구조
동작 흐름 : Private Subnet 리소스 → NAT Gateway → IGW → 인터넷
- Public Subnet에 생성
- Elastic IP 사용
- 특정 AZ에 생성
- 여러 AZ에 각각 만들면 가용성 향상
- 시간당 비용 + 데이터 처리 비용 발생
Bastion Host
외부에서 Private Subnet 내부 서버로 안전하게 접속하기 위한 중간 서버
보통 Public Subnet에 두고, 운영자는 먼저 Bastion Host에 접속한 뒤
그 내부에서 Private EC2로 SSH 접속
즉, 외부 사용자가 Private EC2에 바로 들어가는 것이 아니라
중간 관문을 하나 두는 방식
- 보안 그룹 설정 예시
Bastion Host: 특정 외부 IP만 SSH 허용
Private EC2: Bastion Host에서 오는 SSH만 허용
NACL
Subnet 단위에서 트래픽을 제어하는 보안 장치
보안 그룹이 인스턴스 단위라면, NACL은 서브넷 단위?
- 서브넷을 오가는 트래픽 제어
- 허용과 거부 규칙 모두 설정 가능
- 서브넷 생성 시 기본 NACL에 자동 연결
- 기본 NACL은 비교적 넓게 허용
- 사용자 정의 NACL은 처음에 허용 규칙 없이 시작
- 규칙 번호가 낮을수록 우선순위 높음
보안 그룹 vs NACL
| 구분 | 보안 그룹 (Security Group) | 네트워크 ACL (NACL) |
|---|
| 적용 단위 | 인스턴스(EC2) 단위 | 서브넷 단위 |
| 상태 관리 | Stateful (응답 트래픽 자동 허용) | Stateless (응답 규칙 별도 필요) |
| 규칙 | 허용만 가능 | 허용 및 거부 가능 |
| 보안범위 | EC2 인스턴스 하나에만 적용되는 보안 | Subnet 안에 있는 모든 EC2 인스턴스에 적용 |
| 우선순위 | 모든 규칙 평가 후 허용/거부 여부 결정 | 번호순 평가 (낮은 번호 우선) , 첫번째 비교로 허용/거부 여부 평가 |
- 더 세밀하게 인스턴스를 보호 → 보안 그룹
- 서브넷 단위로 큰 흐름 제어 → NACL
AWS 네트워크 구조
- Region : AWS 데이터 센터가 모여 있는 지리적 영역
- AZ (Availability Zone) : 하나 이상의 데이터 센터 묶음 / 여러 AZ가 모여 하나의 Region 구성
- VPC : Region 안에 만드는 독립 네트워크
- Subnet : VPC를 더 작게 나눈 네트워크 단위 ( 각 서브넷은 하나의 AZ에 속함 )
VPC Peering
서로 다른 VPC끼리 연결하는 방식
원래 VPC는 서로 독립적이지만, 피어링을 설정하면 마치 같은 네트워크처럼 통신 가능
- AWS 내부 네트워크로 연결
- private IPv4 또는 IPv6 사용
- 서로 다른 계정 간 가능
- 서로 다른 리전 간 가능
- VPC CIDR 대역이 겹치면 안 됨
- 피어링 관계는 전이되지 않음
- 라우팅 테이블도 함께 수정 필요
전이되지 않는다는 말 ; A-B 연결, B-C 연결이 있어도 A와 C가 자동으로 연결X
VPC Endpoint
VPC 내부에서 AWS 서비스로 직접 연결하는 방식
예를 들어 Private Subnet의 인스턴스가 S3, SNS 같은 AWS 서비스에 접근해야 할 때,
굳이 NAT Gateway → IGW → 인터넷 경로를 거치지 않도록 해줌
- AWS 내부 네트워크 이용
- 더 안전
- 더 효율적
- 인터넷 우회 불필요
NAT Gateway와 VPC Endpoint 차이
NAT Gateway
인터넷을 통해 외부로 나가는 통로
경로 : Private Subnet → NAT Gateway → IGW → 외부 인터넷/AWS 서비스
VPC Endpoint
AWS 내부망으로 바로 연결
경로 : Private Subnet → VPC Endpoint → AWS 서비스
AWS 서비스 접근만 필요하다면 VPC Endpoint가 더 적절한 경우가 많음
장점: 보안성 향상, 속도개선, 비용 최적화