네트워크 기초부터 Docker Network까지

이재환·2025년 4월 5일
2
post-thumbnail

네트워크 기초

공인망과 사설망

LAN과 WAN

LAN은 Local Area Network의 약자로 사용자가 포함된 지역 네트워크를 의미합니다. (ex 가정에서 사용하는 공유기) LAN에서는 사설 IP 주소를 사용해 내부 장치들끼리 통신합니다.

사설 IP란 로컬 네트워크(ex 가정, 사무실) 내에서만 사용되는 주소입니다.전 세계적으로 유일할 필요가 없으며, 내부 네트워크 구성원 간의 통신에 사용됩니다. (ex 192.168.0.x, 등)

WAN은 Wide Area Network 의 준말로써 LAN과 LAN 사이를 광범위한 지역 단위로 구성하는 네트워크를의미합니다.(WAN은 ISP Internet Service Provider 즉, 통신사가 구축하고 관리) WAN에서는 공인 IP 주소를 사용해 외부와 직접 통신합니다.

공인 IP란 인터넷 상에서 고유하게 식별되는 주소입니다. 전 세계 모든 장치가 유일하게 사용할 수 있도록 할당되며, 인터넷 서비스 제공업체(ISP)나 등록 기관에 의해 관리됩니다. (ex 8.8.8.8, 203.0.113.5 등)

사설 IP와 공인 IP의 변환 과정은 밑에서 다룰 예정

사설 IP 주소 대역

10.0.0.0 ~ 10.255.255.255 (Class A)
172.16.0.0 ~ 172.31.255.255 (Class B)
192.168.0.0 ~ 192.168.255.255 (Class C)

A 클래스는 대규모 네트워크 환경에 주로 사용
B 클래스는 중규모 네트워크 환경,
C 클래스는 주로 가정에서 사용됩니다.

CIDR 표기법

CIDR의 full name은 (Classless Inter-Domain Routing) 으로 클래스 없는 도메인간 라우팅 기법이라는 뜻입니다. CIDR 이전에는 A, B, C, D와 같은 클래스 기반을 통해 IP 주소의 범위를 표기하였는데, 이 방법을 더 이상 사용하지 않고 새로운 방법이라는 의미에서 CIDR의 명칭에 Classless로 표기되었으며, 클래스 대신 CIDR 블록과 서브넷 마스크 형태로 IP 주소의 범위를 표기합니다.

Octet 1Octet 2Octet 3Octet 4
1, 1, 0, 0, 0, 0, 0, 01, 0, 1, 0, 1, 0, 0, 00, 0, 0, 0, 0, 0, 0, 00, 0, 0, 0, 0, 0, 0, 0
Octet 1Octet 2Octet 3Octet 4
19216800
Network
192.168.0.0/24

CIDR가 '/24'의 경우 위와 같이 앞에서부터 24비트 이후에 오는 4번째 옥텟을 전부 사용할 수 있다는 표현입니다. 하나의 옥텟은 8비트로, 2의 8제곱인 256개이기 때문에 192.168.0.0/24일때, 192.168.0.0 ~ 192.168.0.255까지 사용이 가능합니다. 이로써 IP 대역을 효과적으로 표기할 수 있습니다.

인터페이스와 포트

네트워크 인터페이스(Network Interface)는 컴퓨터나 기타 네트워크 장비가 네트워크에 연결될 수 있도록 하는 물리적 또는 가상 장치를 의미합니다.

네트워크 포트(Network Port)는 운영체제에서 관리하는 논리적 엔드포인트로, 하나의 IP 주소 내에서 여러 애플리케이션이 동시에 네트워크 통신을 할 수 있도록 각 애플리케이션을 구분해 주는 역할을 합니다.

NAT

NAT(Network Address Translation)는 내부 네트워크의 사설 IP 주소와 외부 네트워크의 공인 IP 주소 간의 변환을 수행하는 기술입니다. 이 때, NAT 테이블은 이러한 변환 정보를 저장하는 데이터 구조로, 인바운드아웃바운드 트래픽이 올바른 방향으로 전달되도록 돕습니다.

