Monolog

Goo辞書(英和)で“Monolog”は、
『独白; 独白劇; 独り占めのおしゃべり』
独り言・備忘録を綴るブログ

Static routeの設定。。。

2007-11-25 09:00:00 | サーバ設定(Linux)
Static route(Next hop)の設定

宛先のネットワークによりネクストホップが異なる環境にて利用するため、Static routeの設定をすることにしましたが、CentOS 5では、インターフェイスの再起動時に経路情報が消えてしまうので、起動スクリプトにコマンド(シェルスクリプト)を書くことにしました。

(以下、背景が着色している部分は設定時ログのCopy&Pasteなので、読み飛ばしてください。) 
Static route の設定記録

手順1. 経路追加コマンドを含むシェルスクリプトを作成する。
[root@localhost ~]#                  ↓File名は任意
[root@localhost ~]# vi /etc/sysconfig/network-scripts/setting.route
         (★File名を“IF名.route”とすると手順2が不要となる)
#!/bin/bash  ←(“IF名.route”の場合は、この行は不要)
route add -net 1.1.1.0 netmask 255.255.255.0 gw 192.168.X.201 dev eth0
route add -net 1.1.2.0 netmask 255.255.255.0 gw 192.168.X.202 dev eth0
route add -net 1.1.3.0 netmask 255.255.255.0 gw 192.168.X.203 dev eth0
手順2./etc/init.d/xinetdに手順1で作成したシェルスクリプトを指定する
                         (下のほうの青字部分のように追記する。)
[root@localhost ~]#
[root@localhost ~]# vi /etc/init.d/xinetd
#!/
#!/bin/bash
#
# xinetd        This starts and stops xinetd.
#
# chkconfig: 345 56 50
# description: xinetd is a powerful replacement for inetd.
#   xinetd has access control mechanisms, extensive
#      logging capabilities, the ability to make services
#      available based on time, and can place
#      limits on the number of servers that can be started,
#      among other things.
#
# processname: /usr/sbin/xinetd
# config: /etc/sysconfig/network
# config: /etc/xinetd.conf
# pidfile: /var/run/xinetd.pid

PATH=/sbin:/bin:/usr/bin:/usr/sbin

# Source function library.
. /etc/init.d/functions

# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network

# More config

test -f /etc/sysconfig/xinetd && . /etc/sysconfig/xinetd

# Check that we are root ... so non-root users stop here
[ `id -u` = 0 ] || exit 1

# Check that networking is up.
[ "${NETWORKING}" = "yes" ] || exit 0

[ -f /usr/sbin/xinetd ] || exit 1
[ -f /etc/xinetd.conf ] || exit 1

RETVAL=0

prog="xinetd"

start(){
    echo -n $"Starting $prog: "

# Localization for xinetd is controlled in /etc/synconfig/xinetd
    if [ -z "$XINETD_LANG" -o "$XINETD_LANG" = "none" -o "$XINETD_LANG" = "NONE" ]; then
        unset LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
  else
    LANG="$XINETD_LANG"
    LC_TIME="$XINETD_LANG"
    LC_ALL="$XINETD_LANG"
    LC_MESSAGES="$XINETD_LANG"
    LC_NUMERIC="$XINETD_LANG"
    LC_MONETARY="$XINETD_LANG"
    LC_COLLATE="$XINETD_LANG"
export LANG LC_TIME LC_ALL LC_MESSAGES LC_NUMERIC LC_MONETARY LC_COLLATE
  fi
●手順1でのFile名を“インターフェイス名.route”(eth0.routeなど)しか存在しない場合は、下記青字部分は不要。

  if [ -f /etc/sysconfig/network-scripts/setting.route ]; then
          /etc/sysconfig/network-scripts/setting.route
  fi                  ↑上記は手順1でのFile名を指定


 unset HOME MAIL USER USERNAME
 daemon $prog -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS"
 RETVAL=$?
 echo
 touch /var/lock/subsys/xinetd
 return $RETVAL

stop(){
  echo -n $"Stopping $prog: "
  killproc $prog
  RETVAL=$?
  echo
  rm -f /var/lock/subsys/xinetd
  return $RETVAL
}

reload(){
  echo -n $"Reloading configuration: " 
  killproc $prog -HUP
  RETVAL=$?
  echo
  return $RETVAL
}

restart(){
  stop
  start
}

condrestart(){
    [ -e /var/lock/subsys/xinetd ] && restart
    return 0
}

# See how we were called.
case "$1" in
  start)
 start
 ;;
  stop)
 stop
 ;;
  status)
 status $prog
 ;;
  restart)
 restart
 ;;
  reload)
 reload
 ;;
  condrestart)
 condrestart
 ;;
  *)
 echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}"
 RETVAL=1
esac

exit $RETVAL
[root@localhost ~]#


以上で設定は完了。


念のため設定が正しい事を確認します。


上記設定の確認方法

手順1. /etc/init.d/xinetd restartによるネットワーク再起動前後における経路情報比較
     にて確認する。(サーバの電源On/Off前後で比較しても良い。)
[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway     Genmask       Flags MSS Window irtt Iface
192.168.X.0 *      255.255.255.0 U    0 0     0 eth0
169.254.0.0 *      255.255.0.0  U       0 0         0 eth0
default     192.168.X.1 0.0.0.0    UG      0 0         0 eth0
[root@localhost ~]#
[root@localhost ~]# /etc/init.d/xinetd restart
xinetd を停止中:                                [  OK  ]
xinetd を起動中: SIOCADDRT: File exists
                        [  OK  ]
[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway       Genmask       Flags MSS Window irtt Iface
1.1.2.0   192.168.X.202 255.255.255.0 UG   0 0     0 eth0
1.1.3.0   192.168.X.203 255.255.255.0 UG   0 0     0 eth0
1.1.1.0   192.168.X.201 255.255.255.0 UG   0 0     0 eth0

192.168.X.0 *       255.255.255.0  U   0 0     0 eth0
169.254.0.0 *             255.255.0.0    U      0 0         0 eth0
default     192.168.X.1   0.0.0.0    UG   0 0         0 eth0
[root@localhost ~]#
上記の赤文字の3行が表示されたので、設定が反映された事が確認できた。

今日はマラソンサークルの練習日なので、今から走ってきます。