📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 05편
이전 글: 04. Client와 Server · 다음 글: 06. MAC Address란 무엇인가
NIC(Network Interface Card, 네트워크 인터페이스 카드) 는 컴퓨터를 네트워크 매체에 연결하는 하드웨어입니다. 유선 랜카드, 무선 랜카드, 서버 메인보드에 내장된 랜 포트가 모두 NIC입니다.
네트워크 인터페이스(Network Interface) 는 OS가 네트워크 연결 지점을 다루기 위해 만든 논리적 단위입니다. 물리 NIC 하나가 인터페이스 하나로 보이는 경우가 많지만, 물리 장치가 없는 가상 인터페이스도 많습니다.
| 구분 | NIC | 네트워크 인터페이스 |
|---|---|---|
| 성격 | 물리 하드웨어 | OS 안의 논리 객체 |
| 식별 | 제조 시 부여된 MAC 주소, 드라이버 | 이름(ens33, eth0, lo), 인덱스 번호 |
| 설정 대상 | 속도·듀플렉스, 오프로딩 기능 | IP 주소, MTU, 상태(UP/DOWN), 라우팅 |
| 예 | Intel·Realtek 랜카드, 가상머신의 가상 NIC | lo, ens33, wlp2s0, docker0, tun0 |
NIC는 전선 위의 신호와 OS의 데이터 사이를 오가는 번역기 역할을 합니다. 수신 과정을 따라가 보면 다음과 같습니다.
[케이블/전파의 신호]
↓ ① NIC: 신호를 비트로 변환, 프레임 경계 인식
↓ ② NIC: FCS(오류 검사) 확인 → 깨진 프레임은 폐기
↓ ③ NIC: 목적지 MAC 확인
│ ├ 내 MAC / 브로드캐스트 / 가입한 멀티캐스트 → 수신
│ └ 그 외 → 폐기 (Promiscuous 모드면 모두 수신)
↓ ④ 드라이버 → 커널 네트워크 스택으로 전달
↓ ⑤ 인터페이스(ens33) 기준으로 IP·TCP/UDP 처리
[애플리케이션]
송신은 이 과정의 반대입니다. 커널이 만든 프레임을 NIC가 신호로 바꿔 내보냅니다. 패킷 캡처 도구(tcpdump, Wireshark)는 ④ 지점 부근에서 사본을 받아 보여 줍니다. 캡처 위치에 대한 자세한 설명은 103. 패킷 캡처 원리 — NIC·Promiscuous 모드·미러링(03 영역)에서 다룹니다.
① Linux 인터페이스 이름에는 규칙이 있습니다. 최신 배포판(Rocky, Ubuntu)은 systemd의 "예측 가능한 인터페이스 이름"을 사용합니다.
| 이름 예 | 의미 |
|---|---|
lo | 루프백, 자기 자신과 통신 (127.0.0.1) |
eno1 | 메인보드 내장(onboard) 이더넷 1번 |
ens33 | PCIe 핫플러그 슬롯 번호 기반 이더넷 (VMware에서 흔함) |
enp0s3 | PCI 버스 0, 슬롯 3의 이더넷 (VirtualBox에서 흔함) |
wlp2s0 | 무선 LAN(wl) |
eth0 | 예전 방식 이름, 컨테이너·일부 클라우드에서 여전히 사용 |
docker0, virbr0, br0 | 소프트웨어 브리지(가상) |
tun0, wg0 | VPN 터널(가상) |
② 하나의 인터페이스에 여러 IP를, 여러 인터페이스를 하나로 묶을 수도 있습니다. VLAN 하위 인터페이스(ens33.10), 본딩/팀(bond0) 등이 그 예입니다.
③ Promiscuous 모드에서는 NIC가 목적지 MAC과 상관없이 들어온 모든 프레임을 커널로 올립니다. IDS 센서처럼 미러링(SPAN)된 트래픽을 받는 인터페이스는 이 모드로 동작합니다.
④ 오프로딩(Offloading) 은 체크섬 계산·세그먼트 분할 같은 작업을 CPU 대신 NIC가 처리하는 기능입니다. 송신 호스트에서 캡처하면 NIC가 나중에 채울 체크섬이 비어 있거나, MTU보다 큰 패킷이 보이는 현상이 생길 수 있습니다.
실습 예시 — Rocky Linux / Ubuntu 공통
# 예시(값은 환경마다 다름)
ip -br link # 인터페이스 이름, 상태, MAC
ip -s link show ens33 # 송수신 바이트·패킷·오류·드롭 통계
# 출력 형식 예시(값은 환경마다 다름)
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33 UP 00:0c:29:3a:4b:5c <BROADCAST,MULTICAST,UP,LOWER_UP>
docker0 DOWN 02:42:1f:2e:3d:4c <NO-CARRIER,BROADCAST,MULTICAST,UP>
NIC 드라이버와 오프로딩 상태는 ethtool로 봅니다. 설치 명령만 다릅니다.
# Rocky Linux
sudo dnf install -y ethtool
# Ubuntu
sudo apt install -y ethtool
ethtool -i ens33 # 드라이버 이름·버전 (예시: e1000, vmxnet3)
ethtool -k ens33 | grep offload # 오프로딩 기능 켜짐/꺼짐
배포판별 관리 도구는 Rocky의 nmcli device status, Ubuntu의 networkctl list(systemd-networkd 사용 시)로 인터페이스 관리 상태를 확인할 수 있습니다. Windows에서는 ipconfig /all의 "물리적 주소"와 "설명" 항목이 NIC 정보입니다.
device ens33 entered promiscuous mode 형태의 메시지를 커널 로그에 남기며, ip link 출력의 플래그에 PROMISC가 표시됩니다.tun0)이나 브리지는 경계 방화벽을 거치지 않는 통로가 될 수 있습니다.| 확인 대상 | 흔적이 남는 곳 | 관제자의 질문 |
|---|---|---|
| Promiscuous 모드 전환 | 커널 로그(journald, /var/log/messages 또는 /var/log/syslog), EDR | 이 호스트가 센서 역할인가? 누가 언제 캡처 도구를 실행했는가? |
| 새 가상 인터페이스 생성 | 커널 로그, NetworkManager 로그, EDR | 승인된 VPN·컨테이너 구성인가? |
| 인터페이스 오류·드롭 증가 | SNMP 카운터, 모니터링 시스템 | 장애인가, 트래픽 급증인가? |
| 센서 인터페이스 상태 | IDS 센서 통계(수신량, 드롭률) | 센서가 실제로 트래픽을 다 보고 있는가? |
⚠️ 오탐 주의: 송신 호스트에서 직접 캡처한 파일에 "체크섬 오류"나 MTU를 넘는 큰 패킷이 보이면, 공격이나 장애로 단정하기 전에 오프로딩 영향을 먼저 의심해야 합니다. Wireshark의 체크섬 검증 옵션도 이 때문에 기본적으로 꺼져 있는 항목이 많습니다. 또한 IDS 센서 인터페이스의 드롭률이 높으면 "탐지가 없음"이 "공격이 없음"을 의미하지 않습니다.
eno, ens, enp, wlp)은 장치 위치 기반 규칙을 따릅니다.