回答:
RFC1912セクション2.4に従って:
A CNAME record is not allowed to coexist with any other data. In
other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you
can't also have an MX record for suzy.podunk.edu, or an A record, or
even a TXT record. Especially do not try to combine CNAMEs and NS
records like this!:
podunk.xx. IN NS ns1
IN NS ns2
IN CNAME mary
mary IN A
ネームサーバーはCNAMEに従う必要があるのか、CNAMEが重複する実際のレコードで応答する必要があるのかをネームサーバーが知らないので、RFCは完全に理にかなっています。bar.com
はゾーンであるため、暗黙的にbar.com
名前のSOAレコードを持っています。同じ名前のSOAレコードとCNAMEの両方を持つことはできません。
ただし、SOAレコードは一般的にゾーンのメンテナンスにのみ使用されるため、ゾーンの頂点にCNAMEを提供したいという状況はごく一般的です。RFCでは禁止されていますが、多くのエンジニアは、「クエリが明示的にSOAレコードを要求しない限り、CNAMEを追跡する」などの動作を望んでいます。Route 53が提供するのはそのためalias records
です。これらは、Route 53固有の機能であり、必要な機能を正確に提供します。見てhttp://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html
A
記録があります。どうすればよいですか?
bar.com
。(名前は、これが機能するためにリダイレクト元のドメインと同じである必要があります!)bar.com
S3バケットに行くProperties
> Static Website Hosting
を選択Redirect all requests to another host name
し、入力したfoo.com
テキストボックスに。Hosted Zone
for bar.com
でをクリックしますCreate Record Set
。A - IPv4 address
タイプを選択します。クリックYes
のためにAlias
。のテキストボックスをクリックしますAlias Target
。bar.com
の下にリストする必要があります-- S3 Website Endpoints --
。レコードを保存します。数分待つと、リクエストがbar.comからfoo.comにリダイレクトされるようにリダイレクトが設定されているはずです。これと同じ方法を使用して、ネイキッドドメインをサブドメイン(wwwなど)にリダイレクトできます。これは、www.foo.comをCNAMEにする必要がある場合に使用するため、同じ方法でfoo.comからwww.foo.comにリダイレクトします。foo.comがAレコードの場合、この手法を使用してwww.foo.comからfoo.comにリダイレクトできます。
注:このメソッドはフルパスで転送します。つまり、http://bar.com/testはhttp://foo.com/testに転送されます。
tldr; ResourceRecordSet名としてFQDNを渡す必要があります。
私はこのステートメントを使用して同じ問題を抱えていましたc#snip:
private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
{
var changeBatch = new ChangeBatch();
var rRs = new ResourceRecordSet(image.Name, RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
var change = new Change(ChangeAction.UPSERT, rRs);
changeBatch.Changes.Add(change);
var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
var response = ec2.ChangeResourceRecordSets(request);
Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
}
この場合、image.Name == "Listener"
それを次のように変更した後:
private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image)
{
var changeBatch = new ChangeBatch();
var rRs = new ResourceRecordSet(string.Format("{0}.{1}",image.Name, "testing.foo.bar.com"), RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} };
var change = new Change(ChangeAction.UPSERT, rRs);
changeBatch.Changes.Add(change);
var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch);
var response = ec2.ChangeResourceRecordSets(request);
Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns);
}
現在、渡される値は「Listener.fully.qualified.com」です。
現在は機能しています。
CNAMEの代わりにDNAMEを使用する必要があります。CNAMEレコードは、ラベルを別のラベルにのみリダイレクトできます。
ラベルではなくドメイン名のリダイレクトについて話すときは、DNAMEを使用する必要があります
$ORIGIN bar.com
IN DNAME foo.com
これは、すべてのA、NS、およびその他のすべてのレコードを削除する必要があることも意味します。これはfoo.comドメインで設定する必要があります。
DNAME
RFC 2672で定義されています。これがOPとどのように関係しているか説明していただけますか?Route53では、少なくとも標準インターフェースからのSOAまたはNSレコードの削除は許可されておらず、DNAMEは使用可能なオプションではありません。