I have wrote the follow How-To for turning an E-smith server/gateway into a public DNS server with dual named instances in the same chroot shell. Before I fully release it, am interested if this list has any suggestions on improving it. I do understand that running a public DNS server isn't recommended by e-smith, but I wrote this for those that may be interested. ================================================================= == Security ================================================================= I am limiting packets to be of type UDP on port 53. Since TCP packages are used for ZONE update requests. Is this enough, or is there more rules I can put in IPchains? ================================================================= == Need Help: ================================================================= 1) How do I get /sbin/e-smith/signal-event console-save to automatically re-build my custom Named Conf templates? (/etc/named-ext.conf) 2) How do I get console-save to move my named*.conf files to /home/dns/etc ? 3) I don't think we need to remove the 60domains file on the internal side or should I? (See step 3.C) 4) How to reset IPchains and inittab without rebooting? If I need to reboot, is "init 6" a good/safe way of rebooting the system? or should I use the console? ================================================================= == Public DNS HOTO for E-SMITH 4.1.X ================================================================= ==================================== ==Instructions on how to set up DNS to Host a Public Website. ==================================== Before you start: To transfer your website to your machine you need to have 2 DNS servers. Your e-smith machine can be one of them, but you will need a second. This can be done by a second e-smith machine on a different static IP number. You can also do this by paying a fee and using a public DNS or having a friend machine be your secondary DNS server. Assumptions: These instructions assume you have a 2 static IP number (111.222.0.3, 111.222.0.4) The E-smith machine is a gateway with two Net cards. The Internal IP is 192.168.0.1. The new domain you are hosting is: mycompany.com ====================================================================== ==Turning your E-smith 4.1.X machine into a public dual DNS server: ====================================================================== ==I tested this on E-smith version 4.1.2 1)Create 2 custom templates for the named.conf files for the Dual DNS servers (one Internal & one External) mkdir /etc/e-smith/templates/etc/named-ext.conf mkdir /etc/e-smith/templates-custom/etc/named.conf mkdir /etc/e-smith/templates-custom/etc/named-ext.conf cp /etc/e-smith/templates/etc/named.conf/* /etc/e-smith/templates-custom/etc/named.conf cp /etc/e-smith/templates/etc/named.conf/* /etc/e-smith/templates-custom/etc/named-ext.conf 2)Customize the External DNS config file (name-ext.conf) 2.A) Update the "listen on" line in file "15listenon" From: listen-on \{ 127.0.0.1; { $LocalIP }; \}; To: listen-on \{ { $ExternalIP }; \}; 2.B) Add local Host files as "31MyCompany" (use command "pico 31MyCompany") #----------------------------------------- # MyCompany.com domain #----------------------------------------- zone "mycompany.com" \{ type master; file "mycompany.host.ext"; \}; 2.B.1) If you have more than one domain follow set 2.B for each creating files 31MyDomain or 31company2 2.C) Remove default Local Host file (since the use the 192.168.x.x numbers) rm 30localhost 2.D) Remove reverse lookup files (since these also have 192.168.x.x numbers) rm 40localptrs 2.E) Remove the default Domain files (since we will had these by hand) rm 60domains 3)Customize the Internal DNS config file (name.conf) 3.A) Copy domain files from external config directory to Internal directory cp /etc/e-smith/templates-custom/etc/named-ext.conf/31* /etc/e-smith/templates-custom/etc/named.conf 3.B) Edit all 31 domain files to list the internal files: (example: pico 31MyCompany) from file "mycompany.host.ext"; to file "mycompany.host.int"; 3.C) I don't think we need to remove the 60domains file on the internal side? Any Comments? 4)expand the named config files templates and copy to /home/dns/etc /sbin/e-smith/expand-template /etc/named.conf /sbin/e-smith/expand-template /etc/named-ext.conf cp /etc/named-ext.conf /home/dns/etc /**** Step 9 will do a /sbin/e-smith/signal-event console-save which will copy only the named.conf file. **/ /** any hints on how to get e-smith to automatically copy the named-ext.conf when Templates are changed would be appreciated **/ 5)Create mycompany.host.ext zone file in directory /home/dns/var/named (example: pico /home/dns/var/named/mycompany.host.ext) copy the following to the file: @ IN SOA mycompany.com. admin.mycompany.com. ( 2001042501 ; Serial 8H ; Refresh 2H ; Retry 7D ; Expire 1D ) ; Minimum IN NS ns1 IN NS ns2 IN MX 10 mail mycompany.com. IN A 111.222.0.3 ns1 IN A 111.222.0.3 ns2 IN A 111.222.0.4 mail IN A 111.222.0.3 www IN A 111.222.0.3 ftp IN A 111.222.0.3 6)Create mycompany.host.int zone file in directory /home/dns/var/named (example: pico /home/dns/var/named/mycompany.host.int) @ IN SOA mycompany.com. admin.mycompany.com. ( 2001042501 ; Serial 8H ; Refresh 2H ; Retry 7D ; Expire 1D ) ; Minimum IN NS ns1 IN NS ns2 IN MX 10 mail mycompany.com. IN A 192.168.0.1 ns1 IN A 192.168.0.1 ns2 IN A 192.168.0.2 mail IN A 192.168.0.1 www IN A 192.168.0.1 ftp IN A 192.168.0.1 7) Edit the inittab file to start two instances of Named 7.A) create a custom template for /etc/inittab mkdir /etc/e-smith/templates-custom/etc/inittab cp /etc/e-smith/templates/etc/inittab/* /etc/e-smith/templates-custom/etc/inittab 7.B) edit file 15named to launch 2 copies of named with different config files (example: pico 15named) $OUT .= "ni:3457:respawn:/usr/sbin/named -f -u dns -g dns"; $OUT .= " -t /home/dns /etc/named.conf\n"; $OUT .= "ne:3457:respawn:/usr/sbin/named -f -u dns -g dns"; $OUT .= " -t /home/dns /etc/named-ext.conf"; 7.C) expand this new template /sbin/e-smith/expand-template /etc/inittab 7.D) Changes will not take effect until a reboot (but we will do that at the end) 8) Update ipchains starting script to allow incoming packets to port 53. We are limiting the packets to be of type UDP since TCP packages are used for ZONE update requests. 8.A) create a custom template for /etc/rc.d/init.d/masq mkdir /etc/e-smith/templates-custom/etc/rc.d/init.d/masq cp /etc/e-smith/templates/etc/rc.d/init.d/masq /etc/e-smith/templates-custom/etc/rc.d/init.d/masq 8.B) create file 45AllowDNS with the follow contents: { $OUT .= <<'HERE' /sbin/ipchains --append input -p udp -d $OUTERNET 53 -j ACCEPT HERE } 9) Do a console-save command to global update /sbin/e-smith/signal-event console-save 10) Reboot the system. (Is "init 6" a good/safe way of rebooting the system?) ====================================================================== ==Adding a new Domain to the public dual DNS servers: ==Example: How to do DNS for a Friend or host another Domain as a Virtual Domain ====================================================================== Assume: I am adding Domain PERSONAL.ORG as an IBAY on the same machine ======================================================================== 1) Customize the External DNS config file (name-ext.conf) 1.A) add a 31personal file (example: pico /etc/e-smith/templates-custom/etc/named-ext.conf/31personal) #----------------------------------------- # personal.org domain #----------------------------------------- zone "personal.org" \{ type master; file "personal.host.ext"; \}; 2) Customize the Internal DNS config file (name-int.conf) 1.A) add a 31personal file (example: pico /etc/e-smith/templates-custom/etc/named-int.conf/31personal) #----------------------------------------- # personal.org domain #----------------------------------------- zone "personal.org" \{ type master; file "personal.host.int"; \}; 3) Expand the Named Config Files and copy them to the chroot location (/home/dns/etc) /sbin/e-smith/expand-template /etc/named.conf /sbin/e-smith/expand-template /etc/named-ext.conf cp /etc/named*.conf /home/dns/etc 4) Create personal.host.ext zone file in directory /home/dns/var/named (example: pico /home/dns/var/named/personal.host.ext) see step 5 above to example of file contents. 5) Create personal.host.int zone file in directory /home/dns/var/named (example: pico /home/dns/var/named/personal.host.int) see step 6 above to example of file contents. 6) Restart the Named processes by killing them and init will automatically respawn new instances of them. killall named 7) You can verify killall did it job by running "pidof named" before and after and you will see that each time it list 2 different pid showing that 2 instances of named are running.