適切な表題が思い付きませんでした。
現象の概略は、
「iptables で NAT しているマシンが、気が付いたら起動時の ifup を
読まなくなっていた」
です。
マシンは etch です。 bo から延々アップグレードして来たものです。
gyao光で接続しています。
マザー本体の nic の他に natsemi の nic を1枚さして、 NAT させて
います。
起動時に iptables のルールを読み込むように、以下のように設定を
しています。
#----------- /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
pre-up /etc/network/if-pre-up.d/iptables.up
up /etc/network/if-up.d/yahoobb.up
down /etc/network/if-down.d/yahoobb.down
post-down /etc/network/if-post-down.d/iptables.down
auto eth1
iface eth1 inet static
address 192.168.30.1
network 192.168.30.0
netmask 255.255.255.0
broadcast 192.168.30.255
#----------- /etc/network/interfaces ここまで
/etc/network/if-pre-up.d/iptables.up
/etc/network/if-up.d/yahoobb.up
/etc/network/if-down.d/yahoobb.down
/etc/network/if-post-down.d/iptables.down
上記ファイルは sarge 以前より変更なしで運用し続けていました。
# 中身を出すのは、現時点ではご勘弁願います。長いので。
先日のことです。
久しぶりにカーネルソースを落して、 make-kpkg して、再起動を
したところ、以前なら上記 interfaces に従ってルールが読み込ま
れる筈なのに、何故か読み込まれません。
仕方がないので、今は以前 iptables-save していたファイルを
iptables-restore して凌いでいます。
再起動する度に手作業で iptables-restore しなければならず、非
常に面倒です。
ifup / ifdown がなくなったのか? と思ってみたはものの、これら
も相変わらず存在しています。
一体、いつの時点で、何のパッケージの仕様が変って、このような
事態になったのか、皆目検討がつかず、困っています。
何処から手を付けたら良いのでしょうか。
--
松田 陽一(yoh)
mailto:y...@flcl.org
http://www.flcl.org/~yoh/diary/
「MATSUDA Yoh-ichi / 松田陽一」さんの書かれた、
「[debian-users:49689] iptables の仕様変更?」についての返事です。
> 再起動する度に手作業で iptables-restore しなければならず、非
> 常に面倒です。
私は以下のようなことをしていますが、この方法でも読まれないですかね。
# cat /etc/network/if-pre-up.d/iptables_load
#!/bin/sh
[ ! -f /etc/iptables/iptables.save ] && exit
iptables-restore < /etc/iptables/iptables.save
#
----------------------------------------------------------------------
河本陽一(こうもとよういち)
mailto:you...@dd.iij4u.or.jp
At Fri, 2 Nov 2007 21:56:40 +0900,
MATSUDA Yoh-ichi / 松田陽一 wrote:
> 「iptables で NAT しているマシンが、気が付いたら起動時の ifup を
> 読まなくなっていた」
> マシンは etch です。 bo から延々アップグレードして来たものです。
・/etc/network/*.dに置くなら、ifup/ifdownのときに対象になるわけだから、
interfacesに書く意味はない。
・ただ、*.d内のスクリプトはrun-partsを呼ぶので、拡張子が付いていては
いけない(例: run-parts --test /etc/network/if-up.d)。
適宜スクリプトをリネームしたほうがいいのではないか。
・スクリプトの場所と拡張子にこだわりがあり、上記に従うつもりはないという
ことであれば、ifup -n eth0 でスクリプトを呼んでいそうかどうかを確認する。
・各スクリプトの中で「echo "TEST: called up"」のように適当な状況診断
コマンドを入れ、スクリプトが呼ばれていそうかどうかを調べる。
・そもそもスクリプトが正しく動くかを調べる。
--
武藤 健志@ kmuto @ kmuto.jp
Debian/JPプロジェクト (km...@debian.org, km...@debian.or.jp)
株式会社トップスタジオ (km...@topstudio.co.jp)
URI: http://kmuto.jp/ (Debianな話題など)
From: Kenshi Muto <km...@kmuto.jp>
Subject: [debian-users:49691] Re: iptables の仕様変更?
Date: Fri, 2 Nov 2007 23:10:37 +0900
> 武藤@Debianぷろじぇくとです。
アドバイス有難うございます。
結局、
> > /etc/network/if-pre-up.d/iptables.up
> > /etc/network/if-up.d/yahoobb.up
> > /etc/network/if-down.d/yahoobb.down
> > /etc/network/if-post-down.d/iptables.down
>
> ・/etc/network/*.dに置くなら、ifup/ifdownのときに対象になるわけだから、
> interfacesに書く意味はない。
> ・ただ、*.d内のスクリプトはrun-partsを呼ぶので、拡張子が付いていては
> いけない(例: run-parts --test /etc/network/if-up.d)。
> 適宜スクリプトをリネームしたほうがいいのではないか。
スクリプトをリネームしても、起動時に上記シェルスクリプトが呼び出
される表示が出て来たにもかかわらず、ログインプロンプトが出て来る
時点で全てのルールが削除されているのに気付きまして。
ひょっとして、、、と思い、
$ apt-cache search iptables|awk '{print $1}'|xargs dpkg -l
を実行してみたら、 ferm というパッケージが入っていました。
ファイアウォールの設定をどうにかしたいと思って、試しにインストー
ルしたまま、忘れてしまっていたようです。
お騒がせしました。orz
ただ、
> 適宜スクリプトをリネームしたほうがいいのではないか。
これをしたら、どのタイミングなのか判りませんが、スクリプトが多重
実行されてしまい、ルールが4回も重複登録されてしまい、気持ち悪い
ので、結局元に戻してしまいました。
--
日本語spam展示博覧会開催中
http://www.flcl.org/~yoh/spam/jp/