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(라우팅 캐시)