cmod.ify

[LINUX] 네트워크 본문

BASIC/LINUX

[LINUX] 네트워크

modifyC 2026. 1. 13. 18:38
728x90
반응형

1. 네트워크 및 TCP/IP 프로토콜 개요

프로토콜 (Protocol) 정의

  • 컴퓨터 간 데이터를 주고받기 위한 통신 규약임.
  • 인터넷 환경에서는 TCP/IP를 표준 프로토콜로 사용함.

TCP/IP 5계층 구조

계층 기능 주요 프로토콜 장비 전송 단위
응용 (Application) 서비스 제공 응용 프로그램 DNS, FTP, SSH, HTTP Gateway Message
전송 (Transport) 데이터 전달 및 흐름 제어 TCP, UDP - Segment
네트워크 (Network) 주소 관리 및 경로 탐색 IP, ICMP Router Packet
링크 (Link) 물리적 장치 제어 및 주소 매핑 ARP Switch Frame
물리 (Physical) 물리적 신호 전송 케이블, 무선 HUB Bit

2. 하드웨어 주소: MAC Address

  • 개념: NIC(네트워크 인터페이스 카드) 제작 시 부여되는 고유한 물리적 주소임.
  • 특징:
    • 하드웨어를 구분하는 식별자 역할을 함.
    • 16진수 12자리로 구성되며 :으로 구분함. (예: 00:0C:29:4F:8B:35)
    • 앞 6자리는 제조사 번호, 뒤 6자리는 일련번호임.
    • 동일 네트워크(LAN) 내 통신 시 필수적인 주소임.

3. 논리적 주소: IP 주소

IPv4 vs IPv6

  • IPv4: 32비트 체계. 8비트씩 4부분으로 나눠 십진수로 표현함. (예: 192.168.100.5)
  • IPv6: IPv4 주소 고갈 문제를 해결하기 위해 등장한 128비트 체계. 16비트씩 끊어 16진수로 표현하고 ::로 구분함.

IP 주소의 구성

  • 네트워크 부분: 어떤 네트워크에 속해 있는지를 나타냄.
  • 호스트 부분: 해당 네트워크 내에서 어떤 컴퓨터인지를 나타냄.

4. 네트워크 범위 설정: NetMask 및 주소

NetMask (Subnet Mask)

  • IP 주소에서 어디까지가 네트워크 부분인지 알려주는 역할임.
  • 표기 방식:
    • 십진수 방식: 255.255.255.0
    • 비트(CIDR) 방식: /24 (앞에서부터 1의 개수)
  • 마스크 비트가 1인 부분이 동일하면 같은 네트워크 대역으로 간주함.

주요 특수 주소

  • Broadcast Address: 네트워크 내 모든 컴퓨터에 데이터를 전송하는 주소. 네트워크 대역의 마지막 주소임. (예: 192.168.0.255/24)
  • Network Address: 해당 네트워크 자체를 가리키는 주소. 네트워크 대역의 첫 번째 주소임. (예: 192.168.0.0/24)

5. 호스트이름 (Hostname) 및 도메인

  • 숫자로 된 IP 주소를 사람이 기억하기 쉬운 문자로 변환한 것임.
  • 구성: 호스트.도메인 형태 (예: www.naver.com에서 www는 호스트, naver.com은 네트워크 도메인임).

6. 포트 번호 (Port Number)

  • 서버 내에서 어떤 서비스(데몬)에 패킷을 전달할지 구분하는 번호임.
  • 표준 포트 확인: cat /etc/services | grep [서비스명]
    • /etc/services 파일에는 국제 표준으로 약속된 Well-known 포트 정보가 저장됨.
    • 개발자가 개별 네트워크 프로그램을 만들 때는 표준 포트를 피해 정의되지 않은 번호를 사용하는 것이 권장됨.

7. 인터넷 연결 필수 설정 항목

인터넷 정상 연결을 위해서는 다음 5가지 주소가 반드시 설정되어야 함.

  1. IP Address: 본인 컴퓨터의 논리적 주소.
  2. Subnet Mask: 네트워크 범위 식별용.
  3. Broadcast Address: 일괄 전송용 주소.
  4. Gateway Address: 외부 네트워크로 나가는 통로(라우터) 주소.
  5. DNS Address: 도메인 이름을 IP로 변환해 주는 서버 주소.

8. 네트워크 관리자 (NetworkManager)

