TCP/IP 네트워크 아키텍처 및 리눅스 네트워크 관리 실습

네트워크 구성 요소 개요

현대 네트워크는 다양한 물리적 장치와 프로토콜의 조합으로 작동한다. 주요 장치로는 라우터, 스위치, 네트워크 인터페이스 카드(NIC), 모뎀, 광 트랜시버 등이 있다. 라우터는 서로 다른 네트워크 간 연결을 담당하며, 스위치는 동일 로컬 구역 내 장치 간 고속 통신을 가능하게 한다. 방화벽은 보안 정책에 따라 트래픽을 필터링하고, 로드 밸런서는 서버 간 트래픽을 분산하여 성능과 가용성을 향상시킨다.

OSI 7계층 모델

통신 과정을 계층화한 개념 모델로, 각 계층은 아래 계층의 서비스를 이용하면서 상위 계층에 서비스를 제공한다.

  • 응용 계층 (Application): HTTP, FTP, SMTP 등 사용자 애플리케이션 인터페이스
  • 표현 계층 (Presentation): 데이터 암호화, 압축, 형식 변환
  • 세션 계층 (Session): 세션 생성, 유지, 종료 관리
  • 전송 계층 (Transport): TCP/UDP 기반의 신뢰성 있는 데이터 전달
  • 네트워크 계층 (Network): IP 기반 경로 선택 및 패킷 포워딩
  • 데이터 링크 계층 (Data Link): MAC 주소 기반 프레임 전송
  • 물리 계층 (Physical): 전기적 신호 및 케이블 규격

TCP/IP 4계층 모델

실제 인터넷에서 사용되는 간소화된 모델로, OSI 모델을 기반으로 통합 구성된다.

  • 응용 계층: OSI의 응용, 표현, 세션 계층을 통합
  • 전송 계층: TCP(연결 지향), UDP(비연결) 제공
  • 인터넷 계층: IP 기반 패킷 라우팅 수행
  • 네트워크 인터페이스 계층: OSI의 데이터 링크 및 물리 계층 포함

로컬 네트워크 장치 비교

장치특징용도
허브(Hub) 브로드캐스트 방식, 반감속 통신, 충돌 도메인 공유 소규모 사무실 또는 홈 네트워크
스위치(Switch) MAC 주소 기반 전달, 전이중 통신, VLAN 및 링크 어그리게이션 지원 기업급 네트워크 구조
라우터(Router) IP 기반 경로 결정, NAT, 방화벽, VPN 기능 탑재 내부망과 외부망 연결

전송 계층 프로토콜: TCP vs UDP

TCP는 연결 설정을 위한 3-way 핸드셰이크(SYN → SYN-ACK → ACK), 오류 검출, 재전송, 흐름 제어 기능을 제공하여 안정적인 데이터 전송을 보장한다. 주로 웹(HTTP), 파일 전송(FTP), 메일(SMTP), 원격 접속(SSH) 등에 사용된다.

UDP는 최소한의 헤더만 포함하며, 순서 보장이나 재전송 없이 빠른 전송을 우선시한다. VoIP, 화상 회의, 온라인 게임, DNS 조회 등 지연 시간에 민감한 애플리케이션에 적합하다.

TCP 커널 파라미터 튜닝 예제

고성능 서버 운영 시 TCP 스택의 성능을 최적화하기 위해 커널 파라미터를 조정할 수 있다.

# 설정 백업
sysctl -a > sysctl-backup-$(date +%Y%m%d).conf

# 최적화 설정 추가
cat >>/etc/sysctl.conf <<'EOF'
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 2000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_orphans = 16384
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
EOF

# 적용 명령
sysctl -p

이 설정들은 TIME-WAIT 상태 감소, SYN 공격 방어, 포트 재사용 향상, 연결 처리 용량 증가 등을 통해 고부하 환경에서의 안정성을 강화한다.

IPv4 주소 체계 및 서브넷 마스크

