• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[selbst gelöst] als DNS1/2 die automatische vom Provider?

SCT

Member
Hallo nochmal,

Ich habe mich gestern mit DNS+DHCP versucht. So richtig ist es das nicht was ich wirklich will. Brauche ich wirklich eine DNZ? Ich möchte lediglich allen meinen Clients (1PC und ein paar Laptops; alle mit Windows) einen dynamische Netzwerkaddresse von einem von mir definiertem Bereich zuweisen. Dabei sollen als die beiden DNS Server im Windows genau die beiden erscheinen, die in der resolv.conf stehen.

Frage: Geht das ohne einen DNS-Server haben zu müssen?

Das Problem dahinter ist, daß der Rechner sich bei meinem Provider per Modem einwählt. Nach einem frischen Reboot ist er erstmal nicht eingewählt. Die Einwahl erfolgt on demand oder per cinternet im cron um der 24-Stunden Klappe zuvorzukommen. Gibt man ping http://www.heise.de ein wählt er sich dann ein.
Nicht so bei einer anstehenden Namensauflösung. Will der DNS also eine Namensauflösung machen wählt sich der Rechner nicht automatisch ein. Ein ping http://www.heise.de returniert sofort mit einem host unknown.

Danke schön
SCT
 
OP
S

SCT

Member
marce schrieb:
DNS und DHCP haben nichts miteinander zu tun. Für das eine ist das andere nicht notwendig.

-->Ok, vielen Dank. Wie sage ich ohne DNS-Server, dem DHCP-Server daß er die beiden Nameserver aus der resolv.conf nehmen soll um die Clients damit zu konfigurieren? Aus der Antwort eines anderen Threads hier müsste ich dazu den NETWORK_DNS_FORWARDER Eintrag in der Datei .../network/config den Wert 'bind' zuweisen. Allerdings würde das ohne DNS-Server nicht funktionieren.

Hier hat noch einer in einem anderen Forum dieselbe Frage gestellt, aber keine Lösung dafür bekommen:
http://forums.opensuse.org/forums/archives/sls-archives/archives-suse-linux/archives-network-security/360051-dhcp-server-configuration.html

Danke
SCT
 
OP
S

SCT

Member
Hallo,

da hier keine Antwort kam habe ich das Problem durch ein Script selbst gelöst. Es befindet sich im Verzeichnis /etc/ppp/ip-up.d. Das heisst es wird nach jeder erfolgreichen Einwahl automatisch gestartet. Anmerkungen, Hinweise, Fehlermeldungen bitte gerne an mich.

Code:
#! /bin/sh
# Updates provider served nameservers for DHCP server use automatically
# place it in /etc/ppp/ip-up.d/

#set -x

SED="/usr/bin/sed"
AWK="/usr/bin/awk"
LOGGER="/bin/logger"
RCDHCPD="/usr/sbin/rcdhcpd"

RESOLV_CONF_FILE="/etc/resolv.conf"
DHCPD_CONF_FILE="/etc/dhcpd.conf"

# check prerequisites
for i in ${SED} ${AWK} ${RCDHCPD} ${RESOLV_CONF_FILE} ${DHCPD_CONF_FILE}
do
  test -f ${i} || {
    test -f ${LOGGER} && ${LOGGER} [syncdns] ${i} not found! abort...
    exit 1
  }
done

# get old nameservers from current dhcp configuration
NAMESERVER_OLD_1=`grep 'option domain-name-servers' ${DHCPD_CONF_FILE} | ${AWK} '{ print $3 }' | ${SED} s#,##`
NAMESERVER_OLD_2=`grep 'option domain-name-servers' ${DHCPD_CONF_FILE} | ${AWK} '{ print $4 }' | ${SED} s#\;##`

# retrieve nameservers from automatic created resolv.conf file
NAMESERVER_NEW=`grep nameserver ${RESOLV_CONF_FILE} | ${AWK} '{ print $2 }'`
NAMESERVER_NEW_1=`echo ${NAMESERVER_NEW} | ${AWK} '{ print $1 }'`
NAMESERVER_NEW_2=`echo ${NAMESERVER_NEW} | ${AWK} '{ print $2 }'`

# check whether nameserver update is needed
if [ "${NAMESERVER_OLD_1}" = "${NAMESERVER_NEW_1}" -a "${NAMESERVER_OLD_2}" = "${NAMESERVER_NEW_2}" ] ; then
  test -f ${LOGGER} && ${LOGGER} [syncdns] no need to update nameservers. keep DNS1: ${NAMESERVER_OLD_1} DNS2: ${NAMESERVER_OLD_2}
  exit 0
fi

# replace new nameservers in dhcpd conf file
${SED} "s#option domain-name-servers.*#option domain-name-servers ${NAMESERVER_NEW_1}, ${NAMESERVER_NEW_2};#" -i ${DHCPD_CONF_FILE}
if [ $? = 1 ] ; then
  test -f ${LOGGER} && ${LOGGER} [syncdns] replace error! abort...
  exit 1
fi

${RCDHCPD} check-syntax >/dev/null
if [ $? = 1 ] ; then
  test -f ${LOGGER} && ${LOGGER} [syncdns] ${DHCPD_CONF_FILE} syntax error! abort...
  exit 1
fi

${RCDHCPD} restart >/dev/null
if [ $? = 1 ] ; then
  test -f ${LOGGER} && ${LOGGER} [syncdns] ${DHCPD_CONF_FILE} error restart! abort...
  exit 1
fi

test -f ${LOGGER} && ${LOGGER} [syncdns] success. New nameservers for DHCP service: DNS1: ${NAMESERVER_NEW_1} DNS2: ${NAMESERVER_NEW_2}
 
Oben