Tag Archives: route

Linux #16 : Static Route Configuration

Linux에서 Static Route를 설정은 “route”를 통해서 가능하다. 또, 아래와 같이 routing 된 Network의 정보를 확인 할 수 있다.

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.37.114.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.37.0.0 10.37.114.1 255.255.0.0 UG 0 0 0 eth0
10.42.0.0 10.37.114.1 255.255.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.37.114.1 0.0.0.0 UG 0 0 0 eth0

기본적인 사용방법은

route add -net [IP Addess Segment] netmask [NetMask Information] gw [Gateway Information]

$ route add -net 10.44.0.0 netmask 255.255.0.0 gw 10.37.114.1

$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.37.114.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.37.0.0 10.37.114.1 255.255.0.0 UG 0 0 0 eth0
10.42.0.0 10.37.114.1 255.255.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
10.44.0.0 10.37.114.1 255.255.0.0 UG 0 0 0 eth0
0.0.0.0 10.37.114.1 0.0.0.0 UG 0 0 0 eth0

add option을 통해서 10.44.0.0/255.255.0.0가 Gateway 10.37.114.1로 추가 된 것을 확인 할 수 있다.
삭제를 할 경우는 add 대신 del을 사용하면 된다.

route del -net [IP Addess Segment] netmask [NetMask Information] gw [Gateway Information]

$ route del -net 10.44.0.0 netmask 255.255.0.0 gw 10.37.114.1

그런데, 여기서 Server가 부팅이 될 때 자동으로 Static route를 추가한다고 생각해 보자. 그럼, 보통 /etc/rc.local 과 같은 기동시 자동으로 동작하도록 설정을 하거나 하는데, 이럴 경우는 “/etc/init.d/network restart”에 의해 Network가 재기동 될 때는 개별적으로 추가를 해 줘야 한다.
이런 경우 “/etc/sysconfig/static-routes”라는 file을 생성하여 아래와 같이 정보를 입력 해 주시면 Network만 재기동 할 시에도 자동으로 Static Route가 설정 되게 된다. 입력 방법은 아래와 같다.

$ more /etc/sysconfig/static-routes
any net 10.37.0.0/16 gw 10.37.114.1
any net 10.42.0.0/16 gw 10.37.114.1

이 방법이 유용한 것은 Rebooting시에 Static Route을 설정 하고, Online 상태에서 Network 재기동 했을 시 혹시 Static Route를 추가 하는 작업을 잊어 버렸을 때 발생 할 수 있는 문제점을 없애주는 것이다. 인간은 망각의 동물이라.. 필자도 가끔 잊어 버리곤 해서 뒤늦게 문제점을 발견하고 추가를 했던 경우가 간혹 있었다.
또한, 관리하는 서버가 많다보니 매번 똑같은 걸 입력하기 싫어서 아래와 같이 Scripts를 만들었다.

$ more config-static-routes
#!/bin/sh
GATEWAY=`/sbin/ifconfig eth0 | grep "inet addr:" | awk '{print $2};' | awk -F ":" '{print $2};' | awk -F "." '{print $1"."$2"."$3"."1};'`
Printmsg "INFO" "Add route : net 10.37.0.16 gw $GATEWAY"
echo "any net 10.37.0.0/16 gw $GATEWAY" > /etc/sysconfig/static-routes
Printmsg "INFO" "Add route : net 10.42.0.16 gw $GATEWAY"
echo "any net 10.42.0.0/16 gw $GATEWAY" >> /etc/sysconfig/static-routes

간단한거지만, 매번 같은 서버를 구축 할 때 유용하게 사용하고 있다.