diff --git a/configure b/configure
index 4d7f0e6ef14b56dd54e4f0626050ed756c77cbd9..a5b74a9d5996b3f1cb473d74995bdb09750e795e 100755
--- a/configure
+++ b/configure
@@ -1809,6 +1809,7 @@ s%@PUBLIC_NETWORK@%$PUBLIC_NETWORK%g
 s%@PUBLIC_ROUTER@%$PUBLIC_ROUTER%g
 s%@PUBLIC_NETMASK@%$PUBLIC_NETMASK%g
 s%@DHCPD_DYNRANGE@%$DHCPD_DYNRANGE%g
+s%@NAMED_FORWARDERS@%$NAMED_FORWARDERS%g
 s%@DHCPD_CONTROLNET_DECL@%$DHCPD_CONTROLNET_DECL%g
 s%@SSLCERT_COUNTRY@%$SSLCERT_COUNTRY%g
 s%@SSLCERT_STATE@%$SSLCERT_STATE%g
diff --git a/configure.in b/configure.in
index 41ecfa09336e493ad73348f31f357fd8065e93a3..979789f6f81144db039e51544db8ac6f179aa9a4 100755
--- a/configure.in
+++ b/configure.in
@@ -84,6 +84,7 @@ AC_SUBST(PUBLIC_ROUTER)
 AC_SUBST(PUBLIC_NETMASK)
 AC_SUBST(DHCPD_DYNRANGE)
 AC_SUBST(DHCPD_CONTROLNET_DECL)
+AC_SUBST(NAMED_FORWARDERS)
 AC_SUBST(SSLCERT_COUNTRY)
 AC_SUBST(SSLCERT_STATE)
 AC_SUBST(SSLCERT_LOCALITY)
diff --git a/defs-default b/defs-default
index 7bb20585445f4ca8f3b1e240fe7dcafd6ebb9ad9..bddea7aa66f2b81c3b4f350bbb408ebea62b1928 100644
--- a/defs-default
+++ b/defs-default
@@ -60,3 +60,4 @@ PUBLIC_NETWORK=155.98.33.0
 PUBLIC_ROUTER=155.98.33.1
 PUBLIC_NETMASK=255.255.255.0
 DHCPD_DYNRANGE="155.98.36.200 155.98.36.249"
+NAMED_FORWARDERS=""
diff --git a/defs-elabinelab b/defs-elabinelab
index 1468c1811dd7e4369ce6ed7ae1f8497e35371077..412bf41f797af7720b305f5524dafbf85529de9f 100644
--- a/defs-elabinelab
+++ b/defs-elabinelab
@@ -63,6 +63,7 @@ PUBLIC_NETWORK=changeme
 PUBLIC_ROUTER=changeme
 PUBLIC_NETMASK=changeme
 DHCPD_DYNRANGE=changeme
+NAMED_FORWARDERS=changeme
 #
 # Must localize to avoid conflict with outer emulab frisbeed.
 #
diff --git a/defs-example b/defs-example
index b3c2f37bab2ae9c90eb7bb5112b1b4e4c408eaaa..3452b540ce165342553e88768d16697d5e769cc5 100644
--- a/defs-example
+++ b/defs-example
@@ -136,6 +136,12 @@ PUBLIC_NETMASK=255.255.255.0
 #
 DHCPD_DYNRANGE="155.98.36.200 155.98.36.249"
 
+#
+# If you have forwarders for your named, specify them here for named.conf
+# generation in the named directory.
+#
+NAMED_FORWARDERS="1.1.1.1 1.1.2.1"
+
 #
 # You shouldn't have to change anything below this point
 #
diff --git a/defs-stoller-home b/defs-stoller-home
index 209654e56c0b0e311541746f002af0af8a706277..14965ecf7a74966855383d9d2b795515fc2f52bb 100644
--- a/defs-stoller-home
+++ b/defs-stoller-home
@@ -52,3 +52,5 @@ PUBLIC_NETWORK=155.98.33.0
 PUBLIC_ROUTER=155.98.33.1
 PUBLIC_NETMASK=255.255.255.0
 DHCPD_DYNRANGE="155.98.36.200 155.98.36.249"
+NAMED_FORWARDERS="206.163.129.2 69.59.192.71 69.59.192.72"
+
diff --git a/named/GNUmakefile.in b/named/GNUmakefile.in
index 6139f12ebaa4d5a0ac73234b399be93d9c0895bf..c53fae34da13b84f303b9a54c374f9b9398cfed5 100644
--- a/named/GNUmakefile.in
+++ b/named/GNUmakefile.in
@@ -12,6 +12,7 @@ SUBDIR		= named
 ETCDIR          = /etc
 NAMEDB_DIR	= $(ETCDIR)/namedb
 OURDOMAIN       = @OURDOMAIN@
+FORWARDERS      = @NAMED_FORWARDERS@
 
 # This is silly. Needs to be done properly.
 TESTBED_NETWORK = @TESTBED_NETWORK@
diff --git a/named/named.conf.template.in b/named/named.conf.template.in
index b1c81ed3fbf046f974db1cd20a86bc03485cdd23..db2955b1554e17068e8eec0d7aea805ccf9af0ab 100644
--- a/named/named.conf.template.in
+++ b/named/named.conf.template.in
@@ -15,10 +15,7 @@
 #
 options {
     directory "/etc/namedb";
-    # Put forwarders here if you have them
-    #forwarders {
-    #    1.1.1.1;
-    #};
+    %forwarders%
 };
 
 view "internal" {
diff --git a/named/named_makeconf.in b/named/named_makeconf.in
index 67db335e0c0d8e6565b6f1698b955dade0feaedb..17c26f3625c86b7e2ddc6dabcbe5b17531cebdcd 100755
--- a/named/named_makeconf.in
+++ b/named/named_makeconf.in
@@ -35,6 +35,7 @@ my $PRIVATE_NETMASK    = "@PRIVATE_NETMASK@";
 my $PUBLIC_NETWORK     = "@PUBLIC_NETWORK@";
 my $PUBLIC_ROUTER      = "@PUBLIC_ROUTER@";
 my $PUBLIC_NETMASK     = "@PUBLIC_NETMASK@";
+my $NAMED_FORWARDERS   = "@NAMED_FORWARDERS@";
 
 # Testbed libraries.
 use lib "@prefix@/lib";
@@ -83,6 +84,18 @@ while (<IF>) {
 	    elsif ($2 eq "internal_network_dotted_reverse") {
 		print $1 . "${c}.${b}.${a}" . "$3\n";
 	    }
+	    elsif ($2 eq "forwarders") {
+		if ($NAMED_FORWARDERS eq "") {
+		    print "";
+		}
+		else {
+		    print $1 . "forwarders {\n";
+		    foreach my $forwarder (split(" ", $NAMED_FORWARDERS)) {
+			print $1 . $1 . "$forwarder;\n";
+		    }
+		    print $1 . "};\n";
+		}
+	    }
 	    else {
 		die("*** $0:\n".
 		    "    Unknown special tag in named template file!\n");