리눅스에서 네트워크 라우팅을 관리하는 것은 시스템 관리자에게 필수적인 기술입니다. ip route 명령어는 iproute2 패키지의 핵심 구성 요소로, 전통적인 route 명령어를 대체하여 더 강력하고 유연한 라우팅 관리 기능을 제공합니다. 이 글에서는 임시 및 영구 라우팅 설정 방법부터 단일 및 다중 인터페이스 환경에서의 차이점까지 상세히 알아보겠습니다.

◎ IP Route 명령어 기본 개념
 - 라우팅 테이블의 이해
  > 라우팅 테이블은 커널에 저장되어 있으며, 네트워크 패킷이 목적지에 도달하기 위해 어떤 경로를 선택할지를 결정하는 핵심 요소입니다. 각 라우팅 엔트리는 목적지 네트워크, 게이트웨이, 인터페이스, 그리고 메트릭 값 등의 정보를 포함합니다.

 - 기본 구문과 옵션
  > ip route 명령어의 기본 구문은 다음과 같습니다:

# ip route [add|del|change|append|replace] destination-address

 

  > 주요 구성 요소는 다음과 같습니다:

  • destination: 목적지 네트워크 주소
  • via: 다음 홉 라우터의 IP 주소
  • dev: 출구 인터페이스
  • metric: 라우트 우선순위

 

◎ 임시 라우팅 설정 방법
 - 기본 라우트 조회
  > 현재 라우팅 테이블을 확인하는 가장 기본적인 명령어입니다:

전체 라우팅 테이블 표시
# ip route show
# ip route  # 축약형

특정 목적지에 대한 라우트 확인
# ip route get 8.8.8.8

 

 - 정적 라우트 추가
  > 단일 호스트에 대한 라우트 추가:

특정 IP 주소에 대한 라우트 추가
# ip route add 192.0.2.1 via 10.0.0.1 dev eth0

 


  > 네트워크에 대한 라우트 추가:

네트워크 대역에 대한 라우트 추가
# ip route add 192.0.2.0/24 via 10.0.0.1 dev eth0

인터페이스만 지정하는 방법
# ip route add 192.168.50.0/24 via 192.168.1.1 dev enp0s3

 

 - 기본 게이트웨이 설정

기본 게이트웨이 추가
# ip route add default via 192.168.1.1 dev eth0

기존 기본 게이트웨이 변경
# ip route replace default via 192.168.1.1 dev eth0

 

 - 라우트 삭제
  > 임시로 추가한 라우트를 제거하는 방법입니다:

특정 네트워크 라우트 삭제
# ip route del 10.0.2.0/24 via 192.168.43.223 dev enp0s3

단일 IP 라우트 삭제
# ip route del 10.0.2.15 via 192.168.43.223 dev enp0s3

기본 게이트웨이 삭제
# ip route del default

 

◎ 영구 라우팅 설정 방법
 - 임시 설정과 달리 영구 설정은 시스템 재부팅 후에도 유지되는 설정입니다. 배포판별로 설정 방법이 다릅니다.

 - Ubuntu/Debian 계열 (Netplan 사용)
  > Ubuntu 18.04 이후 버전에서는 Netplan을 사용합니다:

Netplan 설정 파일 편집
# nano /etc/netplan/50-cloud-init.yaml

 

  > 설정 예시:

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: true
      routes:
        - to: 192.168.50.0/24
          via: 192.168.1.1
        - to: 10.0.0.0/8
          via: 192.168.1.254

 

  > 설정 적용:

설정 확인
# netplan try

설정 적용
# netplan apply

 

 - RHEL/CentOS 계열
  > nmcli 사용 방법
  > 최 RHEL/CentOS 시스템에서는 nmcli를 사용합니다:

연결 이름 확인
# nmcli connection show

정적 라우트 추가
# nmcli connection modify "연결이름" +ipv4.routes "192.168.1.99/32 192.168.1.1"

여러 라우트 추가
# nmcli connection modify "연결이름" +ipv4.routes "10.0.0.0/8 192.168.1.254"

연결 재시작으로 설정 적용
# nmcli connection down "연결이름" && nmcli connection up "연결이름"

 

  > 전통적인 방법 (CentOS 6/7)

인터페이스별 라우트 파일 생성
# nano /etc/sysconfig/network-scripts/route-eth0

 

  > 파일 내용 예시:

CIDR 표기법 사용
192.168.50.0/24 via 192.168.1.1 dev eth0
10.0.0.0/8 via 192.168.1.254 dev eth0