비유로 이해해보겠습니다. 집 안에는 여러 방이 있고, 각 방마다 번호(사설 IP)가 있습니다. 그런데 집 밖에서 누군가에게 편지를 보내려면 집 전체의 주소(공인 IP)가 필요합니다. NAT는 마치 집 현관의 안내원처럼, 여러 방(내부 장치)에서 나온 편지를 모아서 하나의 집 주소(공인 IP)로 보내고, 외부에서 온 편지를 각 방으로 전달해 주는 역할을 합니다.

NAT 테이블

내부와 외부 주소 간의 변환 정보를 저장하는 데이터베이스 역할을 하여, 외부에서 들어온 데이터가 올바른 내부 장치로 가도록 안내합니다.

아웃바운드(내부 → 외부)

내부 네트워크의 각 장치(방)는 고유한 사설 IP(방 번호)를 갖고 있지만, 외부로 나갈 때는 라우터가 이 주소를 자신의 공인 IP(집 주소)로 바꿉니다. 동시에 NAT 테이블에 어느 내부 장치에서 어떤 연결을 시작했는지 기록합니다.

인바운드(외부 → 내부):

외부에서 응답이나 요청이 오면, 라우터는 NAT 테이블을 참고하여 해당 데이터를 올바른 내부 장치(정확한 방)로 전달합니다.

포트포워딩

인바운드 트래픽 중 특정 포트 번호에 해당하는 패킷을 특정 내부 IP 주소와 포트로 전달하도록 설정한 기능입니다. (ex 외부 사용자가 공인 IP의 포트 80에 접속하면, 해당 요청을 내부의 웹 서버 192.168.1.100의 포트 80로 전달하는 것.)

DNS

DNS(도메인 이름 시스템)는 인터넷이나 네트워크 상에서 도메인 이름(예: www.example.com)을 해당 서버의 IP 주소(예: 192.0.2.1)로 변환해 주는 시스템입니다. (ex Google DNS, Cloudflare DNS)

도커 네트워크

개념

가상 네트워크

물리적인 네트워크 장비 없이 소프트웨어로 네트워크를 만들어내는 것입니다.

가상 인터페이스

물리적인 네트워크 카드나 포트를 사용하지 않고, 소프트웨어에서 생성한 네트워크 인터페이스를 말합니다. 네트워크 통신을 위한 논리적 엔드포인트 역할을 합니다.

도커 네트워크 드라이버

도커 네트워크 드라이버는 컨테이너 간의 네트워크 통신 방식을 설정하고 관리하는 소프트웨어 모듈입니다. 쉽게 말해, 컨테이너들이 어떻게 서로 연결되고 통신할지를 결정해 주는 "네트워크 연결 규칙"이라고 할 수 있습니다. 컨테이너가 생성될 때 네트워크 인터페이스와 IP 주소를 할당합니다.

기본 드라이버 종류

브릿지(bridge): 기본 드라이버로, 단일 호스트 내에서 컨테이너들이 서로 통신할 수 있도록 가상 브릿지 네트워크를 만듭니다.
호스트(host): 컨테이너가 호스트 네트워크와 직접 연결되게 하여, 별도의 네트워크 격리 없이 통신하도록 합니다.
오버레이(overlay): 여러 호스트에 걸친 컨테이너들을 연결할 때 사용하며, 클러스터 환경에서 네트워크를 확장할 수 있습니다.
MACVLAN: 각 컨테이너에 고유의 MAC 주소를 할당하여, 물리 네트워크 상에서 독립된 장치처럼 보이게 합니다.

브릿지

Docker에서는 기본적으로 가상 브릿지 네트워크가 사용됩니다.
이는 여러 컨테이너들이 하나의 가상 네트워크 상에서 서로 통신할 수 있게 하는 “다리” 역할을 합니다.
Docker를 처음 설치하면 기본적으로 docker0라는 이름의 가상 브릿지 네트워크 인터페이스가 생성됩니다. 이 인터페이스는 컨테이너들이 서로 통신할 수 있도록 연결해 줍니다. 가상 브릿지 네트워크에서는 서브넷의 첫 번째 IP 주소가 게이트웨이 IP 주소로 예약됩니다.

문법

docker network 문법

네트워크 리스트 조회
docker network ls

네트워크 상세 정보 조회
docker network inspect 네트워크명

네트워크 생성
docker network create 네트워크명

네트워크 삭제
docker network rm 네트워크명

가상 포트포워딩

HostOS로의 네트워크 접근을 컨테이너로 포트포워딩
docker run -p HostOS의포트:컨테이너의포트

0개의 댓글