들어가기
리눅스를 사용하다 보면 결국 네트워크를 마주치게 됩니다.
패키지가 안 내려받아질 때, SSH 접속이 안 될 때, 서비스는 살아 있는데 외부에서 접근이 안 될 때.
대부분 네트워크 설정 문제입니다.
이번 글에서는 RHEL 계열 리눅스에서 네트워크를 관리하는 기본 흐름을 정리합니다.
이론은 꼭 필요한 만큼만 다루고, 실제로 시스템에서 무엇을 확인하고 어떻게 설정하는지에 집중합니다.
IPv4 기초
IPv4 주소란
IPv4 주소는 32비트 주소 체계입니다.
총 개수는 약 43억 개이며, 다음 두 부분으로 나뉩니다.
- Network 부분
- Host 부분
일반적인 /24 네트워크에서는 마지막 옥텟이 호스트 영역입니다.
이때 사용 가능한 호스트 번호는 1부터 254까지입니다.
스페셜 주소
IPv4에는 사용 목적이 정해진 주소가 있습니다.
- 네트워크 주소: 호스트 비트가 모두 0
- 브로드캐스트 주소: 호스트 비트가 모두 1
예를 들어 192.168.1.0/24에서
192.168.1.0→ 네트워크 주소192.168.1.255→ 브로드캐스트 주소
이 두 주소는 호스트에 할당할 수 없습니다.
주소 클래스
과거에는 주소를 클래스 단위로 나누어 사용했습니다.
- Class A / B / C
현재는 거의 사용하지 않고, CIDR(Classless Inter-Domain Routing) 방식이 표준입니다.
/8,/16,/24같은 프리픽스 길이로 네트워크를 표현합니다.
사설 IP와 NAT
사설 IP는 인터넷에서 직접 라우팅되지 않는 주소입니다.
RFC 1918에 정의되어 있으며 다음 세 대역이 있습니다.
10.0.0.0/8172.16.0.0/12192.168.0.0/16
사설 IP는 그대로 인터넷에 나갈 수 없기 때문에 NAT(Network Address Translation) 기술을 사용합니다.
NAT와 NAPT
- NAT: 사설 IP ↔ 공인 IP 변환
- NAPT: IP + 포트 번호까지 함께 변환
가정용 공유기 환경에서 여러 장비가 하나의 공인 IP를 사용하는 이유가 바로 NAPT입니다.
TCP / UDP 기초
TCP
- Connection-oriented
- Reliable
- 순서 보장, 재전송, 흐름 제어
- 기본 헤더 크기: 20바이트
대표적인 서비스:
- SSH
- HTTP/HTTPS
- FTP
UDP
- Connection-less
- Stateless
- Lightweight
- 기본 헤더 크기: 8바이트
대표적인 서비스:
- DNS
- DHCP
- NTP
시스템 서비스 포트 정보
리눅스에는 서비스와 포트 정보가 미리 정의되어 있습니다.
bashcat /etc/services
이 파일은 참고용이며, 실제 포트 사용 여부를 강제하지는 않습니다.
IPv6 개요
IPv4는 주소 고갈 문제가 있습니다.
IPv6는 이를 해결하기 위해 등장했습니다.
- IPv4: 32bit (약 43억 개)
- IPv6: 128bit (사실상 고갈 걱정 없음)
RHEL 계열 리눅스에서는 RHEL 8부터 IPv6가 기본 활성화되어 있습니다.
IPv6 주소 예시
2001:db8::1/322001:0db8:0000:0000:0000:0000:0000:0001/32
축약 표기(::)는 연속된 0을 줄여 쓴 것입니다.
리눅스 네트워크 인터페이스 이름 규칙
과거에는 인터페이스 이름이 단순했습니다.
eth0,eth1
RHEL 7 이후부터는 예측 가능한 네이밍 규칙을 사용합니다.
주요 접두어
en: Ethernetwl: Wireless LANww: Wireless WAN
Ethernet 상세 규칙
eno: 메인보드 내장 NICens: 핫플러그 슬롯 NICenpXsY: PCI 슬롯 기반 NICenx: MAC 주소 기반
이름이 길어졌지만, 하드웨어 위치를 추적하기는 훨씬 쉬워졌습니다.
ethtool 명령어
ethtool은 네트워크 카드의 물리 계층 정보를 확인하는 도구입니다.
bashethtool ens160
확인 가능한 주요 정보는 다음과 같습니다.
- 링크 속도
- 듀플렉스 모드 (Full / Half)
- Auto-negotiation 상태
- 링크 연결 여부
Link detected: yes
→ 케이블 또는 가상 NIC 연결은 정상이라는 의미입니다.
네트워크가 안 된다고 해서 항상 IP 문제는 아닙니다.
물리 계층부터 확인하는 습관이 중요합니다.
IP 주소 확인 명령어
ifconfig
- Deprecated
- 더 이상 권장되지 않음
ip 명령어 체계
리눅스 네트워크 관리는 ip 명령어를 기준으로 생각하면 됩니다.
Layer 2
baship link
- 인터페이스 존재 여부
- UP / DOWN 상태
Layer 3
baship addr
- IP 주소 확인
- 인터페이스에 어떤 주소가 붙어 있는지 확인
Routing Table
baship route
netstat -nr
- 커널 라우팅 테이블 확인
- 기본 게이트웨이 확인
ARP / Neighbor Table
baship neigh
- IP ↔ MAC 매핑 정보
NetworkManager 개요
RHEL 5부터 NetworkManager가 도입되었습니다.
최근 버전에서는 파일 직접 수정 방식이 권장되지 않습니다.
설정 방식
- GUI
nmtui: 메뉴 기반nmcli: 명령어 기반
설정 파일 위치:
plain/etc/NetworkManager/system-connections/
nmcli로 네트워크 설정하기
장치 확인
bashnmcli dev
기존 설정 삭제
bashnmcli connection delete ens160
새 연결 생성
bashnmcli connection add \
type ethernet \
ifname ens160 \
con-name ens160 \
autoconnect yes \
ipv4.method auto
고정 IP 설정
bashnmcli connection modify ens160 \
ipv4.method manual \
ipv4.addresses 192.168.11.33/24 \
ipv4.gateway 192.168.11.2 \
ipv4.dns 192.168.11.2
nmcli con down ens160
nmcli con up ens160
라우팅 테이블 설정
bashnmcli connection modify ens160 ipv4.routes "10.100.1.0/24 192.168.11.2"
nmcli con down ens160
nmcli con up ens160
설정 후에는 반드시 ip route로 반영 여부를 확인합니다.
DNS 관련 파일
/etc/resolv.conf
- DNS 서버 목록 파일
- NetworkManager, DHCP가 자동 관리
- 직접 수정하면 다시 덮어써짐
DNS 변경은 nmcli나 네트워크 설정을 통해 해야 합니다.
/etc/hosts
- 로컬 이름 해석 테이블
- DNS보다 우선순위가 높음
plain192.168.11.10 test-server
테스트나 임시 우회에는 유용하지만, 대규모 환경에는 적합하지 않습니다.
네트워크 진단 도구
dignslookuptracepath
DNS 문제인지, 라우팅 문제인지, 응답이 없는 문제인지를 구분하는 것이 핵심입니다.
VM 복제를 통한 네트워크 실습
네트워크 실습은 여러 대의 머신이 있을수록 이해가 빠릅니다.
VMware 기준 복제 방법은 다음과 같습니다.
- VM 우클릭
- Manage → Clone
- Current state
- Full clone
- 이름 지정
복제된 VM을 이용해 IP 충돌, 라우팅, 통신 테스트를 해보는 것을 권장합니다.
마치면서
네트워크는 한 번에 이해되지 않습니다.
하지만 확인 순서는 정해져 있습니다.
- 링크가 살아 있는가
- IP가 있는가
- 게이트웨이가 있는가
- DNS가 되는가
이 순서만 몸에 익혀도 문제 해결 속도가 크게 달라집니다.