[네트워크] AWS 실습 #04
1. NACL은 Stateless
SG과 NACL의 차이로는 SG는 인스턴스 단위, NACL은 네트워크 단위라는 점이 있다.
그리고 SG는 stateful, NACL은 stateless의 성질을 가진다.
이번에는 이를 직접 확인해보겠다.
public에서 private으로 ssh 접속은 가능하지만, private -> public으로 응답을 보내는 건 불가능하게 해보겠다.
만약 SG에서 인바운드 규칙에서 public sg를 대상으로 22번 포트를 열어두면 statefull한 특징 때문에 아웃바운드도 성공하게 되어있다.
하지만 nacl은 다르다.


우선 이렇게 private subnet에 연결된 nacl의 규칙을 수정해서 public -> private으로 ssh 접속을 할 수 있게 했다.
-> 근데 접속이 안 됨!
왜일까?
Private NACL 아웃바운드에서 22번만 열어둠
근데 SSH “응답”은 상대(클라이언트)의 임시 포트(1024~65535) 로 나가야 해서,
22만 열면 SYN-ACK/ACK 단계가 막혀서 접속이 안 됨.
Public EC2에서 Private EC2로 SSH 할 때:
- Public(클라): 10.0.1.x:임시포트(예: 53422) → Private(서버): 10.0.2.x:22
- Private(서버) 응답: 10.0.2.x:22 → Public(클라): 10.0.1.x:53422
여기서 Private 서브넷 NACL Outbound 규칙은 “목적지 포트(=53422)” 기준인데,
Outbound에 22만 허용해놨으니까 응답이 다 막힘.
따라서 아래와 같이 아웃바운드 규칙을 다시 수정했다.


이렇게 인/아웃바운드 규칙을 편집해 public subnet에서 22번 포트로 들어오는 패킷은 허용하고, 나가는 건 거부하도록 설정했다.

2. VPC Peering
AWS에서는 여러 VPC를 만들어서 독립된 네트워크를 구성할 수 있는데, vpc끼리는 또 vpc peering을 통해 인터넷을 거치지 않고 소통할 수가 있다.
지금부터 실습을 통해 직접 확인해보겠다.
1. vpc 두개 생성

2. 각 vpc에 서브넷 생성

3. EC2 각각 생성

이제 실습 시작!
EC2-A에 ssh 접속해서 EC2-B에 ping 보내봤는데 안됨.
생각해보니까 아직 피어링 연결을 생성하지 않음

이렇게 peering 생성 후, 요청 수락.
라우팅 테이블 수정 - 각각의 vpc 라우팅 테이블에 vpc peering 했던 거 추가

그리고 나서 EC2-A에서 EC2-B로 ping 요청 보내면

이렇게 잘 됨
그럼 만약 여기서 VPC-C를 새롭게 만들고,
VPC-B -> VPC-C에 피어링 연결을 하면, VPC-A -> VPC-C 간의 피어링 연결이 될까?
답은, 아니다.
VPC Peering은 중간 VPC를 통한 라우팅(transitive routing) 을 지원하지 않기 때문.
이러한 제약 때문에 여러 VPC를 연결해야 하는 환경에서는 보통 Transit Gateway와 같은 구조를 사용한다.
3. VPC Endpoint
VPC Endpoint는 VPC 내부에서 인터넷을 거치지 않고 AWS 서비스(S3 등)에 접근하는 방법이다.
보통 EC2에서 S3 접근할 때 흐름은 이렇게 된다.
EC2 -> NAT Gateway -> Internet -> S3
즉, AWS 내부 서비스인데도 인터넷을 나갔다 들어옴.
이럴 때 VPC Endpoint를 사용.
엔드포인트를 만들면 흐름이 다음과 같아진다.
EC2 -> VPC Endpoint -> S3
➡ AWS 내부망으로 통신
Endpoint에는 두 종류가 있다.
Gateway Endpoint
- S3
- DynamoDB
- 무료
Interface Endpoint
- 대부분 AWS 서비스
- PrivateLink 기반
- ENI 생성
- 시간당 비용 있음
VPC Endpoint 사용 예
- EC2 로그를 S3에 저장하는 경우
- 백업 데이터를 S3에 업로드하는 경우
- CI/CD 파이프라인에서 S3 artifact를 다운로드하는 경우
- Private Subnet 환경에서 S3 접근이 필요한 경우
Endpoint 생성 시 내부 동작
S3 Gateway Endpoint를 생성하면 VPC의 Route Table에 다음과 같은 경로가 추가된다.
Destination: pl-xxxx (S3 Prefix List)
Target: vpce-xxxx
이 의미는 다음과 같다.
➡ S3로 향하는 트래픽은 인터넷이 아니라 VPC Endpoint를 통해 전달하라는 의미
VPC Endpoint는 새로운 네트워크 장비라기보다 특정 AWS 서비스로 향하는 트래픽의 라우팅 경로를 변경하는 기능