2017/05/23(火)権威DNS ― SOA レコードの記述方法

2017/10/12 22:15 サーバ運営・管理
どちらかというと自分メモです。。。
SOA とは Start Of Authority を略したもので、
よく「権威の開始」を意味すると説明されます。

このあたりが、日本語での感覚と英語圏での感覚が合わなくてピンとこないのですが、要するにここでいう「権威の開始」というのは、「ゾーン情報を管理する権限を持っているこ とを明示する」ということになります。

SOAレコードは、BIND の設定ファイルに従うと、下記のような書式になります:
@               IN SOA  ns.example.jp. postmaster.example.jp. (
                        17052301        ; Serial-No.
                        3600            ; Refresh
                        900             ; Retry
                        604800          ; Expire
                        1800            ; Minimum
                        )
以下、「マスターDNS」「スレーブDNS」「権威サーバ」等の用語は理解しているものとして記述していきます。これらの意味は1つ前の記事に全て記してあります。

ひとつひとつのパラメータを理解しているようでよく解かっていないのではないかなと。
SOA レコードは実に7つのパラメータで成り立っています。
個々に示してみます:

MNAME [ns.example.jp.]
 ・マスターDNSのホスト名。
 ・「完全修飾」という書式で通常、最後にもドットを付ける。
 ・CNAME レコードのホスト名は指定不可。IPアドレス自体も指定不可。

RNAME [postmaster.example.jp.]
 ・連絡先の電子メールアドレス。
 ・「完全修飾」という書式で通常、最後にもドットを付ける。
 ・DNSの動作上使われることはないが、管理者同士の連絡先として使われることがある。
 ・記述の際、@ マークは . に置き換える。

SERIAL [17052301]
 ・ゾーンシリアル番号。符号なし 32bit長整数で保持される。
 ・ゾーン内容を更新したら、必ずこの番号を+1以上更新する。
 ・0以上ならどのような値でも構わないのだが、更新日(作成日)を示す YYYYMMDDnn 或いは YYMMDDnn の形式が多い。
 ・4294967295 の状態で+1すると 0 になるが、こういう場合の正常な動作は基本的に考慮されていないことに留意。
 → この場合は、スレーブDNSを一旦停止し、該当ゾーンを含む保持データそのものを削除してから、スレーブDNSを再起動するしかありません。 SERIAL を前回より小さい番号にした場合も同様の対処です。

○ 以下3つはスレーブDNSの挙動を指定:
REFRESH [3600] 〔単位:秒〕
 ・当該ゾーン情報をリフレッシュする間隔。
 ・スレーブDNSは、マスターDNSからのゾーン転送処理を受け入れたあと、ここで指定した時間経過すると、マスターDNSへゾーン情報更新問合わせを行い、シリアル番号 が更新されていたら適宜更新処理を行う挙動になる。

RETRY [900] 〔単位:秒〕
 ・リフレッシュがマスターDNSや回線障害など原因で上手く行かなかった場合、リトライを試みる間隔。
 ・従って、REFRESH で指定する値よりも小さな値でないと意味がなく、通常は、REFRESH の整数分の1の値とする。(この例では4分の1)

EXPIRE [604800] 〔単位:秒〕
 ・ゾーン情報のリフレッシュができない状態が続いた場合、スレーブDNSにて、ゾーン情報を最後にリフレッシュが成功してから保持を可能とする時間を示す。
 ・従って、REFRESH の整数倍で無いと意味がなく、2週間から4週間が適切とされている。(この例では7日=1週間)

○最後の1つはキャッシュDNSの挙動を指定:
MINIMAM [1800] 〔単位:秒〕
 ・このパラメータは Negative cache TTL とも呼ばれる。
 ・各レコードのデフォルトキャッシュ保持時間を指定する。
 ・値が小さいほど臨機応変に権威サーバにおける保持情報に追従できるが、DNSの負荷が上がるため、60 ~ 3600 の間で適宜指定されるのが実態である。
 ・また、レコードに存在しない情報の問い合わせを受けた場合、'NXDOMAIN' (情報なし)という回答をするが、キャッシュDNSは「情報なし」もここで指定した時間だけ保持する挙動になる。

 以上、参考にどうぞ。

 ダイナミックDNSを運用している場合、MINIMAM は 60 を指定するのが通例の設定のようです。ホストの増減が多い環境では MINIMAM は 600、比較的変化が少ない環境では 1800 や 3600 という設定が多いようです。

