2008-07-26

dnscache returns

やはり、もひとつdnscacheを動かしてしまった。ただし、外部インターフェイスではなくloopbackにaliasを付け、pfでリダイレクトする。

# dnscache-conf Gdnscache Gdnslog ${DNSCACHE_EXT} 127.0.0.2
# touch ${DNSCACHE_EXT}/servers/ip/[プライベートLANネットアドレス]
# echo 'ifconfig_lo0_alias0="inet 127.0.0.2 netmask 0xffffffff"' >> /etc/rc.conf
# ifconfig lo0 inet 127.0.0.2 netmask 0xffffffff alias

pf.confも変更。

rdr on $ext_if inet proto { udp, tcp } from <nats> to any port domain -> 127.0.0.2 port domain

ちょっとすっきり。

$ dig +short -t txt porttest.dns-oarc.net @127.0.0.2
 z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"[kamui] is GOOD: 26 queries in 3.0 seconds from 26 ports with std dev 17069.11"
$ netstat -f inet -a | grep domain
tcp4       0      0  localhost.domain       *.*                    LISTEN
tcp4       0      0  127.0.0.2.domain       *.*                    LISTEN
tcp4       0      0  kamui.domain           *.*                    LISTEN
udp4       0      0  localhost.domain       *.*                    
udp4       0      0  127.0.0.2.domain       *.*                    
udp4       0      0  kamui.domain           *.*                    

あたりまえだけど、127.0.0.2って名前が付いてないんだなぁ。

追記

localhostとloopback, lo0の表記が入れ乱れてたので統一してみた。ついでに、titleを差し替え。

DNS cache poisoning rhapsody

うちでは未だにDJBのtinydnsを使ってて、リゾルバは各マシンのloopbackで動かしてるdnscacheなので、今回の騒ぎは他人事だと思ってた。

が、よくよく考えると、プライベートなLANにいる連中のことを失念してた。

  • Mac miniでは、Mac OS Xに付随のBIND 9.4.1-P1をフルリゾルバとして使ってる。
  • ThinkPad群は、プロバイダのフルリゾルバをrtx1000経由で使ってる。

相変わらずAppleは、この手の対応はまったくもって遅い。まぁ、ユーザーランドがFreeBSDベースだからって、付随のBINDを使ってるヤツがいるなんて思ってもいなさそうだ。

YAMAHAも問題か。説明文書も一週遅かったし、なんにせよ未だにsource portをランダム化するファームすら出てきていない。

さてどうするか。

個々のマシンに最新のBINDを入れる?

リゾルバは共有したりせず、各ホスト専用のを各ホストのloopbackで個別に動かすのがスジだと思ってるんで、この方法が一番適切に思える。が、運用が面倒になるのが難点。WindowsUpdateやソフトウェアアップデートといった方法で更新できないのって、クライアントマシン用施策としては失格なんじゃないかと。

話は逸れるが、ISCって、BINDのWindowsバイナリ配ってるのね。知らなかった。これ入れるとdigとかも使えるのかしら。Windowsってnslookupしかないんで不便なんだよな。

dhcpでリゾルバのアドレスを通知できないのは不便

プライベートなLANにいる連中はdhcpのクライアントだ。各マシンにBIND入れてそこを見に行かせるようにすると、ノートPCを持ち出した時にあれこれ困りそうだ。さらによくよく考えると、うちにはPlayStation 3があるんだった。こいつが名前引きできなくなると、まいにちいっしょが見れなくなるじゃないか。

DMZにいるマシンのdnscacheをプライベートLANから使う

DJBのtinydnsは、外部インターフェイスで権威サーバーtinydnsを動かし、内部インターフェイス(lo0)でリゾルバdnscacheを動かすという実にシンプルな構成になっている。BINDみたく、両方一緒になっててクエリの種類でVIEWを分けて挙動を変えるなんてことはしていない。だからこそ安全なんだが、だからこそ、今回の場合は頭を抱えることになった。

外部インターフェイスにalias付け、そのalias上で、もひとつdnscacheを動かすって方法もあるんだが、それはそれで面倒だ。ということで、pfにおいで願った。要は、プライベートLANからのクエリであれば、loopbackへリダイレクトしてしまえ、という方法である。