또는 전통적인 방법
GATEWAY0=192.168.1.254
NETMASK0=255.255.255.0
ADDRESS0=192.168.55.0

 

 - 설정 확인 및 검증
  > 영구 설정 후 다음 명령어로 확인합니다:

라우팅 테이블 확인
# ip route show

특정 목적지 테스트
# ping -c 3 192.168.50.1

라우트 추적
# traceroute 192.168.50.1

 

◎ 단일 인터페이스 vs 다중 인터페이스 환경
 - 단일 인터페이스 환경
  > 단일 인터페이스 환경에서는 라우팅 설정이 상대적으로 단순합니다:

기본적인 라우팅 테이블 예시
# ip route
default via 192.168.1.1 dev eth0 proto static metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100

 

특징:

  • 모든 트래픽이 하나의 인터페이스를 통해 처리됩니다
  • 라우트 충돌이 발생할 가능성이 낮습니다
  • 설정과 관리가 간단합니다

 

 - 다중 인터페이스 환경
  > 다중 인터페이스 환경에서는 메트릭 값과 라우트 우선순위가 중요해집니다:

다중 인터페이스 라우팅 테이블 예시
# ip route
default via 192.168.1.1 dev eth0 proto static metric 100
default via 192.168.1.1 dev wlan0 proto static metric 600
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.200 metric 600

 

 - 메트릭 값의 중요성
  > 메트릭 값은 라우트 우선순위를 결정하는 핵심 요소입니다:

  • 낮은 메트릭 값 = 높은 우선순위
  • 이더넷 > WiFi > WWAN 순으로 우선순위 설정
메트릭 값을 포함한 라우트 추가
# ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 metric 100
# ip route add 10.0.0.0/8 via 192.168.1.1 dev wlan0 metric 200

 

 - 정책 기반 라우팅 (Policy-Based Routing)
  > 다중 인터페이스 환경에서는 고급 라우팅 기법이 필요할 수 있습니다:

별도 라우팅 테이블 생성
# echo "100 eth0_table" >> /etc/iproute2/rt_tables
# echo "200 wlan0_table" >> /etc/iproute2/rt_tables

인터페이스별 라우팅 테이블 설정
# ip route add default via 192.168.1.1 dev eth0 table eth0_table
# ip route add default via 192.168.1.1 dev wlan0 table wlan0_table

정책 규칙 추가
# ip rule add from 192.168.1.100 table eth0_table
# ip rule add from 192.168.1.200 table wlan0_table

 

◎ 실무 활용 예제
 - 백업 라우트 설정

주 경로 (낮은 메트릭)
# ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0 metric 10

백업 경로 (높은 메트릭)
# ip route add 10.0.0.0/8 via 192.168.2.1 dev eth1 metric 20

 

 - 특정 서비스를 위한 라우팅

DNS 서버로의 특정 라우트
# ip route add 8.8.8.8/32 via 192.168.1.1 dev eth0

내부 서버로의 라우트
# ip route add 172.16.0.0/16 via 10.0.0.1 dev eth1

 

 - 문제 해결 명령어

라우팅 테이블 상세 정보
# ip route show table all

특정 목적지로의 경로 확인
# ip route get 10.0.0.1

인터페이스별 라우트 확인
# ip route show dev eth0

 

◎ 주의사항 및 모범 사례

 - 임시 vs 영구 설정 선택 기준

  • 임시 설정: 테스트, 긴급 복구, 일시적 우회 시 사용
  • 영구 설정: 운영 환경, 정책적 라우팅, 지속적 서비스 제공 시 사용

 

 - 백업 및 복구

현재 라우팅 테이블 백업
# ip route show > route_backup_$(date +%Y%m%d).txt

긴급 시 기본 게이트웨이 복구
# ip route add default via 192.168.1.1 dev eth0

 

 - 보안 고려사항

  • 라우팅 설정 변경 시 다음 사항을 주의해야 합니다:
  • 네트워크 연결이 끊어질 수 있으므로 신중히 진행
  • 원격 접속 시 대체 접속 경로 확보
  • 변경 전 현재 설정 백업 필수

 

◎ 결론
ip route 명령어는 리눅스 네트워크 관리의 핵심 도구로, 임시 및 영구 라우팅 설정을 통해 효율적인 네트워크 관리가 가능합니다. 단일 인터페이스 환경에서는 단순한 설정으로 충분하지만, 다중 인터페이스 환경에서는 메트릭 관리와 정책 기반 라우팅을 통해 더욱 정교한 네트워크 제어가 필요합니다. 적절한 라우팅 설정을 통해 네트워크 성능 최적화와 안정적인 서비스 제공이 가능하며, 이는 최근 리눅스 시스템 관리에서 필수적인 기술입니다.

+ Recent posts