Ha, hast du ein Schwein. Hab ich grade eben gemacht unter SuSE 11.0. Wichtig ist nur, wenn man von Anfang an alles von Hand in den Konfigdateien einstellt, auch dabei bleibt. Ein späteres Bearbeiten mit yast kann fatale Folgen haben.
Vorab: Hier die Eckdaten meines DNS:
hostname: linux-server
ip: 192.168.1.100
lokales Netz: 192.168.1.0/24
Domain/Zone: heimnetz.zone
Und los gehts:
Code:
linux-server:~ # named -v
BIND 9.4.2-P1
Hier meine /etc/named.conf
Code:
# Copyright (c) 2001-2004 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# Author: Frank Bodammer, Lars Mueller <lmuelle@suse.de>
#
# /etc/named.conf
#
# This is a sample configuration file for the name server BIND 9. It works as
# a caching only name server without modification.
#
# A sample configuration for setting up your own domain can be found in
# /usr/share/doc/packages/bind/sample-config.
#
# A description of all available options can be found in
# /usr/share/doc/packages/bind/misc/options.
acl heimnetz {192.168.1.0/24;};
options {
# The directory statement defines the name server's working directory
directory "/var/lib/named";
recursion yes;
check-names master warn;
# Write dump and statistics file to the log subdirectory. The
# pathenames are relative to the chroot jail.
dump-file "/var/log/named_dump.db";
statistics-file "/var/log/named.stats";
# 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 { 192.168.1.1; 217.237.149.225; 194.25.2.129; };
# 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 { 192.168.1.100; };
# The listen-on-v6 record enables or disables listening on IPv6
# interfaces. Allowed values are 'any' and 'none' or a list of
# addresses.
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 { heimnetz; };
# 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;
};
# To configure named's logging remove the leading '#' characters of the
# following examples.
logging {
# Log queries to a file limited to a size of 10 MB.
channel query_logging {
file "/var/log/named_querylog"
versions 3 size 10M;
print-time yes; // timestamp log entries
};
category queries {
query_logging;
};
# Or log this kind alternatively to syslog.
channel syslog_queries {
syslog user;
severity info;
};
category queries { syslog_queries; };
# Log general name server errors to syslog.
channel syslog_errors {
syslog user;
severity error;
};
category default { syslog_errors; };
# Don't log lame server messages.
category lame-servers { null; };
};
# The following zone definitions don't need any modification. The first one
# is the definition of the root name servers. The second one defines
# localhost while the third defines the reverse lookup for localhost.
zone "." in {
type hint;
file "root.hint";
};
zone "localhost" in {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};
#Eigene Zone -> Forward Lookup, siehe /var/lib/named/master/heimnetz.zone
zone "heimnetz.zone" {
type master;
file "master/heimnetz.zone";
#allow-transfer { any; };
};
#Eigene Zone -> Reverse Lookup, siehe /var/lib/named/master/192.168.1.zone
zone "1.168.192.in-addr.arpa" {
type master;
file "master/192.168.1.zone";
#allow-transfer { any; };
};
# Include the meta include file generated by createNamedConfInclude. This
# includes all files as configured in NAMED_CONF_INCLUDE_FILES from
# /etc/sysconfig/named
include "/etc/named.conf.include";
# You can insert further zone records for your own domains below or create
# single files in /etc/named.d/ and add the file names to
# NAMED_CONF_INCLUDE_FILES.
# See /usr/share/doc/packages/bind/README.SUSE for more details.
Das musst du beachten, bzw anpassen:
Code:
listen-on port 53 { <IP-Adresse>; };
Damit die Anfragen nicht auf allen Devices entgegen genommen werden, muss hier die statische IP aus dem internen Netz des DNS eingetragen werden.
Code:
forwarders { <IP-Adresse>; };
Hier eignet sich den lokalen Gateway einzutragen, falls er auch als DNS fungiert, falls nicht schreibst du einfach 2-3 öffentliche DNS-Server rein. Siehe:
http://www.stanar.de/
Das erstellen deiner eigenen Zone für dein lokales Netz
In meinem Beispiel heißt die Zone künftig
heimnetz.zone
Jetzt brauchst du eine Zonen-Datenbank für den Forward-Lookup Zone (Auflösung Name -> IP).
Meine sieht so aus:
/var/lib/named/master/heimnetz.zone
Code:
$TTL 2D
@ IN SOA linux-server.heimnetz.zone. root.linux-server.heimnetz.zone. (
2008110301 ; Serial
3D ; Refresh
1H ; Retry
1W ; Expire
2D ) ; minimum
@ IN NS linux-server.heimnetz.zone.
linux-server IN A 192.168.1.100
router IN A 192.168.1.1
acer-5652-wlmi IN A 192.168.1.32
ipod IN A 192.168.1.35
hp-deskjet-6980 IN A 192.168.1.38
Wichtig ist die Leerzeile am Ende.
Dann eine Reverse-Lookupzone für die Auflösung IP -> Name:
/var/lib/named/master/192.168.1.zone
Code:
$TTL 1W
@ IN SOA linux-server.heimnetz.zone. root.linux-server.heimnetz.zone. (
2008110301 ; serial (d. adams)
2D ; refresh
4H ; retry
6W ; expiry
1W ) ; minimum
@ IN NS linux-server.heimnetz.zone.
100 IN PTR linux-server.heimnetz.zone.
1 IN PTR router.heimnetz.zone.
32 IN PTR acer-5652-wlmi.heimnetz.zone.
35 IN PTR ipod.heimnetz.zone.
38 IN PTR hp-deskjet-6980.heimnetz.zone.
Dann brauchst du eine aktuelle /var/lib/named/root.hint:
siehe
ftp://ftp.internic.net/domain/named.root
Wichtig ist noch deine /etc/resolv.conf
Code:
nameserver 192.168.1.100
domain heimnetz.zone
Einfach die eigene IP des DNS, sowie die Domain eintragen
Wenn du erreichen willst, das sich Clients über DHCP am DNS mit Hostname und IP melden, musst du in der /etc/dhcpd.conf folgende Parameter setzen:
Code:
ddns-update-style ad-hoc;
ddns-updates on;
-> Das mit dem DHCP habe ich allerdings noch nicht probiert, also keine Garantie.
-----------------------------------
Und nun der Test:
Code:
linux-server:/var/lib/named # dig @192.168.1.100 linux-server.heimnetz.zone.
; <<>> DiG 9.4.2-P1 <<>> @192.168.1.100 linux-server.heimnetz.zone.
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65053
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;linux-server.heimnetz.zone. IN A
;; ANSWER SECTION:
linux-server.heimnetz.zone. 172800 IN A 192.168.1.100
;; AUTHORITY SECTION:
heimnetz.zone. 172800 IN NS linux-server.heimnetz.zone.
;; Query time: 4 msec
;; SERVER: 192.168.1.100#53(192.168.1.100)
;; WHEN: Wed Nov 5 06:48:23 2008
;; MSG SIZE rcvd: 74
Test vom Client:
Code:
# nslookup 192.168.1.32
Server: 192.168.1.100
Address: 192.168.1.100#53
32.1.168.192.in-addr.arpa name = acer-5652-wlmi.heimnetz.zone.
Code:
# nslookup acer-5652-wlmi.heimnetz.zone.
Server: 192.168.1.100
Address: 192.168.1.100#53
Name: acer-5652-wlmi.heimnetz.zone
Address: 192.168.1.32