2017/05/15(月)権威DNSとキャッシュDNSの分離をしました

2017/10/12 22:13 サーバ運営・管理
5月連休中は、専らこの作業をしていました。
DNSをいじるので、工程途上で作業ミスがあると傘下のネットワーク運用への影響が大きいため、1年近くやりたくてもできない状態だったので、出来る時にやってしまおうとい うことで。。

権威DNSとかキャッシュDNSとか判らない方々も多いので、基礎的な解説を交えていきます。
変更前は以下のような単純な構成でした:
20170515_1.png

これは、弊社管轄ドメインのネームサーバとして、レジストラに登録しているサーバになります。
レジストラに登録するサーバは、「権威サーバ」となる種別のDNSでなければなりません。
では、「権威サーバ」と「キャッシュサーバ」の違いは何? というところですが・・

「権威サーバ」とは、ドメイン各種情報の原本を持つサーバ、
「キャッシュサーバ」とは、探索したドメイン情報の写しを持つサーバ
を言います。
 従来のDNSは、「権威サーバ」と「キャッシュサーバ」が一緒で、DNSのサーバソフトウェアで有名な BIND が以前は「権威サーバ」「キャッシュサーバ」と区別する概念が 無く、最初から両方使えるようになっているので、このあたりが混乱を来す要因になっています。

さて、「権威サーバ」には更に2種類あって、
かつては本当の原本情報を持たせるサーバを「プライマリDNS」
原本情報の複製を保持するサーバを「セカンダリDNS」と言っていました。

最近では、
「プライマリDNS」は「マスターDNS」とか「マスター権威DNS」、
「セカンダリDNS」は「スレーブDNS」とか「スレーブ権威DNS」とかいう言い方が主流になってきているようです。
ちなみに、「キャッシュDNS」には「プライマリ」「セカンダリ」あるいは「マスター」「スレーブ」の区別も概念もありません。

さて、「マスターDNS」も「スレーブDNS」も「権威サーバ」の位置づけなので、レジストラに「ネームサーバ」として登録できます。
「マスターDNS」か「スレーブDNS」かの種別は問いません。「権威サーバ」であることが重要です。
「マスターDNS」か「スレーブDNS」かの種別は問いません。「権威サーバ」であることが重要です。

弊社では、DNS関係は下記のような構成にしました(2017/05/08より):
20170515_2.png

最近はこのような構成がやや強めにお勧めされています。
使用するDNSソフトウェアは何でも良いのですが、弊社での環境的事情や BIND の相次ぐセキュリティアラートに加え、常用の FreeBSD にて BIND が標準提供から外された(BIND 10 から Python ベースになったのが主たる理由)のに辟易して、PowerDNS,nsd,unbound という構成を採用した次第です。

「hidden マスターDNS」とは、その名の通り、マスターDNSを公開ネットワーク上から隠しています。
こうすることで、ドメイン原本情報に「毒」が外部から入ることを防ぐセキュリティ対策が出来ます。
レジストラへのドメイン登録はネームサーバが最低2つ要るため、2つのスレーブDNSを稼働させます。このスレーブDNSは自前ですが、費用面さえ許す環境ならば、他社サー ビスの利用でも良いでしょう。

同じくキャッシュDNSも2つ用意します。これは最低でも1つあればいいです。
逆に3つ以上キャッシュDNSを指定できるアプリケーションはあまり見かけませんね。

キャッシュDNSは「ドメイン情報探索専用」のサーバです。
「権威DNS」とは物理的に別のサーバとし、利用を許可するネットワークを限定することがコツです。

「権威DNS」はCPU負荷はあまり重くならないので、Raspberry Pi 等の活用も可能です。

キャッシュDNSで特殊なのは google の 8.8.8.8 とか 8.8.4.4 とかで、これはオープンDNSとかオープンリゾルバとか呼ばれ、誰でも使用できる代物ですが、負荷分散の意味 で、キャッシュサーバを用意しない場合や、用意できない場合、出来る限り加入しているプロバイダで指定されているネームサーバを使うことをお勧めします。

2017/04/12(水)今どきの和文Webフォント

Webサイトを制作していて、悩みの種のひとつに文字フォントの問題があります。
従来(結構昔話になってきている)は閲覧する側で表示できる文字フォントを考慮するのが一般的であり、制作側で使用したい文字フォントをデザイン的に強制出来ないという問題 があります。

