2007年7月15日の日記の3番目の記事へのコメント
■SSD/Linuxでiptablesとか
次にnamedの設定.こっちはこっちでzoneファイルで「IN SOA 〜」の後の「(」をうっかり次の行に書いてしまったがために超はまりましたorz.全然別の行って気づかなかったし・・・.namedを「-d 1 -g」とかつけて起動したときに読み込みで問題があるみたいなメッセージが出てたんですが全然気づかなかったのがまた情けない・・・.はまった時間は長いけど,原因が単なるtypoなのでこの辺は手短に.
続いてiptablesでfirewallとNATみたいなものを作る作業.設定自体はまあいつもの通りでいいんですが,ここで一つ問題が.SSD/Linuxは /etc/rc.confに「iptables=YES」とか書いとくとiptablesが起動時に処理されるみたいなナントカBSDみたいな仕掛けになってんですが,その辺を処理するnetstartを見てみると,どうもrc.iptablesが実行された後にdhclientが起動される模様.
これで何がおこるかというと,rc.iptablesの中で,外側の口のIPアドレスを含んだルールを設定できないという問題が生じます(rc.iptablesが呼ばれた時点で外側の口にはまだIPが無いんで)./etc/netstartを書き換えちゃえばいいんですが,何かそれだと次アップデートしたときにすこぶる面倒そう.
というわけで,軽く悩んだ末,iptablesの設定内容の内,外側の口のアドレスを使う方を/etc/rc.iptables.localとして,/etc/network.localから呼ぶようにしてみました.これで一応うまくいった感じ.
最後にdhcpdを上げて,ひとまずルータとしての最低限のところは完成.変なところではまったけど,いくつか勉強になってよかったですわ.この外神田はどうなのかとちょっと思いますがw
そういやいつも思うんですが,ifconfigの出力を加工する以外に,スクリプトでインタフェースについたIPアドレスを知る方法って無いもんですかね.現状↓とか書いてるんですが,見た目がどうにも・・・.あ,いや,sedのIPアドレスチェック部分の最初3つはまとめろよとかそういうのではなくてですね(^^;
ifconfig eth0 | grep "inet addr:" | \ sed -e 's/^.*inet addr:\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\).*$/\1/'
2007年7月15日の日記の3番目の記事へのコメント
[コメントを書く]