自宅サーバを設置するひとの心強い味方,IPQ でIPアドレスをサブネット買いしたときの設定とか.
IPQ とは
比較的廉価に固定グローバルIPを提供しているプロバイダ(ISP)で,16IP契約(いわゆるサブネット買い)もできるという,自宅サーバ野郎にオススメのプロバイダ.その実態は,上り方向だけ早くて下りが遅かったりするアンバランスなISPだったりするのですが….
IPQ のすばらしいところは,かなり DIY に特化しているところでして,通常 ISP が許していない「DNS逆引き」もサポートされていることでありましょう.昨今,DNS逆引きに成功しないと SMTP のメールリレーを拒否られるというご時世ですから,これができるととてもよい.なによりとても楽しい.
本日は,Linux の bind9 で IPQ を利用するときの正引き,逆引き設定のメモを記述します.この設定で2年以上やってるけど,いまのところ困ったことはありません.
前提条件
Vine Linux 5.2 での設定例です.といっても,べつにどの OS でも bind9 ならだいたい一緒です.ディレクトリとか bind9 を動作させるときの権限管理などに差異はありますけどね.Ubuntu とかは設定の種類毎に複数の設定ファイルに分けて記述したりするので気をつけてね.
なお,正引き方向については,すでにドメインを取得&レジストラに設定済みという前提で話を進めます.私は ムームードメインを利用しています.
今回は,屋内ネットワークからと外部ネットワークからの正引き・逆引き問い合わせに矛盾なく回答し,しかも内部ネットワークからは DNS キャッシュサーバとしても動作するように bind を設定します.
ちなみに,面倒なので,Dynamic DNS とかは使いません.
ネットワーク
IPQ の 16IP つまり /28 サブネット買いです.下記のとおりとしましょう.
設定
IPQ の逆引き設定をしておく
まあこんなかんじでよろしくです.これは IPQ のサイトで登録してきます.
DNS情報更新 xxx.yyy.zzz.144 NS ns1.hoge.org. DNS情報更新(Secondary) xxx.yyy.zzz.144 NS ns2.hoge.org. DNS情報更新 xxx.yyy.zzz.145 CNAME 145.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.146 CNAME 146.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.147 CNAME 147.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.148 CNAME 148.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.149 CNAME 149.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.150 CNAME 150.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.151 CNAME 151.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.152 CNAME 152.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.153 CNAME 153.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.154 CNAME 154.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.155 CNAME 155.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.156 CNAME 156.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.157 CNAME 157.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.158 CNAME 158.144.zzz.yyy.xxx.in-addr.arpa. DNS情報更新 xxx.yyy.zzz.159 CNAME 159.144.zzz.yyy.xxx.in-addr.arpa. 設定が完了しました。
ところで,「CNAME 145.144.zzz.yyy.xxx.in-addr.arpa.」としていますが,ここの144は別に任意の文字でおっけーだと思います.ただし,/etc/named.conf の逆引き zone ファイル指定のときの識別子と一致させなくてはいけませんので注意してください.
例えば,xxx.yyy.zzz.145 の 逆引きでは,IPQの上位DNSサーバに一度リクエストが飛び,IPQのDNSサーバではこの設定を見て,「それは ns1.hoge.org. に設定を委譲しちゃったので,CNAME 145.144.zzz.yyy.xxx.in-addr.arpa. を持って ns1.hoge.org. に聞いてね」という感じの返答をしているわけです.ですので,ここで持っている「145.144.zzz.yyy.xxx.in-addr.arpa.」の144がここの設定と bind の設定で異なると変な動きをしかねません.
このへんは下記が詳しい.
キャッシュ/逆引きDNSの構築と運用 (2/2):実用 BIND 9で作るDNSサーバ(4) - @IT
named (bind9)をインストール
インストールしてください. apt-get でもなんでもいいので,いれてください.
/etc/named.conf
bind9 が一番最初に読み込む設定ファイル.
内部向けと外向けに分けているので,設定ミスしてもわりとちゃんと動く(笑)
// 内部ネットワーク定義 acl internal-acl { xxx.yyy.zzz.144/28; 127/8; }; // bind の zone ファイルの場所とか pid の定義とか. options { directory "/var/named"; pid-file "/var/run/named/named.pid"; }; // 屋内ネットワークからのリクエストに対する反応 // DNS キャッシュサーバとしても動作するようにする view "internal-view" { match-clients { internal-acl; }; allow-query { internal-acl; }; allow-transfer { internal-acl; }; // 他のDNSサーバに質問にいく.キャッシュサーバとしての動作の設定. recursion yes; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; }; // hoge.org に関する正引きリクエストは hoge.org.zone ファイルを見る zone "hoge.org" { type master; file "hoge.org.zone"; }; // xxx.yyy.zzz.144 に関する正引きリクエストは hoge.org.zone ファイルを見る // 144の部分は IPQ の逆引き設定と一致させる (ここは内部向けなんであんまり関係ないですが) zone "144.zzz.yyy.xxx.in-addr.arpa" { type master; file "hoge.org.rev.zone"; }; }; // 外ネットワークからのリクエストに対する反応 view "external-zone" { match-clients { any; }; allow-query { any; }; recursion no; allow-transfer { 127.0.0.1; xxx.yyy.zzz.157; }; zone "hoge.org" { type master; file "hoge.org.zone"; }; // xxx.yyy.zzz.144 に関する正引きリクエストは hoge.org.zone ファイルを見る // 144の部分は IPQ の逆引き設定と一致させる zone "144.zzz.yyy.xxx.in-addr.arpa" { type master; file "hoge.org.rev.zone"; }; };
/var/named/hoge.org.zone
正引き設定. /var/named/ の部分は前述の options で決まります.
$TTL 86400 @ IN SOA ns1.hoge.org. admin@hoge.org. ( 2012082600 ; serial 3600 ; refresh 1hr 900 ; retry 15min 604800 ; expire 1w 86400 ; min 24hr ) IN NS ns1.hoge.org. IN NS ns2.hoge.org. IN MX 10 mail.hoge.org. IN MX 20 obs.hoge.org. hoge.org. IN A xxx.yyy.zzz.146 serv IN A xxx.yyy.zzz.146 ns1 IN A xxx.yyy.zzz.146 router IN A xxx.yyy.zzz.145 www IN CNAME serv obs IN A xxx.yyy.zzz.157
省略していますが,145 〜 158 まで定義できます.
/var/named/hoge.org.rev.zone
$TTL 86400 @ IN SOA ns1.hoge.org. admin@hoge.org. ( 2012082600 ; serial 3600 ; refresh 1hr 900 ; retry 15min 604800 ; expire 1w 86400 ; min 24hr ) IN PTR hoge.org. IN A 255.255.255.240 IN NS ns1.hoge.org. IN NS ns2.hoge.org. 145 IN PTR router.hoge.org. 146 IN PTR serv.hoge.org. 157 IN PTR obs.hoge.org.
省略していますが,145 〜 158 まで定義できます.
/var/named/named.local
$TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost.
/var/named/localhost.zone
$TTL 86400 $ORIGIN localhost. @ 1D IN SOA @ root ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum 1D IN NS @ 1D IN A 127.0.0.1
/var/named/named.ca
デフォルトのものをつかってください.
これで
たぶんうごきます.
まちがってたらごめんなさい.