카테고리 없음

[네트워크] AWS 실습 #03

코딩연습중 2026. 2. 18. 02:01

 

1. traceroute

우선 private ec2에서 traceroute를 설치

sudo apt update
sudo apt install -y traceroute

 

private ec2에서 google.com까지 패킷이 어떻게 왔다갔다하는지 traceroute로 확인할 수 있다.

traceroute google.com

 

 

위의 과정을 설명하자면,

1. private ec2에서 외부로 나가는 요청: subnet의 라우팅 테이블에 의해 nat로 향하게 됨. 따라서 10.0.1.194는 public subnet 영역에 할당된 NAT Gateway ENI private IP임.

 
AWS에서 NAT ENI(Elastic Network Interface)는 주로 NAT Gateway 또는 NAT 인스턴스가 프라이빗 서브넷의 트래픽을 인터넷으로 전달할 때 사용하는 네트워크 인터페이스를 의미

프라이빗 서브넷의 인스턴스가 인터넷과 통신하기 위해서는 퍼블릭 서브넷에 위치한 NAT 장치(Gateway/Instance)를 거쳐야 하는데, 이때 NAT 장치에 연결된 ENI가 사설 IP(Private IP)와 탄력적 IP(EIP) 간의 변환을 처리

 

2 ~ 13. AWS 외부 네트워크 ~ ISP(통신사) ~

14. Google.com

 

 

 

2. ICMP 차단

현재 private ec2의 인바운드 규칙을 보면, ssh만 열어두었다. 따라서 public에서 private으로 ssh 접속은 되지만 ping은 되지 않는다.

 

만약, 다음과 같이 인바운드 규칙에 icmp 프로토콜을 허용해준다면

위와 같이 ping이 정상적으로 동작한다.

이를 통해 보안그룹은 프로토콜 단위로 세세하게 제어할 수 있다는 걸 알 수 있다.

 

 

3. tcpdump

tcpdump로 패킷을 봐보자.

sudo tcpdump -ni ens5 port 22

이 서버의 ens5 네트워크 인터페이스에서 22번 포트로 오가는 모든 트래픽을 보여달라는 뜻

 

 

이번 실험의 목적은 “어디에서 패킷이 차단되는지”를 tcpdump를 통해 이해하는 것이다.

참고로 그 전에 tcpdump에 대한 이해가 부족한 것 같아 다시 한 번 짚고 넘어가겠다.

 

tcpdump는 ‘이 서버가 실제로 받은 패킷’만 보여준다.

서버가 패킷을 ‘받는다’는 게 무슨 뜻이냐

Private EC2 입장에서 보면, 외부에서 패킷이 올 때 순서는 이렇다:

  1. AWS 네트워크를 타고 온다.
  2. Private EC2의 네트워크 카드(ens5)로 들어온다.
  3. 리눅스가 그 패킷을 처리한다.
  4. sshd 같은 프로그램이 그걸 사용한다.

tcpdump는 2번과 3번 사이,
즉 “이 서버의 네트워크 카드로 실제 들어온 패킷”을 보여준다.

 

그럼 이제 다시 넘어가보겠다.

 

1. SSH를 Security Group에서 차단한 경우

Private EC2에서 다음 명령어로 캡처 중이라고 가정한다.

sudo tcpdump -ni ens5 port 22

그리고 Public EC2에서 SSH 접속을 시도한다.

 

결과: 아무 패킷도 찍히지 않는다.

 

이유: Security Group은 ENI(Elastic Network Interface) 단계에서 패킷을 필터링한다.
즉, 패킷이 리눅스 커널까지 도달하지 못한다.

tcpdump는 운영체제 네트워크 스택에서 패킷을 관찰하는 도구이기 때문에, Security Group에서 드롭된 패킷은 애초에 보이지 않는다.

정리: Security Group에서 막히면 tcpdump에 아무것도 찍히지 않는다.

 

 

2.ICMP(ping)를 허용했을 때와 차단했을 때

Private EC2에서 다음 명령어 실행:

sudo tcpdump -ni ens5 icmp

Public EC2에서 ping

 

(1) ICMP 허용된 경우

다음과 같은 출력이 보인다.

IP 10.0.1.10 > 10.0.2.15: ICMP echo request
IP 10.0.2.15 > 10.0.1.10: ICMP echo reply

의미:

echo request는 ping 요청,
echo reply는 그에 대한 응답이다.

즉, ICMP 패킷이 정상적으로 왕복하고 있다.

 

(2) ICMP 차단된 경우

아무것도 찍히지 않는다.

역시 Security Group 단계에서 차단되어 OS까지 도달하지 못한 것이다.

 

 

3. SYN만 보이고 SYN-ACK가 보이지 않는 경우

tcpdump에 다음과 같이 찍힌다고 가정한다.

IP client > server: Flags [S]
IP client > server: Flags [S]
IP client > server: Flags [S]

SYN 패킷만 반복적으로 보이고, SYN-ACK가 없다.

이 경우 해석은 다음과 같다.

  • SYN은 서버까지 도달했다.
  • 그러나 서버가 응답하지 못하고 있다.

가능한 원인:

  1. sshd 프로세스가 떠 있지 않다.
  2. 서버의 아웃바운드 경로가 차단되어 SYN-ACK를 내보내지 못한다.
  3. 방화벽이나 NACL에서 응답이 차단되고 있다.

중요한 점은, SYN이 tcpdump에 보인다는 것은
이미 Security Group은 통과했다는 의미라는 것이다.


  1. 전체 비교 정리

Security Group에서 차단된 경우
→ tcpdump에 아무것도 찍히지 않는다.

포트는 열려 있으나 서비스가 실행되지 않은 경우
→ SYN 후 RST가 보인다.

정상 연결
→ S → S. → . (3-way handshake)

SYN만 반복
→ 응답 경로 또는 서버 설정 문제

 

 

다시 말하면, tcpdump는 운영체제에 도달한 패킷만 보여준다.
따라서 “보이지 않는 것” 자체가 중요한 단서가 된다.

패킷이 보이지 않으면 네트워크 레벨에서 차단된 것이고,
패킷이 보이는데 연결이 성립하지 않으면 서버 설정이나 응답 경로 문제다.

이 관점으로 보면, 보안 그룹과 애플리케이션 문제를 구분할 수 있다.

 

 

 

하... tcpdump를 예전에 전공 수업 때 실습했었는데 그 때 제대로 공부 안 한 게 후회됨.. 다시 하려니까 너무 막막했는데ㅠㅠ

그래도 해야되니까 열심히 해야겠다..

차분하게 조금씩 이해를 넓히려고 하니까 그래도 금방 이해가 돼서 다행이다.

 

 다음 글에서는 아래의 내용을 다뤄보겠다.

  • NACL Stateless 실험
  • VPC Peering
  • Hairpin NAT
  • Public IP 1:1 NAT 구조
  • 다른 VPC Public IP 통신 경로