Subnet & Routing Basics
IPv4 주소 구조, 서브넷 마스크, CIDR, 라우팅 테이블, VLAN
🎯 개요
| 개념 | 설명 |
|---|---|
| IP 주소 | 네트워크 상의 장치 식별자 |
| 서브넷 | 큰 네트워크를 작은 단위로 분할 |
| 라우팅 | 패킷을 목적지까지 전달하는 경로 결정 |
📍 IP 주소
IPv4 구조
32비트, 4개의 옥텟(octet)으로 표현.
flowchart LR subgraph IPv4["192.168.1.100"] O1["11000000 (192)"] O2["10101000 (168)"] O3["00000001 (1)"] O4["01100100 (100)"] O1 --- O2 --- O3 --- O4 end
IP 주소 클래스 (전통적 분류)
| 클래스 | 범위 | 기본 서브넷 | 네트워크/호스트 |
|---|---|---|---|
| A | 1.0.0.0 ~ 126.255.255.255 | /8 | 대규모 |
| B | 128.0.0.0 ~ 191.255.255.255 | /16 | 중규모 |
| C | 192.0.0.0 ~ 223.255.255.255 | /24 | 소규모 |
| D | 224.0.0.0 ~ 239.255.255.255 | - | 멀티캐스트 |
| E | 240.0.0.0 ~ 255.255.255.255 | - | 예약 |
현재는 클래스 개념보다 CIDR 방식을 주로 사용함.
사설 IP 주소 (Private)
인터넷에서 라우팅되지 않는 내부용 주소.
| 클래스 | 범위 | CIDR |
|---|---|---|
| A | 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/8 |
| B | 172.16.0.0 ~ 172.31.255.255 | 172.16.0.0/12 |
| C | 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 |
특수 주소
| 주소 | 용도 |
|---|---|
| 127.0.0.1 | 루프백 (localhost) |
| 0.0.0.0 | 기본 경로, 모든 주소 |
| 255.255.255.255 | 브로드캐스트 |
| 169.254.x.x | APIPA (DHCP 실패 시) |
🎭 서브넷 마스크
개념
IP 주소에서 네트워크 부분과 호스트 부분을 구분.
flowchart TB subgraph Subnet["서브넷 마스크 동작"] IP["IP: 192.168.1.100"] Mask["마스크: 255.255.255.0"] Net["네트워크 부분: 192.168.1"] Host["호스트 부분: .100"] IP --> Net IP --> Host Mask -.-> Net Mask -.-> Host end
이진수로 보면
IP: 11000000.10101000.00000001.01100100
마스크: 11111111.11111111.11111111.00000000
└────── 네트워크 (24비트) ──────┘└호스트┘
AND 연산으로 네트워크 주소 계산:
IP: 192.168.1.100
마스크: 255.255.255.0
─────────────────────────────
네트워크: 192.168.1.0
서브넷 마스크 표기
| 표기 | 서브넷 마스크 | 호스트 수 |
|---|---|---|
| /8 | 255.0.0.0 | 16,777,214 |
| /16 | 255.255.0.0 | 65,534 |
| /24 | 255.255.255.0 | 254 |
| /25 | 255.255.255.128 | 126 |
| /26 | 255.255.255.192 | 62 |
| /27 | 255.255.255.224 | 30 |
| /28 | 255.255.255.240 | 14 |
| /29 | 255.255.255.248 | 6 |
| /30 | 255.255.255.252 | 2 |
| /32 | 255.255.255.255 | 1 (단일 호스트) |
호스트 수 = 2^(32-prefix) - 2 (네트워크 주소, 브로드캐스트 제외)
📐 CIDR (Classless Inter-Domain Routing)
클래스 없이 유연하게 네트워크 크기 지정.
표기법
192.168.1.0/24
IP 주소 / 네트워크 비트 수
예시
| CIDR | 네트워크 주소 | 브로드캐스트 | 사용 가능 IP |
|---|---|---|---|
| 192.168.1.0/24 | 192.168.1.0 | 192.168.1.255 | .1 ~ .254 |
| 192.168.1.0/25 | 192.168.1.0 | 192.168.1.127 | .1 ~ .126 |
| 192.168.1.128/25 | 192.168.1.128 | 192.168.1.255 | .129 ~ .254 |
| 10.0.0.0/8 | 10.0.0.0 | 10.255.255.255 | .0.0.1 ~ .255.255.254 |
서브넷 계산
/24를 /26으로 분할:
flowchart TB Original["원본: 192.168.1.0/24 (254 호스트)"] S1["192.168.1.0/26 (.1~.62)"] S2["192.168.1.64/26 (.65~.126)"] S3["192.168.1.128/26 (.129~.190)"] S4["192.168.1.192/26 (.193~.254)"] Original --> S1 Original --> S2 Original --> S3 Original --> S4
슈퍼넷팅 (반대)
여러 네트워크를 하나로 통합.
192.168.0.0/24 ┐
192.168.1.0/24 ├→ 192.168.0.0/23
┘
🎯 서브넷 설계 예시
시나리오
회사 네트워크 설계:
- 본사: 100대
- 지사 A: 50대
- 지사 B: 25대
- 서버실: 10대
할당된 네트워크: 192.168.0.0/24
설계
| 부서 | 필요 IP | 서브넷 | CIDR | 범위 |
|---|---|---|---|---|
| 본사 | 100 | /25 (126개) | 192.168.0.0/25 | .1 ~ .126 |
| 지사 A | 50 | /26 (62개) | 192.168.0.128/26 | .129 ~ .190 |
| 지사 B | 25 | /27 (30개) | 192.168.0.192/27 | .193 ~ .222 |
| 서버실 | 10 | /28 (14개) | 192.168.0.224/28 | .225 ~ .238 |
| 예비 | - | /28 | 192.168.0.240/28 | .241 ~ .254 |
🔀 라우팅 기초
라우팅이란?
패킷을 목적지까지 전달하는 경로를 결정하는 과정임.
flowchart LR PC["PC (10.0.1.10)"] RA["Router A"] RB["Router B"] Server["Server (10.0.2.20)"] PC --> RA --> RB --> Server Note["다른 네트워크로 가려면 라우터 필요"]
기본 게이트웨이 (Default Gateway)
다른 네트워크로 가는 출구임.
flowchart TB PC["PC (192.168.1.100)"] Q{"목적지가 같은 네트워크?"} Direct["직접 통신 (ARP)"] GW["게이트웨이로 전송"] PC --> Q Q -->|Yes| Direct Q -->|No| GW
라우팅 테이블
라우터가 패킷을 어디로 보낼지 결정하는 표.
# Linux 라우팅 테이블 확인
ip route
# 또는
route -n
netstat -rn출력 예시:
Destination Gateway Genmask Iface
0.0.0.0 192.168.1.1 0.0.0.0 eth0 ← 기본 경로
192.168.1.0 0.0.0.0 255.255.255.0 eth0 ← 직접 연결
10.0.0.0 192.168.1.254 255.255.0.0 eth0 ← 정적 경로
| 항목 | 설명 |
|---|---|
| Destination | 목적지 네트워크 |
| Gateway | 다음 홉 (0.0.0.0 = 직접 연결) |
| Genmask | 서브넷 마스크 |
| Iface | 나가는 인터페이스 |
라우팅 동작
flowchart TB Dest["목적지: 10.0.5.100"] R1["10.0.5.0/24 → 매칭!"] R2["10.0.0.0/16 → 매칭"] R3["0.0.0.0/0 → 기본 경로"] Result["Longest Prefix Match: 10.0.5.0/24 선택"] Dest --> R1 Dest --> R2 Dest --> R3 R1 --> Result
정적 라우팅 vs 동적 라우팅
| 항목 | 정적 (Static) | 동적 (Dynamic) |
|---|---|---|
| 설정 | 수동 | 자동 (프로토콜) |
| 적응성 | 변경 시 수동 수정 | 자동 업데이트 |
| 리소스 | 적음 | 많음 |
| 용도 | 소규모, 단순 | 대규모, 복잡 |
| 예시 | ip route add | OSPF, BGP, RIP |
정적 라우팅 설정
# Linux에서 정적 경로 추가
ip route add 10.0.0.0/16 via 192.168.1.254
# 삭제
ip route del 10.0.0.0/16
# 기본 게이트웨이 설정
ip route add default via 192.168.1.1
# 영구 설정 (Ubuntu)
# /etc/netplan/01-netcfg.yaml
network:
ethernets:
eth0:
routes:
- to: 10.0.0.0/16
via: 192.168.1.254🌐 VLAN (간략히)
개념
물리적 네트워크를 논리적으로 분리함.
flowchart TB subgraph Switch["Switch"] subgraph VLAN10["VLAN 10 (영업팀)"] V10["PC1, PC2"] end subgraph VLAN20["VLAN 20 (개발팀)"] V20["PC3, PC4"] end end Router["Router / L3 Switch"] VLAN10 <-->|라우팅 필요| Router VLAN20 <-->|라우팅 필요| Router Note["서로 직접 통신 불가"]
🛠️ 실습: Linux 네트워크 설정
IP 확인
# IP 주소 확인
ip addr
ip a
# 특정 인터페이스
ip addr show eth0IP 설정 (임시)
# IP 추가
ip addr add 192.168.1.100/24 dev eth0
# IP 삭제
ip addr del 192.168.1.100/24 dev eth0
# 인터페이스 활성화
ip link set eth0 upNetplan (Ubuntu)
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4# 적용
sudo netplan applynmcli (RHEL/CentOS)
# 연결 확인
nmcli con show
# IP 설정
nmcli con mod eth0 ipv4.addresses 192.168.1.100/24
nmcli con mod eth0 ipv4.gateway 192.168.1.1
nmcli con mod eth0 ipv4.dns "8.8.8.8"
nmcli con mod eth0 ipv4.method manual
# 적용
nmcli con up eth0🔧 트러블슈팅 명령어
# 연결 테스트
ping 192.168.1.1
# 경로 추적
traceroute 8.8.8.8
tracepath 8.8.8.8
# 라우팅 테이블
ip route
route -n
# ARP 테이블 (MAC 주소 매핑)
ip neigh
arp -a
# 포트 확인
ss -tuln
netstat -tuln
# DNS 조회
nslookup google.com
dig google.com📋 요약
핵심 개념
| 개념 | 설명 |
|---|---|
| IP 주소 | 네트워크 장치 식별자 (32비트) |
| 서브넷 마스크 | 네트워크/호스트 부분 구분 |
| CIDR | 유연한 네트워크 크기 지정 (/24 등) |
| 기본 게이트웨이 | 다른 네트워크로 가는 출구 |
| 라우팅 테이블 | 패킷 전달 경로 결정 |
자주 쓰는 서브넷
| CIDR | 호스트 수 | 용도 |
|---|---|---|
| /24 | 254 | 일반 LAN |
| /25 | 126 | 중간 규모 |
| /26 | 62 | 부서별 |
| /27 | 30 | 소규모 |
| /28 | 14 | 서버 팜 |
| /30 | 2 | 라우터 간 링크 |
| /32 | 1 | 단일 호스트 |
🔗 관련 문서
- IP Model - 네트워크 계층 모델
- Datacenter Network Topology - Spine-Leaf 등