shioyakitaroのブログ

主にオラクルDBやLinuxについて調べたことを書いてます。

ifup後に静的ルーティングの設定が反映されない原因調査

久しぶりの更新。今回はifup時の静的ルーティング設定について書く。

背景

/etc/sysconfig/static-routesファイルに静的ルーティングの記述があっても
ifdown / ifupをすると静的ルーティングの設定が反映されない

環境:Oracle Linux Server release 6.9

原因

static-routesファイルの設定を反映させるには
ifup後にnetwork restartを実施する or OS再起動が必要だった。
つまりifupの際にstatic-routesファイルは読み込まれない。


なお、Oracle Linuxのドキュメントではroutes-デバイス名ファイルに記載するよう書かれていた。
https://docs.oracle.com/cd/E37670_01/E41138/html/ch11s07.html


To permanently configure static routes, you can configure them by creating a route-interface file in/etc/sysconfig/network-scripts for the interface.



このroutes-デバイス名ファイルに記載するとifup後に設定が反映される。

なお、network restartでstatic-routesファイルが反映されるのはnetworkコマンドの中身を見れば一目瞭然。

root# cat network | grep static
	# Add non interface-specific static-routes.
	if [ -f /etc/sysconfig/static-routes ]; then
	   grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
	# Add non interface-specific static arp entries.
root#

過去にifup/ifdownとifconfig up / ifconfig downコマンドの挙動の違いに驚いたことがあったが、またしてもifup/ifdownコマンドの挙動について知見を深めることができた。