팀 프로젝트 festabook에서 학습한 내용을 정리한 글입니다.
시스(CS 스터디)에서 발표한 내용을 정리한 글입니다.
💭 들어가며
본 글은 시스(CS 스터디)에서 발표한 내용을 정리한 자료로, 발표용 흐름에 맞추어 순차적으로 구성되어 있다. 개념에 대한 보다 정확한 이해가 필요하다면, 시스 유튜브에 업로드된 영상 자료를 함께 참고 바란다.
✅ 문제 상황
최근 Kubernetes 관련 자격증을 준비하며 전반적인 개념은 비교적 잘 이해하고 있다고 생각했지만, Network 파트에서 완전히 막혀버렸다. Switch, Router, Host, DNS 등의 개념은 알고 있었으나, 이들이 실제로 어떻게 할당되고 통신하는지에 대해서는 깊이 이해하지 못하고 있었다. 또한, Host 내부에서 벌어지는 네트워크 구조에 대해서는 전혀 알지 못했다.
기초 지식을 다시 정리해 보며 원인을 되짚어 보니, 문제는 Kubernetes 이전에 Linux의 Namespace라는 가장 기본적인 개념조차 제대로 이해하지 못하고 있었다는 점이었다. 이에 이번 기회를 계기로 Namespace부터 차근차근 공부해 보기로 했다.
✅ 사전 지식
▶ Switching

스위치(Switch)는 같은 네트워크(L2)에 속한 시스템들을 MAC 주소 기반으로 연결한다.
스위치는 네트워크 내부 통신만 처리하며, 다른 네트워크로의 전달은 하지 않는다.
▶ Routing

라우터(Router)는 서로 다른 네트워크(L3) 간 시스템들을 IP 주소 기반으로 연결한다.
▶ Gateway

ip route add 192.168.2.0/24 via 192.168.1.1
게이트웨이(Gateway)는 시스템이 내부 네트워크 범위를 벗어난 목적지와 통신할 때, 외부 네트워크로 나가기 위한 출구 역할을 한다.
- 논리적 개념 X
- 실제 네트워크 장치의 IP 주소 (일반적으로 라우터의 IP)
▶ Default Gateway

라우팅 테이블에 명시적으로 등록되지 않은 모든 목적지는 기본 게이트웨이(Default Gateway)로 전달된다.
- default: 0.0.0.0
- 의미: 그 외 모든 네트워크
default로 보낸다는 것은 이 목적지에 대한 책임을 다음 홉(hop) 라우터에게 넘긴다는 뜻이다.
▶ Routing Table

각 시스템은 패킷을 보낼 때 어디로 나가야 할지 판단하기 위해 라우팅 테이블을 참조한다.
라우팅 테이블에는 다음 정보가 저장된다.
- 목적지 네트워크
- 해당 네트워크로 가기 위한 게이트웨이
- 패킷을 보낼 인터페이스
▶ /etc/hosts
과거에는 각 시스템이 다른 시스템의 이름과 IP를 로컬 파일에 직접 저장했다.
192.168.1.11 db
서버가 10개라면?
서버가 100개라면?
▶ Domain Name Server (DNS)
이 문제를 해결하기 위해 Domain Name Server(DNS)가 등장했다.
이제 각 호스트는 /etc/resolv.conf에 DNS의 주소만 등록해 두면 된다. 이 파일은 이름을 어디에 물어볼지를 정의한다.

DNS는 환경에 따라 회사 내부 DNS, 공용 DNS(예: 8.8.8.8), 혹은 로컬 DNS 프록시를 가리킬 수 있다.
✅ 파고들기
DNS를 먼저 설명한 이유는 이름을 중앙에서 관리해 확장성을 얻은 구조가 네임스페이스 격리 구조와 매우 닮아 있기 때문이다.

▶ Namespace

네임스페이스는 하나의 리눅스 커널 위에서 서로 다른 환경을 만드는 기술이다.
Q. 컨테이너는 네임스페이스 없이 존재할 수 있는가?
A. 불가능하다. 컨테이너는 네임스페이스를 통해 격리된 환경을 구성하는 실행 단위이다.
▶ Network Namespace
Network Namespace가 분리되면, 각 네임스페이스는 완전히 독립된 네트워크 스택을 가진다.
네임스페이스마다 독립적으로 존재하는 것들은 다음과 같다.
1️⃣ 인터페이스
네트워크 인터페이스의 존재와 상태(L2)를 확인한다.

- lo: 루프백
- eth0: 물리 NIC
- veth: 가상 랜선 (밑에서 설명)
2️⃣ IP 주소
인터페이스에 할당된 L3 식별 정보를 확인한다.
- IPv4 / IPv6 주소
- 서브넷 마스크

3️⃣ 라우팅 테이블
패킷이 어느 경로로 나가는지를 결정하는 규칙이다.

- 목적지 네트워크
- 게이트웨이
- 인터페이스
- default route
4️⃣ /etc/hosts
5️⃣ /etc/resolv.conf
쿠버네티스 환경임을 참고
▶ Virtual Ethernet (veth)

Virtual Ethernet (veth)는 가상 랜선이다.
- 항상 쌍(pair)으로 생성
- 한쪽으로 들어간 패킷은 즉시 반대쪽으로 전달
Namespace가 10개라면?
Namespace가 100개라면?
▶ Bridge

Bridge는 네임스페이스를 연결하는 L2 스위치이다.
- 네임스페이스가 2개 이상이 되면 veth pair만으로는 연결 구조가 복잡해지고 관리가 어려워진다.
- 중앙 스위치 역할 필요
- 네임스페이스는 기본적으로 완전히 고립된 네트워크 환경이다.
- 고립된 네임스페이스들을 같은 네트워크에 속한 것처럼 연결해 주는 역할 필요
✅ 확장하기
▶ Kubernetes 네트워크 맛보기

Kubernetes는 이 모든 걸 자동으로 한다.
- CNI: veth + bridge + routing 자동 구성
- Pod: 하나의 Network Namespace
- Service: IP는 가상, 이름은 고정
- CoreDNS: 클러스터 내부 DNS 서버
📍 참고 자료
'CS > Network' 카테고리의 다른 글
| [Network] Web Server, WAS, SSR, CSR (0) | 2025.11.16 |
|---|---|
| [Network] HTTP 캐싱(Caching) (0) | 2025.10.13 |
| [Network] XSS, CSRF (1) | 2024.08.27 |
| [Network] 멀티플렉싱, 디멀티플렉싱 (0) | 2024.08.26 |
| [Network] 서브넷 마스크, 게이트웨이 (1) | 2024.08.26 |