오토에버 클라우드 2기 18일차
네트워크
IP주소
역할: 네트워크 상에서 호스트(컴퓨터, 라우터, 스마트폰 등)를 식별하는 논리적 주소
- IPv4
- 32비트(4바이트)로 구성
- 8비트씩 점(.)으로 구분하여 십진수 표기: 0.0.0.0 ~ 255.255.255.255
- 클래스풀(Classful)·클래스리스(Classless) 표기: 전통적 클래스 A/B/C 구분(더 이상 잘 쓰이지 않음)
- IPv6
- 128비트(16바이트)
- 16비트씩 콜론(:)으로 구분하여 16진수 표기
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334
도메인(Domain Name)과 DNS
도메인: 사람이 기억하기 쉬운 호스트 이름 예: www.example.com
DNS(Domain Name System): 도메인 ↔ IP 주소 변환(“해석”)을 담당하는 분산 데이터베이스 /etc/resolv.conf에 지정된 DNS 서버에 질의
서브넷 마스크(Subnet Mask)
역할: IP 주소에서 “네트워크 부분”과 “호스트 부분”을 구분
- 네트워크 비트: 같은 네트워크(서브넷)에 속한 호스트들을 식별하기 위해 고정된 비트
- 호스트 비트: 서브넷 내 개별 호스트(장치)를 구별하기 위해 남겨둔 가변 비트 표기 점-십진수: 255.255.255.0 또는 CIDR(Classless Inter-Domain Routing): /24
계산법 255.255.255.0 = 이진 11111111.11111111.11111111.00000000
앞의 24비트가 네트워크, 뒤 8비트가 호스트
| CIDR 프리픽스 | 네트워크 비트 수 | 호스트 비트 수 | 할당 가능 호스트 수 (2ⁿ–2) |
|---|---|---|---|
| /16 | 16 | 16 | 65,534 |
| /24 | 24 | 8 | 254 |
| /28 | 28 | 4 | 14 |
브로드캐스트 주소
역할: 동일 서브넷 내 모든 호스트에 패킷을 보내는 특수 주소
계산: 네트워크 주소: 192.168.0.0/24 → 192.168.0.0 호스트 비트를 모두 1로 채운 브로드캐스트: 192.168.0.255
주의:192.168.0.0 (네트워크 주소)와 192.168.0.255 (브로드캐스트)는 직접 할당 불가 사용 가능한 호스트: 192.168.0.1 ~ 192.168.0.254
기본 게이트웨이(Default Gateway)
역할: 서브넷 외부의 목적지로 패킷을 보낼 때 출구가 되는 라우터 주소
1
2
3
ip route show # “default via 192.168.0.1 dev enp0s3” 형태로 표시
netstat -rn # legacy: 라우팅 테이블 확인
route -n # 동일
수동설정
1
sudo ip route add default via <게이트웨이 IP> dev <인터페이스>
NetworkManager를 쓸 때
1
2
nmcli connection modify <프로필명> ipv4.gateway 192.168.0.1
nmcli connection up <프로필명>
포트번호(Port Number)
역할: 하나의 호스트 내에서 애플리케이션(TCP/UDP 서비스)
식별 범위: 0 ~ 65535
0~1023: Well-known ports (HTTP 80, HTTPS 443, SSH 22…)
1024~49151: 등록된 포트
49152~65535: 동적·프라이빗 포트
통신 방식
| 방식 | 설명 |
|---|---|
| Unicast | 단일 송신자 → 단일 수신자 (기본) |
| Broadcast | 단일 송신자 → 서브넷 내 모든 호스트 |
| Multicast | 단일 송신자 → 특정 그룹(멀티캐스트 그룹)의 호스트들 |
리눅스 네트워크 설정 도구
NetworkManager
- 우분투 기본 네트워킹 서비스 데몬
- GUI(nm-connection-editor), CLI(nmcli)로 프로필 관리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 전체 연결(프로필) 리스트
nmcli connection show
# 활성화된 장치 상태
nmcli device status
# 프로필 생성: 고정 IP 할당 예
nmcli connection add type ethernet ifname enp0s3 con-name static1 \
ipv4.addresses 192.168.1.20/24 ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
# 기존 프로필 수정: DNS 추가
nmcli connection modify static1 ipv4.dns "1.1.1.1"
# 프로필 적용
nmcli connection up static1
ip 명령
1
2
3
4
5
6
7
8
9
10
11
12
13
# 주소관리
ip addr show # 모든 인터페이스의 IP 확인
ip addr add 192.168.1.20/24 dev enp0s3 # IP 할당
ip addr del 192.168.1.20/24 dev enp0s3 # IP 해제
# 링크 관리
ip link show # 인터페이스 상태 확인
ip link set enp0s3 up/down # 인터페이스 활성/비활성
# 라우팅 관리
ip route show # 라우팅 테이블
ip route add default via 192.168.0.1 dev enp0s3
ip route del default
ping명령어
ping 은 네트워크 상의 대상(host)이 응답 가능한지, 왕복 지연 시간(latency)이 얼마인지 등을 확인하는 유틸리티
1
ping [옵션] <대상 IP 또는 도메인>
| 옵션 | 설명 |
|---|---|
-c <개수> | 전송할 ICMP 패킷 수 지정 (예: -c 5 → 5개만 전송 후 종료) |
-i <초> | 패킷 전송 간격 지정 (초 단위, 기본 1초; root 권한 시 0.2초 가능) |
-s <바이트> | ICMP 페이로드 크기 지정 (기본 56바이트 → 총 64바이트 전송) |
-W <초> | 각 응답별 timeout 지정 (초 단위; Linux에서는 소문자 사용) |
-t <TTL> | IP 패킷의 TTL(Time To Live) 값 지정 |
-q | 간략 모드(quiet): 통계(summary)만 출력 |
-f | 플러드(flood): 가능한 한 빠르게 전송 (root 권한 필요) |
-D | 각 응답에 타임스탬프 표시 |
netstat명령어
- 네트워크 연결 상태 확인: 현재 열려 있는 TCP/UDP 포트와 연결 정보
- 라우팅 테이블 조회: 시스템이 목적지까지 패킷을 어떻게 라우팅하는지 확인
- 인터페이스 통계: 각 네트워크 인터페이스별 송수신 패킷 수, 에러 등
| 옵션 | 설명 |
|---|---|
-t | TCP 소켓만 표시 |
-u | UDP 소켓만 표시 |
-l | LISTEN 상태(수신 대기 중) 소켓만 표시 |
-n | 주소/포트를 숫자(IP+포트번호)로만 표시 |
-a | 모든 소켓(연결된/리스닝 중인) 표시 |
-p | 소켓을 연 프로세스(PID/프로그램 이름) 표시 |
-r | 라우팅 테이블 표시 |
-i | 인터페이스별 통계(패킷, 에러 등) 표시 |
1
2
3
4
5
6
7
8
9
10
11
# 모든 TCP/UDP 소켓과 프로세스 표시
sudo netstat -tulnap
# LISTEN 중인 TCP 포트만 숫자 형태로
netstat -tnl | grep LISTEN
# 라우팅 테이블 확인
netstat -rn
# 인터페이스별 통계
netstat -i
ARP
- ARP(Address Resolution Protocol) 테이블 조회/관리: IP 주소 ↔ MAC 주소 매핑 상태를 확인
- 로컬 서브넷 이웃 확인: 같은 네트워크 내 호스트들이 어떤 MAC을 가지고 있는지 본다
- 네트워크 문제 진단: MAC 주소 충돌, ARP 스푸핑 의심, 이웃 응답 여부 등을 점검
1 2 3
ip neigh show ip neigh flush 192.168.0.10 ip neigh add 192.168.0.20 lladdr aa:bb:cc:dd:ee:ff dev eth0
tcpdump
- 패킷 캡처 및 분석: 네트워크를 오가는 실제 패킷을 확인해 문제 원인 파악
- 프로토콜 디버깅: DNS, HTTP, ARP, ICMP 등 특정 트래픽을 추적
- 보안 모니터링: 의심스러운 트래픽, 포트 스캔, DoS 등을 탐지
| 옵션 | 설명 |
|---|---|
-i <iface> | 캡처할 네트워크 인터페이스 지정 |
-c <개수> | 캡처할 패킷 수 지정 후 자동 종료 |
-n | 호스트·포트 숫자 형태로만 표시 |
-nn | 호스트·포트뿐 아니라 프로토콜 번호까지 숫자로 표시 |
-s <크기> | 캡처할 페이로드 최대 크기 지정 (기본 262144바이트) |
-w <파일> | 캡처 결과를 파일(PCAP)로 저장 |
-r <파일> | 저장된 PCAP 파일 읽기 |
-X | 패킷의 헥사·ASCII 덤프 표시 |
-vv / -vvv | 출력 레벨 증가(더 자세한 헤더·옵션 정보) |
port <번호> | 특정 포트 필터링 (tcpdump 필터 언어) |
host <IP> | 특정 호스트 IP만 캡처 |
tcp / udp | 특정 프로토콜만 캡처 |
SSH VS Telnet
- SSH는 데이터 기밀성·무결성을 모두 보장하며, 포트 포워딩 등 고급 기능을 제공
- Telnet은 암호화가 없어 보안상 위험하므로, 내부망의 레거시 장비 용도가 아니면 사용을 자제
| 구분 | SSH (Secure Shell) | Telnet |
|---|---|---|
| 포트 번호 | TCP 22 | TCP 23 |
| 암호화 | 전 구간 암호화 (대칭·비대칭 암호화 사용) | 평문 전송 (암호화 없음) |
| 인증 방식 | 공개키 인증(Public Key) 및 비밀번호 인증 | 비밀번호 인증만 |
| 보안성 | 매우 높음 (중간자 공격, 도청 방지) | 매우 낮음 (비밀번호·데이터 도청 위험) |
| 무결성 | 메시지 무결성 검증 (MAC) 지원 | 무결성 검증 기능 없음 |
| 포워딩 기능 | 포트 포워딩, X11 포워딩, SOCKS 프록시 지원 | 포워딩 기능 없음 |
| 호환성 | 대부분의 현대 서버/클라이언트 지원 | 구형 시스템에서만 사용 권장 |
| 성능 | 암호화 오버헤드로 약간 느림 | 암호화 없음으로 빠름 |
| 사용 사례 | 원격 서버 관리, 자동화 스크립트, 파일 전송 | 레거시 장비 접속, 암호화 불필요 환경 |
| 프로토콜 | 자체 바이너리 프로토콜 | 텍스트 기반 프로토콜 |
| 파일 전송 | SFTP, SCP 등 내장 | 별도 도구 필요 (FTP, RCP 등) |
| 접속 제어 | IP/사용자별 키 관리, 다양한 설정 가능 | 제한적 (호스트 접근제어 only) |