(追記)
この設定そのままだと、自サーバから普通に引くことは可能なのですが、外からは引けないようです。
recursiveの問題かと思っていろいろ設定してみたのですが、recursiveを許可してもダメでした。
あと、普段はrecursiveを許可せずに、DNSBLの問い合わせだけrecursive許可という設定にしたいのですが、良く分からず。viewを使うのかなあ。
はまりです。
(途中経過)rbldnsdを利用して公開DNSBLを立ち上げる - モーグルとカバとパウダーの日記
(途中経過2)rbldnsdを利用して公開DNSBLを立ち上げる - モーグルとカバとパウダーの日記
-
-
-
- -
-
-
rbldnsd というツールを利用することで、簡単に自家用DNSBLや公開DNSBLを立ち上げることができました。
というわけで、簡単に設定の紹介。
rbldnsdの設定
rbldnsdはポート10053で起動して、ブラックリストのファイル自体は/var/lib/rbldnsに置いている。
/etc/default/rbldnsd に追加
RBLDNSD="- -r /var/lib/rbldns -b 127.0.0.1/10053 ip.dnsbl.example.jp:ip4set:ip host.dnsbl.example.jp:dnset:host"
ブラックリストファイルを作成
192.168.1.*と192.168.5.1、example.comがブラックリストの場合。
/var/lib/rbldns/ip ファイル作成(例)
:127.0.0.2
192.168.1.0/24 20080611173000
192.168.5.1 20080612184715
/var/lib/rbldns/host ファイル作成(例)
:127.0.0.2
example.com 20080611173000
ちなみに、ブラックリストファイルに変更を加えると、デフォルトでは1分以内で読み込み直しが行われて反映されるようになっている。
DNS設定
ドメインがexample.jpで、ネームサーバがns.example.jp、DNSBLを引くためのサブドメインがdnsbl.example.jpの場合。
dnsbl.example.jpにアクセスされた場合、自サーバ内の10053ポート、つまりrbldnsdへと転送して、そちらの返答を返す様にする。
example.jpを架空のものにして、内部だけで使うDNSBLとして使うのはすぐにできたのだけど、現在使用しているドメインで公開DNSBLとして使える設定にするのが、なかなかできなくてはまった。
dnsbl.example.jpをNSとして設定してないとだめなのね。
/etc/bind/example.jp.zone に追加
dnsbl IN NS ns.example.jp.
/etc/bind/named.conf.local に追加
zone "dnsbl.example.jp" { type forward; forward first; forwarders { 127.0.0.1 port 10053; }; };
追加したら、シリアルの変更と再読み込みを忘れずに。
# rndc reload
テスト
nslookupやdigなどで、まずはrbldnsdに対して直に引いて試してみる。
# dig @localhost -p 10053 1.5.168.192.ip.dnsbl.example.jp ;; ANSWER SECTION: 1.5.168.192.ip.dnsbl.example.jp. 2100 IN A 127.0.0.2
と、/var/lib/rbldns/ip の最初で指定した「127.0.0.2」が返ってくればOK。
引きたいIPやドメイン部分が、「192.168.5.1」を引きたいときは「1.5.168.192」と逆順になることに注意。
次に、ポート指定せずに試す。
# dig @localhost 1.5.168.192.ip.dnsbl.example.jp
ポートフォワードされていればこちらでも答えが返ってくるので終了。
後はipやhostのファイルに、追記していく仕組みを作ればよい。