以前Debianでルーターを作ったことを書いた。iptablesを使って作ったのだが、これが電源を切るとiptablesの設定がクリアされてルーターとして働かなくなってしまう。先日も停電がありそのため電源を切るとiptablesの設定がクリアされてしまい、もう一度コンソールからシェルスクリプトを実行してiptablesを設定し直さなくてはいけない。自分がやるしかない。そこで、起動時にスクリプトを実行するための方法を調べてみた。iptablesについては、ネットワークがつながる前に設定しなくてはならない。そこで
/etc/network/if-pre-up.d/のフォルダの中にシェルスクリプトファイルを入れておくとそれを起動時に実行してくれる。


他にいろいろあって、
シェルスクリプトファイルを実行可能にするには
# chmod 700 iptables_up で実行権をファイルに与えること
それとファイル名には.があると実行できないこと。(だからiptables_up.shでは実行できない。)
Webを調べるとこれはいろいろだったが、自分のdebianでは「.sh」がついているとうまくいかなかった。
DebianGNU/Linux徹底入門第3版(武藤健志さん著)には、P.345(9.3ネットワークに接続する)に「ファイル名に(.ピリオド)の含むものは無視されます。・・・」とあって/etc/network/if-pre-up.d/とか/etc/network/if-post-down.d/とかにはピリオドがあるとそのファイルは無視されることが書いてありました。


その他に自分でやってみたところ
./をファイル名に付けると
# ./iptables_up.shとすると実行できること
これは、パスがはっきりするので実行できるとのこと


フルパスで指定すると実行できる。
# /etc/network/if-pre-up.d/iptables.shでも実行できた。


これで、ログオンしなくてもサーバーの電源を入れただけでルーターとして動くようになった。