2013年10月26日

ローカルからドメイン名でアクセス出来ないから簡易内部DNSサーバーの構築をしてみた

久々の更新です。

今回はとある大量配信向けMTAを導入しようとしたときのお話。

そのMTAはとても素晴らしくエラーレポート機能なども備えていた。

エラーレポート生成までの流れは以下のような感じ。前提として1つのマシンで動かす場合ね。

1. クライアントから、Envelope-Fromアドレスをtest@example.co.jp とした、宛先不明となる送信用メールデータ[メールA]を125.XXX.XXX.XXXの8025番ポートに接続して送信する。

2. receiverが8025番ポートにて、送信用メールデータ[メールA]を受信する。

3. senderは、送信用メールデータ[メールA]の送信を試みますが、宛先不明であるためエラーとなる。

4. senderは[エラーメールB]を生成し、Envelope-Fromアドレスであるtest@example.co.jp宛に送信を試みる。

5. senderはexample.co.jpのMXであるexample.co.jpの25番ポートへ接続し、[エラーメールB]を送信する。

6. example.co.jp のIPアドレスは125.XXX.XXX.XXXであるため、そのIPアドレスを使用するエラーメール受信用のreceiverが25番ポートにてエラーメールを受信する。

7. analyzerは保存された[エラーメールB]に含まれるエラーの内容を分析し、レポートファイルに結果を出力する。


ここで1つ問題が発生!!4.の段階でDNSサーバーから引けるIPアドレスは当然125.XXX.XXX.XXXである。これはこのサーバー自身のグローバルIPアドレス。

静的IPNATは、外部からのアクセスに対しては適用されるが、内部からのアクセスに対しては通常適用されない。

ということでタイムアウト!!ふむ。困った。というより当たり前の動作か。こんな時のセオリーはおおまかに4つある。

1.GapNAT、ヘアピンNATルーターというものを使う。

ヘアピンの分かりやすい説明はここ。
http://natloopback.web.fc2.com/how_natloopback.html

GapNATはNATルータの内側にもグローバルIPが付与される技術。

いま使ってるルーターは対応してませーん。

2.hostsファイルを利用

これが最もポピュラーな方法ではなかろうか?ファイル編集するだけだし。

ということでやってみたが、上記MTAはどうもhostsファイルを読まないので断念。。。

Postfixとかなら、hostファイルを読みにいく設定とか出来るのだけどね。このMTAはそういう設定はできないみたい。

でも、似たような機能があり、hostsじゃないファイルで実現できそうだったが、効かない。。。

問合せたら利用バージョンではその機能はバグがあって効かないとのこと。なんじゃそりゃ。。。

3.内部用DNSをたてる

運用サーバー専用のDNSサーバーの構築。まあ確実だろうけどいちいち面倒だなー。

4.ISPなどインターネット側で公開されているプロキシ経由でアクセスする

これもいいけど、プライベートIPで処理してくれるのがベスト。

なんだかんだで、悩んでたら知人にdnsmasqなるものを紹介してもらった。

比較的容易ににDNS,DHCP機能が構築できるみたい。/etc/hostsを参照してレコードを返すこともできそう。

何か良さそう。ということで3の方法を採択。

早速試してみる。

CentOSならば、yumでさくっと入ります。

# yum install dnsmasq

で、設定ファイルが/etc/dnsmasq.conf にあるので弄くる。

今回は/etc/hostsを参照してレコード返してくれれば十分なのでほとんどの項目はデフォルトのまま。

よって自分が行った設定は2つだけ。

ホスト自身の名前引き問い合わせにのみ応答するように

listen-address=127.0.0.1

ワイルドカードアドレス (0.0.0.0) にバインドされないように、

bind-interfaces

のみ!

そして、サーバーの/etc/resolv.confnにて、先頭にnameserver 127.0.0.1 と追加して先にローカルのDNSに問い合わせるようにする。

さて、これで改めてドメインでIPを引くと。。。!見事プライベートIPが返されるようになった(^^)V
posted by hana at 10:41| Comment(0) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック