mpd + ipf + ipnat

あ〜トラブル多いとネタに困らなくて助かる orz

昨日見れないサイトがあるという事で、mpd + ipfw から mpd + ipf + jpnat に変更すると言っていたがこれもやっぱりなんだかんだでつまずく。
なんか自分思ってたほどコンピュータ使えないんじゃないかとちょっと自信なくすわ…


まずはカーネルオプションが見つからない。 FreeBSD なら今まで /sys/i386/conf/NOTES にいろんなカーネルオプションが記述されていたから、カーネルコンパイルするときにはそこに書いてあることを読んで、いろいろオプションを設定していたんだけど、そこに IPFILTER 系のオプションの記述がない。 一番最初は mpd で NETGRAPH 系のオプションを設定しようとしたときに気がついたんだけど。

まぁいろいろネットを探しまわったらどうやらしらん間にアーキテクチャ共通のオプションは /sys/conf/NOTES に書かれるようになっていた。

自分のノートに 5-Current 入れて使ってたこともあったんだけど、ノートではそれほど複雑なこともしてなかったし、こんな変更があったとままったく知らなかった。

とりあえずそこに改定ある IPFILTER 系のオプションちょこちょこ付け加えて、カーネル再構築したんだけど、option IPFILTER を有効にしたら出来るはずの /dev/ipnat が出来ない。

IPFIREWALL との絡みみかなーと、IPFIREWALLを無効にしたりしてみたんだけど、やっぱりできない。

なんどか再構築してもできないので、kldload ipl.ko で片ずけた。 なんでかな〜
今思ったけど、さいしょから kldload でやっとけば良かったのか… 古い人間だからどうしてもまずカーネルに組み込む事を考えてしまう。

まぁそうやって /dev/ipnat が出来たのを確認して、
perl /usr/src/contrib/ipfilter/mkfilters |grep -v inet6 > ipf.rules
で、ipfilter のルールサンプルつくって、

ipnat.conf に

map ng0 192.168.0.0/24 -> 219.111.20.222/32 proxy port ftp ftp/tcp
map ng0 192.168.0.0/24 -> 219.111.20.222/32 portmap tcp/udp 10000:40000 mssclamp 1414
map ng0 192.168.0.0/24 -> 219.111.20.222/32 mssclamp 1414
map ng0 219.111.20.222/29 -> 0/0 mssclamp 1414

こんなん書いて
ipf -FS -f /etc/ipf.rules
ipnat -C -F -f /usr/loca/etc/mpd/ipnat.conf
で、内部から見れなかったサイトが見れるようになった。

現在は ipfilter でフィルタリングは全くしていない状態なので、ルールは追々構築していく。 ポートフォワードしないとだめなのもいくつかあるしね。


今日の作業はこんなかんじ。
明日は「gmirror を壊した」でお送りします。

いや、どうなるんだろ〜ってことでいらん事したら壊れた…
あーネタに尽きないわ…