DMZにあるマシンのdnscache

プライベートLANからのクエリも受け付けるように変更する。server/ipに、プライベートLANのネットワークを付けたファイルを追加。

# touch ${DNSCACHE}/server/ip/[プライベートLANネットアドレス]
rtx1000

リゾルバサービスを止め、プロバイダからの通知にあるリゾルバの取り入れを止め、DMZにあるマシンのアドレスをリゾルバとして直接指定。dhcpでも、自身のアドレスを通知させないように。

dns service off
no dns server pp
dns server [DMZ にあるマシンのアドレス]
dns notice order dhcp server
dns notice order msext server

さらに今回、プライベートLAN に居ながら、手動でアドレスを割り当てていたMac miniも、dhcpを利用するように変更してるんだけど、ここには書かない。

pf.conf

これが今回のキモ。キモなのに 2行しかない。

table <nats> { プライベートLANネットアドレス }
rdr on $ext_if inet proto { udp, tcp } from <nats> to any port domain -> 127.0.0.1 port domain

dhcp配下の各マシンをあれこれ操作したり、tinydnsとdnscacheのログをしばらく眺めてて、想定していた結果になっていることを確認。rtx1000 のファームが更新されるまではこれでいきませう。

今後

DMZにあるマシンのリゾルバのキャッシュが、WindowsやMac(or PS3)が呼び込んだ「なにか」によって汚染される可能性があるのが今イチ。やはり、BINDを各マシンに入れ込むかなぁ。ISCの配布しているBINDは試してみたいし。んで、PS3だけはプロバイダの再帰サーバー使えばいいやな。rtx1000経由で使うなら、フィルタをも少し検討しないとな。プロバイダのリゾルバ以外からのレスポンスは受付けないようにするとか。

2008-07-06

ツッコミありなしフィード

なぜか20040822へのコメントスパムが去年から大人気。フィルタをかいくぐってくるのを見つけるたび、手で消してたりする。今日、久々にやってきたので、200408.tdcを編集し、200408.parserを削除する、なんてことをした。しかし、URLなしの「bookmark you thx」ってなスパムは、なんの意味があるんだろう。もしかして単なる嫌がらせか?

さて、コメント自体は削除できるんだけど、RSSに記録された方は消すことができない。makerss.cacheを編集できればいいんだけど、Ruby力が圧倒的に不足してるので手がでない。そこで、コメント無しフィード機能を使う事にした。

tdiary.confに、

@options['makerss.url'] = 'comments.rdf'
@options['makerss.suffix'] = '(with comments)'
@options['makerss.no_comments.file'] = 'index.rdf'
@options['makerss.no_comments.suffix'] = ''

を追加し、設定画面から「ツッコミ抜きのフィードを配信する」に変更。

これで、index.rdfにはツッコミは入らなくなった。って、いっこ前のEURO 2008話は、その効果を見るためにむりくり書いたエントリだったり。

勝ってしまった

突然夏になってしまった。涼しいまま秋が来るかと期待したのに。甘すぎたか。

知らん間にもう7月である。結局6月は何も書かなかった。理由はひとつ。UEFA EURO 2008のため。

Spain Euro 08 celebration 4

これまでさんざん期待しては裏切られ、というのを繰り返してきたもんだから、今回はちょっと違う向き合い方をしてみた。期待してるフリをしない。要は願掛けみたいなものである。いいかげん「応援してるのをおおっぴらに吹聴して回るのがあかんのではないか」と思ったのだ。で、今回は本当に大人しくしてた。内心はグループステージの一戦目から舞い上がりっぱなしだったのだが、外向きには「ゆーろ? なにそれ」みたいなフリを…

いやいや、そんなのが関係あるわけない。強かったよ。こーいう試合が見たかったんだという試合運びをして勝ち上がってってくれた。それがとてもうれしいやね。しかも、チャビが最優秀選手ときた。言う事無しですがね。でも、一番の感想としては、「うわ、本当に優勝しちゃったよ」だったりする。感情を抑えるクセができてたせいか、今でも「しまった」感が漂ってる。

まぁ、組み合わせに恵まれたってのはあるかと思う。イニエスタも調子を落としてた。オランダとの対戦が見れんかったも残念か。でも、もう、いい。勝てたんだから。