우분투를 포함한 현대 리눅스 시스템에서 네트워크 설정과 제어를 담당하는 핵심 데몬임.

  • 역할: IP 주소 설정, 게이트웨이 및 DNS 관리 등을 수행함.
  • 특징: 기존 유닉스/리눅스의 ifcfg 스크립트 형식을 지원하면서도 통합적인 관리 도구를 제공함.
  • 주요 도구:
    • NetworkManager: 실제 백그라운드에서 동작하는 데몬.
    • nmcli: 명령 기반(CLI) 관리 도구.
    • ip: 네트워크 장치 및 라우팅 설정 도구.
    • nm-connection-editor: GUI 기반 상세 설정 도구.

서비스 관리 (설치 및 활성화)

  • 설치: sudo apt install network-manager
  • 시작: sudo systemctl start NetworkManager
  • 상태 확인: systemctl status NetworkManager
  • 자동 실행 등록: sudo systemctl enable NetworkManager

9. nmcli 명령어 활용

네트워크 관리자를 터미널에서 제어하는 강력한 도구임.

  • 기본 형식: nmcli [옵션] 명령 [서브명령]
  • 주요 서브 명령:
    • general: 전체 상태 확인 및 호스트명 관리.
    • networking: 네트워크 활성화/비활성화 (on/off).
    • connection: 네트워크 연결(프로필) 설정 및 제어.
    • device: 물리적 네트워크 장치(NIC) 상태 관리.

네트워크 상태 확인

  • 전체 상태: nmcli general status
  • 연결성(Connectivity) 값 의미:
    • none: 네트워크 연결 없음.
    • limited: 연결되었으나 인터넷 사용 불가.
    • full: 인터넷 사용 가능한 정상 상태.
    • unknown: 상태 확인 불가.

장치(Device) 관리

  • 장치 요약: nmcli dev status
  • 상세 정보: nmcli dev show [장치명] (MAC 주소, IP 주소 등 확인 가능).

10. ip 명령어 활용

네트워크 인터페이스와 라우팅 테이블을 직접 조작함. (단, 명령어로 설정한 내용은 재부팅 시 초기화되므로 영구 적용을 위해선 설정 파일 수정이 필요함)

  • 기본 형식: ip [옵션] 객체 [서브명령]
  • 주요 객체 및 기능:
    • address (addr): IP 주소 관리 (show, add, del).
    • route: 라우팅 경로 관리.
    • link: 인터페이스 활성/비활성 설정.

정보 조회

  • 전체 조회: ip address show (또는 ip a)
  • 특정 장치 확인: ip address show enp0s3

IP 주소 추가 및 삭제

  • 주소 추가: sudo ip address add [IP/마스크] dev [인터페이스]
    • 예: sudo ip address add 192.168.0.100/24 dev enp0s3
  • 주소 삭제: sudo ip address del [IP/마스크] dev [인터페이스]

11. 네트워크 인터페이스 제어

인터페이스를 논리적으로 켜거나 끌 때 사용함.

  • ip 명령 활용:
    • 활성화: sudo ip link set enp0s3 up
    • 비활성화: sudo ip link set enp0s3 down
  • nmcli 명령 활용:
    • 네트워크 전체 끄기: nmcli net off
    • 네트워크 전체 켜기: nmcli net on

12. 라우팅 테이블과 게이트웨이 주소 관리

게이트웨이(Gateway) 개념

  • 네트워크 간 연결점이 되는 장치로, 보통 라우터라고 부름.
  • 패킷 확인 후 외부 네트워크 행이면 외부로 전송하는 역할.
  • 게이트웨이 설정이 없으면 외부 네트워크(인터넷 등) 접속 불가함.

ip route 명령 활용

  • 라우팅 테이블 확인: ip route show 실행.
    • default: 기본 게이트웨이 의미.
    • proto kernel: 커널이 자동으로 설정한 서브넷 경로.
  • 기본 게이트웨이 추가: sudo ip route add default via [주소] dev [장치명]
  • 경로 삭제: sudo ip route del [네트워크주소]

네트워크 인터페이스 제어 (ip link)

  • 비활성화: sudo ip link set [장치명] down
  • 활성화: sudo ip link set [장치명] up

13. ifconfig를 이용한 인터페이스 관리

  • net-tools 패키지 설치 필요.
  • 기본 사용법: ifconfig [인터페이스] [옵션] [값]
  • 주요 옵션:
    • -a: 전체 인터페이스 출력.
    • up/down: 인터페이스 활성/비활성.
    • netmask, broadcast: 주소 설정.

ifconfig 출력 결과 해석

  • inet: IP 주소.
  • netmask / broadcast: 서브넷 및 브로드캐스트 주소.
  • ether: MAC 주소.
  • RX/TX packets: 부팅 후 수신/송신한 패킷 및 바이트 수.

인터페이스 수동 설정 예시

  • sudo ifconfig enp0s3 192.168.0.101 netmask 255.255.255.0 broadcast 192.168.0.255

