Linux.named

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

Überlick: lokaler DNS Server


DNS-Adressen wechseln ganz im Gegensatz zu HTML-Inhalten nicht so h䵦ig. Deshalb will ich keinen vollst䮤igen Proxy einsetzten. Aber ich will nicht, dass jede (wiederholte) DNS Anfrage ins Internet rausgepustet wird! Bis sich alle Datenbanken weltweit angeglichen haben kann schon mal ein halber Tag vergehen, also k?n wir auch guten gewissens DNS anfragen cache, etwa mit einer Haltbarkeit der cache inhalte von 10 min ?!. Deshalb ist ein Caching unbedenklich, und auch besonders lohnend, da einige UDP/TCP Verbindungsaufbau-Vorg䮧e lokal abgewickelt werden k?n! Die Idee liegt nahe, hey man k?e den Linux-Server doch auch als Name-Server (DNS-relay) einsetzen. Egal welcher Provider dann angew䨬t ist (=welcher nameserver auch immer angegeben werden muss) der lokale DNS-Server leitet alle Anfragen immer an die richtige Adresse (nä­¬ich an den Nameserver draussen im INternet) weiter. Wie die jeweiligen namenserver heissen steht ja in der /etc/resolv.conf. Die Clients m?nix mehr umstellen (im Feld Nameserver)! Gateway UND Nameserver haben dann die gleiche Zieladresse. Hier ist die L?g:

Voraussetzungen

Bei dem DNS Server selbst

  • Hostname und zugehörige Domäne muss gesetzt sein. Hostname ist nach der Standardinstallation "linux" und sollte auf einen sinnvollen Wert geändert werden. Die Domäne des Host sollte in unserem Beispiel auf "pcworld" gesetzt werden (Sorry, dies kommt leider noch aus der Zeit, in der es nur PCs und MACs gab). Sinnvollere Domänennamen sind Firmennamen oder Abteilungsnamen.
  • Nameserver Eintrag muss leer bleiben!

Bei den Clients

  • Hostname und Domäne setzen.
  • Zusätzlich die IP des Nameservers angeben. Rechts daneben steht auch eine Nameserver Domain. Auch diese muss auf "pcworld" gesetzt werden. Damit der client weiss, wie er lokale Namen auflösen soll. Die Internet Namensauflösung würde auch ohne Domain Eintrag klappen.

Konfiguration

Zuerst werden die Pakete [bind9] aus der Serie [n] sowie die [bind9-utils] installiert.

chkconfig --add named 

Danach in der Datei "/etc/named.conf" folgende, mit den Pfeilen markierten Anpassungen eintragen:

-------------------------------------------------------------------------
 
      options {
 
       ->     auth-nxdomain no;

              # The directory statement defines the name server's
              # working directory

              directory "/var/lib/named";

              # The forwarders record contains a list of servers to
              # which queries should be forwarded. Enable this line and
              # modify the IP-address to your provider's name server.
              # Up to three servers may be listed.

              # forwarders { 10.11.12.13; 10.11.12.14; };
              # forwarders { 194.25.2.129; 212.185.248.148; };
              
      ->      forwarders { 217.237.151.161; 217.237.151.33; }; 
 
              # Enable the next entry to prefer usage of the name
              # server declared in the forwarders section.

      ->      # forward first;

              # The listen-on record contains a list of local network
              # interfaces to listen on. Optionally the port can be
              # specified. Default is to listen on all interfaces found
              # on your system. The default port is 53.

              # listen-on port 53 { 127.0.0.1; };

      ->      listen-on port 53 { 127.0.0.1; 192.168.100.181; };

              # The listen-on-v6 record enables or disables listening
              # on IPV6 interfaces. Allowed values are 'any' and 'none'
              # or a list of addresses. IPv6 can only be used with
              # kernel 2.4 in this release.

              listen-on-v6 { any; };

              # The next three statements may be needed if a firewall
              # stands between the local server and the internet.

              # query-source address * port 53;
              # transfer-source * port 53;
              # notify-source * port 53;
 
              # The allow-query record contains a list of networks or
              # IP-addresses to accept and deny queries from. The
              # default is to allow queries from all hosts.

              # allow-query { 127.0.0.1; };

    ->        allow-query { localnets; };     

              # If notify is set to yes (default), notify messages are
              # sent to other name servers when the the zone data is
              # changed. Instead of setting a global 'notify' statement
              # in the 'options' section, a separate 'notify' can be
              # added to each zone definition.

              notify no;
              };

 # The following three zone definitions don't need any modification.
 # The first one defines localhost while the second defines the
 # reverse lookup for localhost. The last zone "." is the
 # definition of the root name servers.

  zone "localhost" in {
        type master;
        file "localhost.zone";
 };

 zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
 };

 zone "." in {
        type hint;
        file "root.hint";
 };

 # You can insert further zone records for your own domains below.

->  zone "pcworld" in {
->	notify no;
-> 	type master;
->	file "pcworld.zone";
->	allow-query {192.168.100/24; };
->	allow-transfer { none; };
->  };