筆者が制作したサイトもこんな感じで、クオリティにやや難を感じる状態です。。
20170412_before.png

最近は CSS の普及でこうした問題も解決し、ライセンスに注意する必要がありますが、制作側で意図した文字フォント一式をWebブラウザにダウンロードさせ、強制することができます。
これは、一般的に「Webフォント」と言うものです。

しかしながら、日本語環境でこの「Webフォント」を採用するには問題があります。先ず、
・英文フォントと違い文字種が多いので、フォントファイルも数MBはザラである。フォントによっては、数10MBあり、ダウンロード → 表示に必然的に時間かかる。

という致命的ともいえる問題があり、更に、
・実際に表示させてみると、文字フォントによってはレンダリングが汚く、プロ品質の実用にやや難がある。

とりあえず、致命的な問題が何とかならないものかと色々調査していましたが、
有償のサービスもあるもののそれは弊社の環境にはオーバスペックなため、下記の手法で落ち着きました。

〔参考〕
10分で設定完了!Webフォントの使い方や軽量化・はてなブログでの設定手順、優良リソースなどまとめ【おすすめ日本語フォントも】
http://brian.hatenablog.jp/entry/how-to-set-web-fonts

先ず、
「サブセットフォントメーカ」 というソフトウェアと、
「WOFFコンバータ」 というソフトウェアをダウンロードしてインストールしておきます。
ちなみにこれら2つのソフトウェアは Win版とMac版両方あります。

両方ともいわゆるフリーソフトで、生成したフォントファイルは、元にしたフォントファイルでライセンス制限されていない限りは商用利用(有償で制作を請け負うなど)可能です。

インストール出来たら、「サブセットフォントメーカ」を起動し、以下のように入力しました。
20170412_1.png
因みに、元フォントは「モトヤLマルベリ等幅3」というApache ライセンスのものを採用しました。
フォントに格納する文字のところは、テキストファイルであれば何でもよいようです。
筆者はそのまま対象のHTMLファイルを選択しました。
但し、Windows 環境において、UTF-8 では文字化けするようなので、予め UTF-16BOM(Windowsで言うところのUnicode形式) に変換しておくとよいです。

ここで「作成開始」をクリックすると、すぐに WOFF コンバータの画面が開きます。
以下のように入力します。(変換前ファイルの欄は自動入力される)
20170412_2.png

ここで「変換開始」をクリックすると、拡張子が .eof , .woff , .woff2 の3つのファイルが生成されます。
こうすることで、使用している文字のみをピックアップし、フォントファイルのサイズを大幅に削減できます。筆者の場合は最大で 15kB 余りとなりました。

これらをサーバにバイナリモードにて(FTP の場合)アップロードし、次にCSS ファイルで、これらフォントファイルを参照するように設定します。
こんな感じです:
@font-face {
  font-family: 'motoyasub3' ;
  src: url('/css/motoyasub3.woff') format('woff'),
       url('/css/motoyasub3.eot')  format('eot') ;
  font-weight: 100 ;
}

a.sidemenu  { font-family: 'motoyasub3',"MS Gothic",Osaka,monospace,sans-serif;
      .... [中略] ....
            }
これで、こうなりました:
20170412_after.png

レンダリングも問題なさそうです。(Cyberfox,chrome,IE11,edge で確認)
woff 形式は IE 以外で、eot 形式は IE のみでサポートする Webフォントファイルのようです。

2017/01/05(木)壊れたのと同じテスタを買ってみた

2017/10/12 22:10 電子工作
早速、昨日から業務稼働しています。
20170105.JPG
12月29日、たまたま興味本位で寄った個人経営らしきリサイクルショップなのですが・・・

なんと、機械的損傷で数ヶ月前に壊れてしまった安物テスタと全く同型のものが平積みで売っていました。とりあえずというか、必要ではあるので思わず買ってしまいました。
3年くらい前にネット通販で980円で購入した記憶があるのですが、税抜き699円で売っていました。
しかしまぁ、リサイクルショップで安物新品テスタが売られているなんぞ、誰も考えないでしょうね。

本当は、もっときちんとしたプロの業務に耐えうるテスタが欲しいのです。
工事現場などで携帯目的で使うにもやや難があります。
この手のテスタは測定誤差が結構あるのですよ。。