WIPIVERSE

route (명령어)

route는 유닉스(Unix), 리눅스(Linux), 마이크로소프트 윈도우(Microsoft Windows), IBM OS/2, ReactOS 등 여러 운영체제에서 IP 라우팅 테이블(routing table)을 표시하거나 조작하기 위해 사용되는 명령어이다. 라우팅 테이블은 시스템이 네트워크 패킷을 어떤 경로로 전달할지 결정하는 데 사용되는 데이터 구조로, route 명령어는 이를 수동으로 확인하고 추가·삭제·변경하는 기능을 제공한다.

개요

route 명령어의 주요 기능은 크게 두 가지로 나뉜다. 첫째, 옵션 없이 실행하면 현재 커널의 IP 라우팅 테이블 내용을 출력한다. 둘째, add 또는 del 옵션을 사용하여 라우팅 테이블을 수정(경로 추가 또는 삭제)할 수 있다. 이러한 수동 조작은 정적 라우팅(static routing)의 특징에 해당한다.

리눅스에서의 사용

리눅스에서 route 명령어는 /sbin/route 경로에 위치하며, net-tools 패키지에 포함되어 있다. 기본적인 사용법은 다음과 같다.

라우팅 테이블 조회

route
route -n

-n 옵션을 사용하면 호스트 이름 대신 IP 주소를 숫자 그대로 출력하여, 네임 서버(name server) 경로에 문제가 있을 때에도 확인이 가능하다.

출력 항목은 다음과 같은 열(column)로 구성된다:

  • Destination: 목적지 네트워크 또는 호스트 주소
  • Gateway: 게이트웨이 주소 (설정되지 않은 경우 *)
  • Genmask: 목적지 네트워크의 넷마스크 (호스트는 255.255.255.255, 기본 경로는 0.0.0.0)
  • Flags: 경로 상태 플래그. U(경로 활성), H(목적지가 호스트), G(게이트웨이 사용), !(거부 경로) 등
  • Metric: 목적지까지의 거리(홉 수)
  • Ref: 해당 경로에 대한 참조 수 (리눅스 커널에서는 사용되지 않음)
  • Use: 경로 조회 횟수
  • Iface: 패킷을 보낼 네트워크 인터페이스

경로 추가

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0
route add default gw 192.168.1.1

-net은 대상이 네트워크임을, -host는 대상이 호스트임을 지정한다. gw는 게이트웨이 주소, dev는 사용할 인터페이스를 지정한다. default는 기본 경로(0.0.0.0/0)를 의미한다.

경로 삭제

route del -net 192.168.1.0 netmask 255.255.255.0
route del default

주요 옵션

  • -A family: 주소 체계 지정 (예: inet은 IPv4, inet6은 IPv6)
  • -F: 커널의 FIB(Forwarding Information Base) 라우팅 테이블 대상 (기본값)
  • -C: 커널의 라우팅 캐시 대상
  • -v: 상세(verbose) 출력
  • -e: netstat 형식으로 출력
  • netmask Nm: 네트워크 경로 추가 시 사용할 넷마스크
  • metric N: 라우팅 테이블의 메트릭 필드 설정 (값이 낮을수록 우선순위 높음)
  • reject: 차단 경로 설치 (방화벽 목적이 아닌 경로 검색 실패 유도)
  • mss M: 해당 경로의 MTU(최대 전송 단위) 설정
  • window W: TCP 윈도우 크기 설정
  • irtt I: 초기 왕복 시간(RTT) 설정

윈도우에서의 사용

윈도우에서 route 명령어는 TCP/IP 프로토콜이 네트워크 어댑터 속성에 구성 요소로 설치된 경우에만 사용 가능하다. 구문은 다음과 같다.

route [-f] [-p] [-4|-6] command [destination] [mask netmask] [gateway] [metric metric] [if interface]
  • -f: 라우팅 테이블 초기화
  • -p: add 명령과 함께 사용 시 경로를 영구적으로 추가(레지스트리에 저장)
  • -4 / -6: IPv4 또는 IPv6 강제 사용
  • command: add, delete, change, print 등

역사 및 현황

리눅스용 route 명령어는 Fred N. van Kempen이 최초로 작성하였고, 이후 Johannes Stille와 Linus Torvalds가 수정하였으며, Alan Cox가 mss 및 window 옵션을 추가하였다. 2.2.x 리눅스 커널 기반 배포판에서는 ifconfig와 route가 네트워크 연결 및 경로 정의에 함께 사용되었다.

그러나 이후 커널 기반 배포판에서는 ifconfig와 route가 더 이상 사용되지 않으며(deprecated), 이를 대체하여 iproute2 패키지의 ip route 명령어 사용이 권장된다. ip route 명령어는 route와 유사한 기능을 제공하면서도 더 많은 기능과 유연성을 갖추고 있다. 리눅스 매뉴얼 페이지(man page)에서도 "netlink 커널 인터페이스의 도입으로 이 도구는 대부분 ip route 명령어로 대체되었다"고 명시하고 있다.

관련 파일

리눅스에서 라우팅 테이블 정보는 다음 의사 파일 시스템(pseudo filesystem)을 통해서도 확인할 수 있다:

  • /proc/net/route (IPv4 라우팅 테이블)
  • /proc/net/ipv6_route (IPv6 라우팅 테이블)
  • /proc/net/rt_cache (라우팅 캐시)
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기