dnsmasqの基本機能の一つは、/etc/hostsファイルの記述内容をDNSレコードとして、問い合わせに応じるネームサーバです。/etc/hostsの記述内容が、Aレコード(ホスト名に対応するIPv4アドレス)や、AAAAレコード(ホスト名に対応するIPv6アドレス)になります。
またdnsmasqは、通常の名前解決のDNSレコード以外のDNSレコード、MX, PTR, SRV, TXT, CNAME, NAPTRといったDNSレコードが利用できます。
この記事では、dnsmasqのネームサーバ機能で利用できるDNSレコードのうち、Aレコード、AAAAレコード以外のDNSレコードを利用する手順を説明します。対象とするdnsmasqのバージョンは、Ubuntu12.04上のバージョン2.59です。
MXレコードはメール配送のために利用されるDNSレコードです。
メールアドレスのドメインパート(xxx@example.tldのexample.tldの部分)と、メールサーバ(SMTPサーバ)の対応を解決します。
dnsmasqでは以下のオプションがMXレコードに関連します。
mx-host=MX name(,SMTPサーバ名)(,優先度)
MX name(メールアドレスのドメインパート)についてのSMTPサーバのホスト名を設定します。
優先度はMXレコードの優先度設定で、優先度を変えて複数のSMTPサーバを指定できます。
SMTPサーバ名を省略した場合、後述のmx-targetが設定されていればその値を、なければdnsmasqの動作しているホスト名を返します
mx-host=example.tld,smtp0.example.tld,10 mx-host=example.tld,smtp1.example.tld,20
MXレコードの問い合わせ結果は以下になります。
# host -t MX example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: example.tld mail is handled by 20 smtp1.example.tld. example.tld mail is handled by 10 smtp0.example.tld. #
mx-target=SMTPサーバ名
mx-hostがSMTPサーバの設定なしに設定されていた場合、それに対応するSMTPサーバを設定します。
mx-hostが設定されていなかった場合には、dnsmasqの動作しているホストに対するMXレコードが作成され、そのSMTPサーバの値として使われます
mx-target=smtp.example.tld
MXレコードの問い合わせ結果は以下になります。
(dnsmasq-srvがdnsmasqの動作しているホスト名です)
# host -t MX dnsmasq-srv Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: dnsmasq-srv mail is handled by 0 smtp.example.tld. #
A, AAAAレコードが登録されている各ホストに対して、そのホスト自身をSMTPサーバとして指すMXレコードを返すようになります。
selfmx
MXレコードの問い合わせ結果は以下になります。
# host -t MX ubuntu.example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: ubuntu.example.tld mail is handled by 1 ubuntu.example.tld. #
A, AAAAレコードが登録されている各ホストに対して、mx-targetで設定された値をMXレコードとして返すようになります。
mx-targetが設定されてなければ、dnsmasqの動作しているホストをMXレコードとして返します。
localmx
MXレコードの問い合わせ結果は以下になります。
(dnsmasq-srvがdnsmasqの動作しているホスト名です)
# host -t MX ubuntu.example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: ubuntu.example.tld mail is handled by 1 dnsmasq-srv. #
PTRレコードは、IPアドレスの逆引き、つまりIPアドレスからホスト名を名前解決するためのDNSレコードです。
dnsmasqでは以下のオプションがPTRレコードに関連します。
ptr-record=in-addr.arpaドメインのホスト名,対応するホスト名
in-addr.arpaは逆引きの名前空間のドメインです。
逆引きするIPアドレスに対応したin-addr.arpa名を設定します。
ptr-record=1.20.168.192.in-addr.arpa,ubuntu
PTRレコードの問い合わせ結果は以下になります
# host 192.168.20.1 Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: 1.20.168.192.in-addr.arpa domain name pointer ubuntu. #
SRVレコードは、ドメイン上のサービスの場所を解決するDNSレコードです。
ActiveDirectoryや、SIPなどのサービスで利用されます。
後述のNAPTRレコードと組み合わせて利用することも多いです。
dnsmasqでは以下のオプションがSRVレコードに関連します。
srv-host=<_service>.<_prot>.[<domain>],[<target>[,<port>[,<priority>[,<weight>]]]]
srv-host=_ldap._tcp,ldapserver.example.tld,389
SRVレコードの問い合わせ結果は以下になります
# host -t SRV _ldap._tcp.example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: _ldap._tcp.example.tld has SRV record 0 0 389 ldapserver.example.tld. #
TXTレコードはホストやドメインに対応する任意のテキストデータを提供するDNSレコードです。
メールのドメイン詐称を防ぐためのSPF(Sender Policy Framework)などで利用されています。
dnsmasqでは以下のオプションがTXTレコードに関連します。
txt-record=ホスト・ドメイン名(,テキストデータ)
txt-record=example.tld,"v=spf1 a -all"
TXTレコードの問い合わせ結果は以下になります
# host -t TXT example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: example.tld descriptive text "v=spf1 a -all" #
CNAMEレコードは、ホスト名に別名を付けるためのDNSレコードです。
dnsmasqでは以下のオプションがTXTレコードに関連します。
cname=別名,別名を割り当てるホスト名
「別名を割り当てるホスト名」はdnsmasqのAレコードとして存在している必要があります。
cname=debian,ubuntu
CNAMEレコードの問い合わせ結果は以下になります
# host debian Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: debian is an alias for ubuntu. ubuntu has address 192.168.20.1 #
NAPTRレコードは、指定したドメイン名に様々な情報を定義するためのDNSレコードです。
MXレコードを汎用化したものといえます。
dnsmasqでは以下のオプションがNAPTRレコードに関連します。
naptr-record=<name>,<order>,<preference>,<flags>,<service>,<regexp>[,<replacement>]
naptr-record=_sip._udp.example.tld,0,0,s,SIP+D2U,!^.*$!sip:customer-service@example.tld!
NAPTRレコードの問い合わせ結果は以下になります
# host -t NAPTR _sip._udp.example.tld Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: _sip._udp.example.tld has NAPTR record 0 0 "s" "SIP+D2U" "!^.*$!sip:customer-service@example.tld!" . #
dnsmasqのDNS機能は、SOAやNSなどのインターネット上の本格的なDNSサーバとして必要なレコードはサポートしていませんが、
MXやSRV,NAPTRなどのイントラ内のサービス展開に有用なDNSレコードのサポートは充実しているようです。
以上、dnsmasqのネームサーバ機能で、MX, PTR, SRV, TXT, CNAME, NAPTRといったDNSレコードを設定する方法についてでした。