Adding CNAME for the root domain issue
    Tony Finch 
    dot at dotat.at
       
    Wed Apr 27 16:03:49 UTC 2016
    
    
  
Baird, Josh <jbaird at follett.com> wrote:
> Any thoughts on a service like Cloudfare's 'CNAME Flattening' [1]?
>
> [1] https://blog.cloudflare.com/introducing-cname-flattening-rfc-compliant-cnames-at-a-domains-root/
Run a command like this from cron
	aname example.com www.example.com | nsupdate -l
Using the aname script below...
Tony.
-- 
f.anthony.n.finch  <dot at dotat.at>  http://dotat.at/  -  I xn--zr8h punycode
Biscay: North or northeast 4 or 5. Slight or moderate. Showers. Good.
#!/usr/bin/perl
use warnings;
use strict;
sub dig {
	my $domain = shift;
	my $type = shift;
	my $ttl;
	my @answer;
	my $qd = quotemeta $domain;
	my $qt = quotemeta $type;
	my @dig = qx{dig +norec $qd IN $qt};
	die "dig $domain IN $type: no reply\n"
	    unless @dig;
	while (@dig) {
		if ($dig[0] =~
			m{^;; ->>HEADER<<- opcode: QUERY, status: (\w+)}) {
			die "dig $domain IN $type: $1\n"
			    unless $1 eq 'NOERROR';
			last;
		}
		shift @dig;
	}
	die "dig $domain IN $type: no header\n"
	    unless @dig;
	while (@dig) {
		if ($dig[0] =~ m{^;; ANSWER SECTION:}) {
			last;
		}
		shift @dig;
	}
	die "dig $domain IN $type: no answer\n"
	    unless @dig;
	while (@dig) {
		if ($dig[0] =~ m{^\S+\s+(\d+)\s+IN\s+$qt\s+(\S+)}) {
			$ttl = $1;
			push @answer, $2;
		}
		if ($dig[0] =~ m{^;; AUTHORITY SECTION:}) {
			last;
		}
		shift @dig;
	}
	die "dig $domain IN $type: no authority\n"
	    unless @dig;
	return ($ttl, @answer);
}
sub nsupdate {
	my $domain = shift;
	my $type = shift;
	my $ttl = shift;
	print "update delete $domain IN $type\n";
	for (@_) {
		print "update add $domain $ttl IN $type $_\n";
	}
}
if (@ARGV != 2) {
	print STDERR "usage: aname <alias> <target>\n"
}
my ($alias,$target) = @ARGV;
my @A = dig $target, 'A';
my @AAAA = dig $target, 'AAAA';
nsupdate $alias, 'A', @A;
nsupdate $alias, 'AAAA', @AAAA;
print "show\nsend\nanswer\n";
exit;
    
    
More information about the bind-users
mailing list