14. route 명령을 통한 게이트웨이 관리

  • 라우팅 테이블 항목 의미:
    • Destination: 목적지 네트워크.
    • Gateway: 게이트웨이 주소 (0.0.0.0은 설정 없음).
    • Genmask: 서브넷 마스크.
    • Iface: 연결된 인터페이스.
hapi@basic:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
n.n.n.0    0.0.0.0         255.255.255.0   U     101    0        0 enp0s8
  • 기본 게이트웨이 설정: sudo route add default gw [주소] dev [장치명]

15. DNS(Domain Name Service) 설정

  • 호스트 이름을 IP 주소로 변환하는 역할. 미설정 시 IP로만 접속 가능함.
  • 설정 파일 경로: /etc/resolv.conf (기본값 127.0.0.53은 로컬 스텁 리졸버임).
  • 정보 확인: resolvectl status 명령 사용.
  • DNS 서버 주소 변경: nmcli con mod [장치명] ipv4.dns [DNS주소]
  • DNS 질의 테스트: nslookup [도메인] 명령으로 IP 변환 확인 가능함.

16. Netplan을 이용한 네트워크 설정

개요 및 특징

  • 우분투의 표준 네트워크 설정 관리 도구.
  • /etc/netplan/*.yaml 파일을 통해 네트워크 구성함.
  • YAML 양식: 공백(들여쓰기)으로 계층 구조 정의. 사람 중심적이고 단순한 구조가 특징임.
  • DHCP: IP를 자동으로 할당받는 방식. 관리 편리하나 IP가 바뀔 수 있음.

인터페이스 수동 설정 (고정 IP)

  • 설정 파일 작성 예시 (sudo vi /etc/netplan/01-netcfg.yaml):
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: no
      addresses: [192.168.0.10/24]
      gateway4: 192.168.0.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
  • 테스트 및 적용: sudo netplan try로 검토 후 sudo netplan apply로 즉시 반영함.

17. 시스템 호스트 정보 관리

명령어 활용

  • uname: 시스템 및 하드웨어 정보 출력. -a 옵션으로 모든 정보 확인 가능함.
  • hostname: 현재 시스템 이름 확인 및 일시적 변경.
  • hostnamectl: 호스트 이름을 영구적으로 설정함 (set-hostname 명령 사용).

관련 주요 파일

  • /etc/hostname: 시스템 명칭 저장 파일.
  • /etc/hosts: IP와 도메인을 매핑하는 로컬 DNS 역할. 실제 DNS 조회보다 우선순위가 높음.

/etc/hosts 사용 시 주의사항 (서버 환경)

  • 서버 운영 시 사용 지양 권장함. (DNS 변경 시 반영 안 됨, 일관성 붕괴, 장애 추적 어려움).
  • 허용 케이스: 로컬 개발 환경, 개인 테스트, 긴급 장애 우회용.

18. IP 주소 확인 및 도메인 해석 과정

  1. url 입력 시 /etc/host.conf 조회하여 파일 위치 파악함.
  2. /etc/hosts 파일 내 정보가 있으면 해당 IP 획득함.
  3. 없을 경우 /etc/resolv.conf에 설정된 DNS 서버에 질의하여 결과 받아옴.

19. 네트워크 상태 및 통계 확인

ping (접속 확인)

  • 패킷 왕복 시간(time), 라우터 경유 횟수(TTL) 등 확인 가능함.
  • 응답이 없다고 해서 서버가 죽었다고 단정할 수 없음(보안 설정으로 ICMP 차단 가능성 있음).
  • 주요 지표: 패킷 손실률(Loss), 응답 시간(rtt)의 최소/평균/최대값 등.

netstat (네트워크 상태 출력)

  • 현재 열려 있는 포트와 연결된 소켓 정보 확인 시 사용함.
  • 포트 확인: netstat -an | grep LISTEN 실행.
  • 프로세스 확인: -p 옵션 추가 시 사용 중인 프로그램 PID 출력됨.

ARP (주소 결정 프로토콜)

  • 동일 네트워크 내 시스템의 IP 주소를 물리적 주소(MAC Address)로 변환/확인함.

20. 패킷 캡쳐 (tcpdump)

  • 네트워크 트래픽을 실시간으로 덤프하여 분석함.
  • 주요 옵션:
    • -i: 인터페이스 지정.
    • -X: 패킷 내용을 16진수 및 ASCII로 상세 출력함.
    • -w: 결과를 파일로 저장 (-r로 읽기 가능).
    • port 22: 특정 포트(SSH 등) 패킷만 필터링하여 수집함.
728x90
반응형