DNSアラカルト〜稀に高まるUNIX力〜
連休になるとやってること
不思議なもので、連休になるとUNIX力が急激に高まり、家の中にあるサーバー群に手を入れたくなる。
インフラってそんなに頻繁にいじるものではないんだけどね。でも、手入れって、大切。
ということで、不完全ながらもなんとか使えているので、ほったらかしにしていたDNS群を本格的に整備してみた。
なんでこんなにDNSがたくさんあるんだ?
自宅のネットワーク構成はこんな感じになっている。
MainRouter
├──RouterA
│ ├──DNS(Master)
│ ├──DNS(Slave)
│ ├──DNS(MasterCopy)
│ └──DNS(cache)
└──RouterB
└──DNS(Master)
MainRouterがネットに繋がっていて、その下にルーターが2個。
Aの方には主にPC類をつないでいて、Bの方には家電やゲーム機がつないである。
で、DHCPは嫌いなので、それぞれのセグメントにあるIPアドレスは、DNSを立てて管理している。ローカルのみ名前解決し、グローバルな名前解決はDNSから上位ルーターにフォワードして解決する仕組みだ。
なんでセグメントそんなに分けてるのかって?
実験用です!
( ー`дー´)キリッ
ネットワークってね、なんとなーくで動いちゃうことって結構あるのでね。
なんとなーく動いているように見えるからオッケ!という危ない設定の危機がゴロゴロあるような気がしてる。なので、じっくりゆっくり検証したくて、環境作ってるうちにこうなってしまった。
おかげで、普段使いしてるセグメントAを実験にいじると、支障が出ることもあるので、もう1つセグメントCを増やそうかな?と思ったりもしてます(マテ
ごった煮DNS環境
しかも、環境も複雑かも。
セグメントAのDNS(Master)は、OpenBSD+unbound+NSD。DNS(Slave)はScientificLinux+BIND9。DNS(MasterCopy)はOpenBSD+unbound+NSDでDNS(Master)と全く同じ設定にしてる、検証機。DNS(cache)はRaspbian+unbound。
セグメントBのDNS(Master)は、Raspbian+BIND9。
これだけやってみるとわかることもある。BIND、NSD、unboundと使っているDNSソフトウェアは同じでも、OSが違うと、設定ファイルの配置がかなり違うのだ。
やっぱり、検証って、必要だな、と思うよ?
OpenBSD+NSD+unbound
この組み合わせは、OpenBSDを使うようになってから初めて触った。
それまでBIND一辺倒だったので、戸惑ったけど、慣れてみると、シンプルでいいなと思う。シンプルなのは、設定ファイルの配置にも現れている。
var/
├──nsd/
│ ├──etc/
│ │ └──nsd.conf
│ └──zone/
│ ├──master/
│ │ ├──local.zone
│ │ └──local.rev.zone
│ └──slaves/
│ ├──local.zone
│ └──local.rev.zone
└──unbound/
└─etc/
└──unbound.conf
ね?シンプルでしょ?
バックアップも、/var/nsdと/var/unboundをtarするだけで、楽チンです。
でも、昔のPC-UNIXってこんな感じだったかも?
初期パッケージは/etcに設定ファイルがあるけど、後から足したものは、
/varか/usr/localの下にまとめて配置されたような遠い記憶がある。
ScientificLinux+BIND9
今、RedHat系はこんな感じなのかな?
馴染みのある感じなので、迷わずに設定できるかな。
ScientificLinuxのbind9
var/
├──named/
│ └──data/
│ ├───master/
│ │ ├──local.zone
│ │ └──local.rev.zone
│ └──slaves/
│ ├──local.zone
│ └──local.rev.zone
└──etc/
└─named.conf
/varと/etcに分かれてると、あちこち見るのがちょっと面倒かも。
Raspbian+BIND9
同じLinuxなのに!BIND9なのに!
debian系だと微妙に違うの?となりました。
設定ファイル、いろいろ書き込んだりすれば、RedHatと同じようなファイル配置で使えるんだろうけど、返って深みにはまりそうなので、標準?のファイル配置で使ってみた。
Raspbian(buster)のbind9
var/
├──cache/
│ └──bind/
│ ├───master/
│ │ ├──local.zone
│ │ └──local.rev.zone
│ └──slaves/
│ ├──local.zone
│ └──local.rev.zone
└──etc/
└──bind/
├───named.conf.d/
│ ├──named.conf.options
│ ├──named.conf.default-zones
│ └──named.conf.local
└─named.conf
設定ファイルの単純移植ができないのは、ヤラシーよなー。
Raspbian+unbound
単純にキャッシュサーバーを作りたかったので、unboundでサクッとやってみた。
こちらは、/etc/unboundの下にまとまってるので、楽だったかな。
最初、余計なincludeしてハマったけど。
Raspbian(buster)のunbound
etc/
└──unbound/
├───unbound.conf.d/
│ └──*.conf.local
└─unbound.conf
DNSは全ての基本
自宅サーバーなんて言葉も流行らなくなってきて、昔ほど、サーバー構築する機会は減った気がする。でもね、ネットワークにおいてDNSは全ての基本。
httpdもsmtpdも名前解決がちゃんとできていないと正常に動作しない。
基本を習得することが上達への近道だよな、と思うので、久々にいろいろ触って、いい経験になりました。
さて、この後も、それぞれの環境で、apache、Nginx、Postfix、OpenSMTPDなどなど、いろんな設定をしてみるよ!