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 주소 클래스 (전통적 분류)

클래스범위기본 서브넷네트워크/호스트
A1.0.0.0 ~ 126.255.255.255/8대규모
B128.0.0.0 ~ 191.255.255.255/16중규모
C192.0.0.0 ~ 223.255.255.255/24소규모
D224.0.0.0 ~ 239.255.255.255-멀티캐스트
E240.0.0.0 ~ 255.255.255.255-예약

현재는 클래스 개념보다 CIDR 방식을 주로 사용함.

사설 IP 주소 (Private)

인터넷에서 라우팅되지 않는 내부용 주소.

클래스범위CIDR
A10.0.0.0 ~ 10.255.255.25510.0.0.0/8
B172.16.0.0 ~ 172.31.255.255172.16.0.0/12
C192.168.0.0 ~ 192.168.255.255192.168.0.0/16

특수 주소

주소용도
127.0.0.1루프백 (localhost)
0.0.0.0기본 경로, 모든 주소
255.255.255.255브로드캐스트
169.254.x.xAPIPA (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

서브넷 마스크 표기

표기서브넷 마스크호스트 수
/8255.0.0.016,777,214
/16255.255.0.065,534
/24255.255.255.0254
/25255.255.255.128126
/26255.255.255.19262
/27255.255.255.22430
/28255.255.255.24014
/29255.255.255.2486
/30255.255.255.2522
/32255.255.255.2551 (단일 호스트)

호스트 수 = 2^(32-prefix) - 2 (네트워크 주소, 브로드캐스트 제외)


📐 CIDR (Classless Inter-Domain Routing)

클래스 없이 유연하게 네트워크 크기 지정.

표기법

192.168.1.0/24

IP 주소 / 네트워크 비트 수

예시

CIDR네트워크 주소브로드캐스트사용 가능 IP
192.168.1.0/24192.168.1.0192.168.1.255.1 ~ .254
192.168.1.0/25192.168.1.0192.168.1.127.1 ~ .126
192.168.1.128/25192.168.1.128192.168.1.255.129 ~ .254
10.0.0.0/810.0.0.010.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
지사 A50/26 (62개)192.168.0.128/26.129 ~ .190
지사 B25/27 (30개)192.168.0.192/27.193 ~ .222
서버실10/28 (14개)192.168.0.224/28.225 ~ .238
예비-/28192.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 addOSPF, 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 eth0

IP 설정 (임시)

# 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 up

Netplan (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 apply

nmcli (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호스트 수용도
/24254일반 LAN
/25126중간 규모
/2662부서별
/2730소규모
/2814서버 팜
/302라우터 간 링크
/321단일 호스트

🔗 관련 문서


🔗 참고 자료