IPv4 주소는 네트워크 ID와 호스트 ID로 구성되며, CIDR 표기법(IP/MASK 비트 수)으로 표현된다. 예: 10.0.0.31/24는 앞 24비트가 네트워크 부분, 나머지 8비트가 호스트 부분이다.

사설 IP 대역:

  • 10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)
  • 172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)
  • 192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)

특별 주소:

  • 0.0.0.0: 기본 라우트 또는 알 수 없는 주소
  • 127.0.0.1: 루프백 인터페이스
  • *.*.*.0: 네트워크 주소
  • *.*.*.255: 브로드캐스트 주소

네트워크 진단 도구 활용 사례

공격 감지 및 트래픽 분석을 위한 명령어 조합 예시:

# 1. iftop으로 실시간 트래픽 모니터링
iftop -i ens160

# 2. 특정 호스트의 ICMP 공격 차단 (iptables)
iptables -A INPUT -s 10.0.0.31 -p icmp -j REJECT

# 3. tcpdump로 패킷 분석 (차단 후 응답 확인)
tcpdump -i any -nn 'icmp' &
ping 10.0.0.31

패킷 캡처 결과에서 목적지로부터 "port unreachable" 메시지를 수신하면, 연결은 되지만 접근이 거부됨을 의미한다.

ARP 프로토콜 동작 확인

로컬 네트워크에서 IP 주소를 MAC 주소로 매핑하는 ARP 테이블은 다음 명령어로 확인 가능하다.

ip neighbour show
# 출력 예:
# 10.0.0.1 dev ens160 lladdr 00:50:56:c0:00:08 REACHABLE
# 10.0.0.31 dev ens160 lladdr 00:0c:29:a2:4e:64 STALE

STALE 상태는 이전 캐시가 만료되었음을 나타내며, 다음 통신 시 다시 ARP 요청을 보내게 된다.

리눅스 네트워크 구성 도구

ip 명령어

네트워크 인터페이스, 주소, 라우트를 관리하는 핵심 도구.

# 인터페이스 상태 변경
ip link set ens160 down
ip link set ens160 up

# IP 주소 추가/삭제
ip addr add 10.0.0.201/24 dev ens160 label ens160:1
ip addr del 10.0.0.201/24 dev ens160

# 정적 라우트 설정
ip route add 10.0.0.51 via 10.0.0.2
ip route del 10.0.0.51 via 10.0.0.2

# 라우트 경로 추적
ip route get 8.8.8.8

ss 명령어

현재 소켓 연결 상태를 빠르게 확인할 수 있는 netstat 대체 도구.

# 모든 TCP/UDP 리스닝 포트 확인
ss -tunl

# SSH 관련 연결만 필터링
ss -ntap \| grep sshd

nmcli를 이용한 네트워크 설정 관리

NetworkManager 기반 설정은 설정 파일 수정 후 재적용이 필요하다.

# 간소화된 인터페이스 설정 파일 예
TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.0.0.31
PREFIX=24
GATEWAY=10.0.0.2
DEVICE=ens160
ONBOOT=yes

# 설정 재적용
nmcli connection reload
nmcli connection up ens160

DNS 해석 우선순위 및 설정

호스트 이름 해석 순서는 /etc/hosts → /etc/resolv.conf 순이며, 로컬 파일이 우선한다.

# 로컬 호스트 파일에 정의
echo "10.0.0.41 rocky41.wang.org" >> /etc/hosts
ping rocky41.wang.org

# DNS 서버 비활성화 테스트
sed -i 's/^nameserver/#nameserver/' /etc/resolv.conf
ping www.baidu.com  # 실패

DNS 서버 정보가 없으면 도메인 이름 해석이 불가능해지므로, 외부 연결을 위해서는 유효한 nameserver 항목이 필요하다.

태그: TCP/IP OSI 모델 리눅스 네트워크 iptables nmcli

10월 9일 20:43에 게시됨