[vox-tech] Redundant DSL Question

Ted Deppner vox-tech@lists.lugod.org
Sun, 22 Dec 2002 21:23:04 -0800


On Sun, Dec 22, 2002 at 10:25:53AM -0800, Rod Roark wrote:
> (1) Round-robin DNS.  Advertise both external IP addresses

Bind prefers the first record I believe, so this could be more than a 1/2
down if one were dead.

> (2) Run a separate instance of BIND on each of the two
> interfaces, one as the primary and one as the secondary
> nameserver.  Each instance resolves names to its own IP

Ugh.  This violates some RFC expectations, and might cause problems if
carried to extremes (NS records).

For A records it should work fine, however it's still messy.

> Any other ideas?

A) Use an external DNS provider that allows dynamic updates (ie
dyndns.org).  Have each server set to update for it's IP address.  How to
control this is the only question, but that's easily solved by some
scripting to determine which external link is up (ping to that side's
gateway, then to something farther through that link), and which servers
are online (heartbeat).

B) use the methods in A for detection and decision making, and update your
DNS servers accordingly.  This is trivial for something like djbdns, less
so for BIND (debian does have a bind dynamic update tool though).

By doing intelligent ping checks (packet loss > 10%) you can also take
links offline if the're overloaded, the ISP is screwed, etc.

For instance, I have a script that knows about all my connectivity options
(ie, DSL, cable, dialup1, dialup2), and it runs through in my preferred
order checking for a link that passes 100% of the packets.  If it is not
met, it brings up the next in line circuit.  If it is met, it turns down
all other methods past that.  The only thing you need different is hooks
into DNS...  I can give more details if desired... this is a fun exercise
though.

This is an easily solved challenge.  Doing so elegantly sounds like the
interesting part... ideas?  I have some, which I'll be happy to share.

-- 
Ted Deppner
http://www.psyber.com/~ted/