はじめて投稿いたします。たかしと申します。
今ファイアウオールの設定をしていまして、どうしてもDNSの詳細を確認したい事がございます。
表題の件に関してなのですが
転送の際にはじめにスレーブサーバがマスターにクエリを行なうと思うのですが
その際にスレーブサーバはUDPでクエリを投げるのみならず
TCPも使っているのでしょうか?
現状ではスレーブからマスターへのUDP-domainのみファイアウオールで許可しているのですが
うまくゾーン転送が行なえません。
ちなみにマスターからスレーブはTCP-domainを許可しております。
ファイアウオールはFW1を使用しています。
> はじめて投稿いたします。たかしと申します。
> 今ファイアウオールの設定をしていまして、どうしてもDNSの詳細を確認したい事がございます。
>
> 表題の件に関してなのですが
> 転送の際にはじめにスレーブサーバがマスターにクエリを行なうと思うのですが
> その際にスレーブサーバはUDPでクエリを投げるのみならず
> TCPも使っているのでしょうか?
>
> 現状ではスレーブからマスターへのUDP-domainのみファイアウオールで許可しているのですが
> うまくゾーン転送が行なえません。
> ちなみにマスターからスレーブはTCP-domainを許可しております。
>
> ファイアウオールはFW1を使用しています。
大きく言うと、「クエリはUDPであるがゾーン転送はTCPであること。」と「ゾーン転送は、スレーブ側から始まること。」という2点の認識が誤っています。
ゾーン転送は、スレーブ側とトリガとする場合とマスタ側をトリガとする場合があります。
スレーブ側がトリガとなる場合は、スレーブサーバが起動された時やスレーブがリフレッシュタイムアウトしたときにスレーブ側からSOA要求を出し、マスタから送られてくるSOAのシリアル番号を現状値と比較し、多きい場合にAXFRでマスタにゾーン転送要求を出し情報をもらいます。このときのAXFRでのゾーン転送がTCPで行われます。
また、マスタサーバ側がトリガとなるのは、マスタでDNSの設定を変更して再起動したときに「notify yes」となっているとnsレコードにあるスレーブサーバにnotfy通知をします。このとき、スレーブはシリアルの変化を検出するので、以降、AXFRでゾーン転送要求を出し情報をもらいます。(これが、ゾーンデータを変更したらシリアルを必ずあげないと駄目な理由です。)
従って、TCP 53番を開けてあげなければなりません。方向はセカンダリからマスタ方向です。外部のセカンダリならインターネット側からのアクセスになりますので、たかしさんの設定は逆です。
また、ごくまれですが、クエリでもUDPでは512byteを超えると転送できないのでTCPで牽き直すことがあります。ガチガチにフィルタしている場合は要注意です。
ゾーン転送については、下記が参考になります。
http://www.atmarkit.co.jp/flinux/rensai/bind905/bind905a.html
> 大きく言うと、「クエリはUDPであるがゾーン転送はTCPであること。」と「ゾーン転送は、スレーブ側から始まること。」という2点の認識が誤っています。
> ゾーン転送は、スレーブ側とトリガとする場合とマスタ側をトリガとする場合があります。
> スレーブ側がトリガとなる場合は、スレーブサーバが起動された時やスレーブがリフレッシュタイムアウトしたときにスレーブ側からSOA要求を出し、マスタから送られてくるSOAのシリアル番号を現状値と比較し、多きい場合にAXFRでマスタにゾーン転送要求を出し情報をもらいます。このときのAXFRでのゾーン転送がTCPで行われます。
> また、マスタサーバ側がトリガとなるのは、マスタでDNSの設定を変更して再起動したときに「notify yes」となっているとnsレコードにあるスレーブサーバにnotfy通知をします。このとき、スレーブはシリアルの変化を検出するので、以降、AXFRでゾーン転送要求を出し情報をもらいます。(これが、ゾーンデータを変更したらシリアルを必ずあげないと駄目な理由です。)
> 従って、TCP 53番を開けてあげなければなりません。方向はセカンダリからマスタ方向です。外部のセカンダリならインターネット側からのアクセスになりますので、たかしさんの設定は逆です。
> また、ごくまれですが、クエリでもUDPでは512byteを超えると転送できないのでTCPで牽き直すことがあります。ガチガチにフィルタしている場合は要注意です。
> ゾーン転送については、下記が参考になります。
>
> http://www.atmarkit.co.jp/flinux/rensai/bind905/bind905a.html
>おやじ様
早速のお返事誠にありがとうございます。たかしです。
少々困惑しているのですが、ゾーン転送の際にスレーブがキックになっている場合は確かに スレーブ→マスター の方向でTCPコネクションが張られるのはわかりましたが
マスターがキックになっている場合、始めにマスターがスレーブにnotifyを送ると思うのですが
ここでは、 マスター→スレーブ のTCPコネクションが成立しないのでしょうか?
要するるに、常にTCPコネクションは スレーブ→マスター になるのかということです。
ご返答をよろしくお願いいたします。
> 早速のお返事誠にありがとうございます。たかしです。
>
> 少々困惑しているのですが、ゾーン転送の際にスレーブがキックになっている場合は確かに スレーブ→マスター の方向でTCPコネクションが張られるのはわかりましたが
> マスターがキックになっている場合、始めにマスターがスレーブにnotifyを送ると思うのですが
> ここでは、 マスター→スレーブ のTCPコネクションが成立しないのでしょうか?
>
> 要するるに、常にTCPコネクションは スレーブ→マスター になるのかということです。
notifyは、UDPです。従って、ゾーン転送に限れば常にTCPコネクションはスレーブ→マスタです。
前述のようにクエリでも512byteを超える場合はTCPになるので、おやじはサーバの出入りをガチガチにしているので、DNSサーバからの外部DNS問い合わせ用にTCP 53番向けを許可しています。
おかげで解決いたしました。