How to Setup a New AS112 Server

To arrange to host anycast service for these zones, contact the AS112 Project. You should know how to configure both intra-AS routing, and inter-AS routing using BGP, and you should plan on running a stealth slave of the IANA.ORG zone so that your servers will return appropriate glue in their responses.

Here is a general overview written by Jim Brown at his old Chagreslabs website:

AS112 Setup and Configuration Help Page (last updated: 31-May-2003-JMB)

Click here for more information on the AS-112 Project.

The purpose of this site is to help those that wish to configure a AS112 system. 
Configuring an AS-112 server and anycasting it within your local network or exchange 
point is a GoodThing(tm).  It will capture RFC-1918 DNS queries and updates within your 
network thus preventing that traffic from going towards the root-dns servers.

For those that would like to read more about this problem I have a internet-draft that 
I'm working on located here.  It has not been published on any IETF WG yet as I'm 
finishing it up.

Configuring an AS112 server is quite simple and easy to do

First you need a dedicated machine.  Depending on how you plan to use this server 
it could see upwards of 2000 queries (UDP and or TCP) per second. So plan as needed...
A basic beginning would be:

CPU 	600 Mhz or better
RAM 	128 MB
NIC 	10Mb or 100Mb
HD 	2G minimum
VIDEO 	something cheep

Next you need name server software.  I recommend BIND 8-latest, but BIND-9-latest 
will also work just fine.  You can find BIND-8 here   and  BIND-9 here  There is 
other DNS server software out there as well.  Some works better than others.  Another 
good choice would be NSD which you can learn more about here

You have two ways of dealing with routing. 

1.  You can assign the AS112 prefix to your server and setup a static route on your 
router.  This will prevent you from announcing the prefix with AS112 as the origin, 
not-recommended for transit providers or IX's, but it does work.  This method is the 
easy way for companies that what to inject this locally but not deal with BGP and such.

2. You can use ZEBRA or Quagga Routing Suite as a BGP speaker on your AS112 server.  
This will allow you to inject via BGP the DNS servers prefix with AS112 being the 
origin AS.  Much better solution for IX and service providers. (More info on using 
Quagga coming shortly)

Last choice is OS.  While I personally favor BSD, Linux, Solaris or any other flavor 
of UN*X will work just fine.  Please don't come to me if you use Windows.  I don't 
know windows DNS and thus have NO way to help you.

Next you build the machine, and software components.  Default config options worked 
just fine for us when building the software.

Once you have the machine built, OS loaded, a name server running, and Zebra installed 
its time to configure the software.  I'm assuming that the reader knows how to rumble 
around a UNIX machine.

OS Config:

Not much needed here.   I'd install some level of host based packet filters  
(ipfw, ipchains, etc) that limit the box to only port 53 (UDP and TCP) and 22 
(TCP) and any others that you might absolutely need.

Kill daemons that you aren't going to use like, inetd, sendmail, nfs goop (portmap, 
rpc.statd, mountd, etc), telnet, ftp, and such.  Ya don't need them

Your ethernet interface will have 4 IP addresses assigned (there might be a better 
way with zebra, need to research it abit more).

The first IP is the unicast IP for the machine, this will come from your local pool 
of IP addresses.

The next three are from the AS112 project:,, 

The last thing you will need to do is make sure your kernel is configured to handle 
the large number TCP connections you may receive, number of send and receive buffers 
and such.  Make sure you watch your memory requirements when making these changes.  
This depends on the size of the community that will have access to your box.  Since 
the choice of OS's is left to the reader, so is the details on how to tune your 
kernel.  Some reference sites are:

Rob Thomas ala CYMRU:



Next  Configuring ZEBRA.

Setting up Zebra is pretty straight forward.  If you have done BGP configs 
before this will look a lot like a Cisco config.

Here is my ZEBRA config.  If you have comments or better ways to do things, 
feed back is appreciated

! -*- zebra -*-
hostname as112-rtr
password zebra
enable password zebra
!log file zebra.log
!bgp mulitple-instance
router bgp 112
bgp router-id
neighbor PEER_IP remote-as 10480
neighbor PEER_IP ebgp-multihop
neighbor PEER_IP next-hop-self
!log file bgpd.log

! -*- zebra -*-

Basically this config will announce the prefix with an origin 
of AS112 into your BGP routing table.   Make sure you change   PEER_IP to match 
your BGP neighbor.  Make sure you practice good BGP config habits on your 
neighbor router.  For example you may want to make sure that this prefix is 
NOT announced to other peers until everything is tested.  If you announce it 
to your transit provider(s) you may find yourself receiving a large amount of 


Next is setting up your DNS server.  We will provide a code sample for BIND 8/9  
Others DNS server programs typically have some way of converting a BIND config 
to their format.


options {
directory "/etc/namedb";

dump-file "s/named_dump.db";
recursion no;
fetch-glue no;

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "localhost.rev";

zone "" { type master; file "m/db.RFC-1918"; };

zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };
zone "" { type master; file "m/db.RFC-1918"; };

zone "" { type master; file "m/db.RFC-1918"; };

zone "" { type master; file "m/db.RFC-1918"; };

zone "" { type master; file "m/"; };

logging {
channel update-log {
file "/dev/null" versions 5 size 1g;
print-category yes;
print-severity yes;
print-time yes;
severity info;
category update { update-log; };
category security { update-log; };

Next you need to create your RFC-1918 zone file

db.RFC-1918  zone file:

$TTL 300
@ IN SOA (
                         2002040800 30m 15m 1w 1w )

The zone file:

$TTL 300
@ IN SOA (
                         2003030100 ; serial
                         1H ; refresh
                         10M ; retry
                         4w2d ; expiry
                         15S ) ; minimum

     TXT "IXNM, Inc. New Mexico's only Neutral IX"
     TXT "Albuquerque, NM, USA"
     TXT "Unicast IP:"
     TXT "See for more information."
     TXT "See for local information."

You should change the text in the TXT records above to reflect YOUR 


All that's left is starting up your name server, and zebra and testing 
with some  dig commands.  You should make sure your start-up scripts, 
things like rc.d scripts, are configured to start your name server and 
zebra when the box is booted up.   I would recommend that you start your 
name server first.  Make sure its running (you can test for a PID) and 
then start zebra.   No need in having Zebra running and traffic flowing 
that you can't answer because your name server isn't running. :)


If you have any feed back, comments, or corrections, please email them to

   as112 AT chagreslabs D0T net


Legal Notice:

The contents of this page is Copyright 2003,2004,2005, Chagres Research, 
Inc.  All rights reserved.

You are allowed to link to or reproduce this page as long as proper 
credit is given.

The authors and Chagres Research, Inc. are NOT liable for any damages 
that may occur from the use or misuse of the information contained on 
this web page.  By using this web page and its information you agree to 
hold Chagres Research, Inc and the authors free from liability for your 
use or misuse of this information. 

This information is provided AS IS WITH NO WARANTY OF ANY KIND.