->    zone "100.168.192.in-addr.arpa" in {
->       type master;
->       file "192.168.100.zone";
->     };
---------------------------------------------------------------------


  • Anlegen der Zonendateien:


Das Verzeichnis, in dem die Zonendateien angelegt werden, wird in der Datei "/etc/named.conf" in der Sektion "options" mit dem Schlüssel "directory" (Standardmäßig ist dies "/var/lib/named/") angegeben


/var/lib/named/pcworld.zone
Vor den Rechnernamen dürfen sich keine Leerzeichen befinden.

$TTL 2D
@ IN SOA  raib181.pcworld.  root.pcworld. (
				2005080303	; serial
				2D		; refresh
				4H		; retry
				6W		; expiry
				1W )		; minimum

		IN NS		raib181.pcworld.
		
		
localhost       IN A   127.0.0.1
Thorsten        IN A   192.168.100.11 	
BDB_Bucerius    IN A   192.168.100.12 	
Hanne           IN A   192.168.100.16	
Norbert_Braun   IN A   192.168.100.17 	
Christian       IN A   192.168.100.18	
HeBu-Messe      IN A   192.168.100.20	
Musikduerr      IN A   192.168.100.21	
Alexander       IN A   192.168.100.22	
;Apple1         IN A   192.168.100.23	
;Apple2         IN A   192.168.100.24	
SHARP_AR-235    IN A   192.168.100.30	
SHARP_AR-407    IN A   192.168.100.35	
Konica          IN A   192.168.100.32	
Linus           IN A   192.168.100.72	
Gates           IN A   192.168.100.180	
raib181         IN A   192.168.100.181	
raib182         IN A   192.168.100.182	


/var/lib/named/192.168.100.zone
Vor den Rechnernummern (Letzter Teil der IP-Adresse) dürfen sich keine Leerzeichen befinden.

$TTL 2D
@  IN SOA  raib181.world.  root.pcworld. (
				2005080303	; serial
				2D		; refresh
				4H		; retry
				6W		; expiry
				1W )		; minimum

100.168.192.in-addr.arpa.	IN NS		localhost.
11	IN PTR		Thorsten.pcworld. 		
12	IN PTR		BDB_Bucerius.pcworld. 	
16	IN PTR		Hanne.pcworld.		
17	IN PTR		Norbert_Braun.pcworld.	
18	IN PTR		Christian.pcworld. 	
20	IN PTR		HeBu-Messe.pcworld. 	
21	IN PTR		Musikduerr.pcworld. 	
22	IN PTR		Alexander.pcworld. 	
;23	IN PTR		Apple1.pcworld. 		
;24	IN PTR		Apple2.pcworld. 		
30	IN PTR		SHARP_AR-235.pcworld. 	
32	IN PTR		Konica.pcworld.	 	
35	IN PTR		SHARP_AR-407.pcworld. 	
72	IN PTR		Linus.pcworld.	 	
180	IN PTR		Gates.pcworld.	 	
181	IN PTR		raib181.pcworld.		
182	IN PTR		raib182.pcworld. 		

Nun wird mit dem Befehl rcnamed restart die neue DNS-Konfiguration eingelesen und aktiviert


  • resolv.conf

Jetzt ist noch in der Datei "/etc/resolv.conf" anzugeben, dass man zur Namensaufl?g den lokalen DNS-Server benutzt.

------------------------------------------------------------------------

   search
   nameserver 127.0.0.1

------------------------------------------------------------------------
  • sysconfig/network/config

Damit die "/etc/resolv.conf" nicht bei jeder Einwahl wieder ?hrieben wird muss der Parameter

joe /etc/sysconfig/network/config
 
MODIFY_RESOLV_CONF_DYNAMICALLY=no
MODIFY_NAMED_CONF_DYNAMICALLY=yes      # Dadurch werden die "forwarders" in der"/etc/named.conf" bei jeder Einwahl aktualisiert


Damit wieder alles seine Richtigkeit hat muss nun SuSEconfig ausgef?erden (nicht sicher, ob das notwendig ist)

SuSEconfig
  • and-firewall
Nun m?die neuen Gegebenheiten der Firewall mitgeteilt werden. Folgende 
Zeilen werden im Script "/root/fwdsl.start" nach der Sektion 
"# E-Mail zum relayen" 
hinzugef?  --------------------------------------------------------------------------------
  # DNS-Forwarding
   $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p TCP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j
   $IPTABLES -A INPUT  -i $DEV_INT  -s $INT_NET -p UDP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j
   $IPTABLES -A OUTPUT -o $DEV_ISDN -p TCP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
   $IPTABLES -A OUTPUT -o $DEV_ISDN -p UDP --sport $HIGH_PORT --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
 ------------------------------------------------------------------------


 Zum Abschluß werden auf den Windows-Clients in den Netzwerkeinstellungen bei den
 TCP/IP-Eigenschaften unter Gateway und DNS die IP-Adresse des LINUX-Servers
 angegeben.