Diskussion:Entwicklungsumgebung/DHCP

Aus Delixs
Zur Navigation springen Zur Suche springen

DDNS

ist eine feine Sache, machen wir seit Jahren, weil es die Namensauflösung extrem beschleunigt.

Was man dafür braucht ist ein key, der dem bind und dem dhcpd bekannt ist.

in die dhcpd.conf:

allow booting;
server-identifier   192.168.3.2;
option domain-name    "sub.domain.tld";
option domain-name-servers  192.168.3.2;
option subnet-mask    255.255.255.0;
option netbios-node-type  8;    # First WINS,then Broadcast
option netbios-name-servers 192.168.3.3; # Samba
#neu: http://wiki.bsdforen.de/howto/automatische_proxy-konfiguration
option wpad code 252 = text;
option wpad "http://wpad.domain.tld/wpad.dat";
default-lease-time    3600;   # 1h
max-lease-time      86400;    # 1d
authoritative;
# Der DHCPd soll DDNS machen
ddns-update-style   interim;
# Die Clients sollen *nie* selbst DDNS machen, sondern immer der DHCPd
ignore client-updates;
get-lease-hostnames on;
# Anstelle den key anzugeben, sollte auch ein include möglich sein:
# include "/etc/bind/Kbst.domain.tld.+157+35662.key";
key sub.domain.tld {
  algorithm HMAC-MD5.SIG-ALG.REG.INT;
  secret xRLSiTqRBXw[...snip...]UbaAIXUfBpJ4M0XovKQj76Lg==
}; 
zone sub.domain.tld {
  primary 127.0.0.1;
  key sub.domain.tld;
}
zone 3.168.192.in-addr.arpa. {
  primary 127.0.0.1;
  key sub.domain.tld;
}
## END DEFAULTS
# DHCP für Netz sub.domain.tld
subnet 192.168.3.0 netmask 255.255.255.0 {
  option broadcast-address  192.168.3.255;
  option domain-name    "sub.domain.tld";
  option routers      192.168.3.1;
  range       192.168.3.150 192.168.3.199;
  host alix  # Schulserver Installer
  {
    hardware ethernet 00:01:02:03:04:05;
    fixed-address   192.168.3.241;
  }
}


und dann in die named.conf.local

key sub.domain.tld {
       algorithm hmac-md5;
       secret "xRLSiTqRBE2SG.......ovKQj76Lg==";
};
// sub.domain.tld mit 192.168.3.0/24
zone "sub.domain.tld" IN {
  type master;
  file "db.sub.domain.tld";
  allow-update {key sub.domain.tld;};
};
// 3.168.192.in-addr.arpa für sub.domain.tld
zone "3.168.192.in-addr.arpa" IN {
  type master;
  file "db.192.168.3";
  allow-update {key sub.domain.tld;};
};

Das wars schon. Den Key erstellt man über

 /usr/sbin/dnssec-keygen -a HMAC-MD5 -n HOST -b 512  $DOMAIN.


Wenn auch noch Linuxclients in der /etc/dhcp3/dhcclient.conf ein send host-name "workstation"; stehen haben, sind auch diese mit im Geschäft.

Viele Grüße Thorsten (080606)

X.509-Zertifikate

Zertifikate machen nur dann Sinn, wenn der Dienst der sie benutzt auch verifizieren kann. Dazu gehört nicht nur ein Public/Private Key-Pair, sondern auch, im Falle von Serverdiensten, ein eindeutiger DNS-Name.

Das Problem mit dem eindeutigen DNS-Namen ist etwas diffizil. Fast alle Anwender von ssl, also X.509, benutzen den DNS-Namen des Rechners. Für einfachste Dinge ist das OK. Aber wenn ein Rechner Dienste wie LDAP oder SAMBA bereitstellt, die einen Online-Backup-Dienst ermöglichen, wie PDC + 1 bis 99 BDC, dann ist die Benutzung des realen Hostnamens, als Key-Bezeichner echt schwachsinnig.

Stellt euch vor, der PDC fällt aus. Ein BDC übernimmt vollautomatisch seine Funktion. Der hat aber einen anderen DNS-Namen, damit einen anderen Key und der Admin und alle, die via ssl darauf zugreifen wollen, sind draussen.

Also für solche Dienste muss als Key-Bezeichner ein DNS-Alias genommen werden. Denn der darf auf mehreren DNS-Hostnamen zeigen.

Die DNS-Domain für den aktuellen Rechner:

 hostname -d

Im LDAP stehen nur Kopien des Domain-Namens.

 ldapsearch -x -LLL  "cn=DHCP Service Config" dhcpOption|\
 sed -ne '/^dhcpOption/{N;s/dhcpOption: domain-name //;s/"//g;p}'

Der Installer hat auch eine Kopie gespeichert:

 debconf-get-selections --installer|grep netcfg/get_domain|cut -f4

Es gibt aber keine LDAP-Domain. Nur einen NamingContext:

 ldapsearch -x -LLL -h localhost -s base -b "" "objectclass=*" \ 
 namingcontexts


Red. gekürzt. Text von Harry.



 # keys für den bind, kannst du ignorieren.
 key schule.xx {
   algorithm HMAC-MD5;
   secret "y9gsY4oe17u27q[..snip..]TyzjPvgqA==";
 };
 zone schule.xx {
   primary 127.0.0.1;
   key schule.xx;
 }
 zone 0.28.10.in-addr.arpa {
   primary 127.0.0.1;
   key schule.xx;
 }


Thorsten in einer [DD]-Mail 31.01.2009, 21:27



Weitere Konfiguration des LDAP hier DHCP(E-Mail von Hans-Dietrich Kirmse):

Installation von DHCP

1. Einspielen der Pakete

     aptitude dhcp3-server
  es kommt ein Menü (nur Information), dass standardmäßig DHCP nicht
  autoritiv ist.  Danach wird installiert.
  es kommen 2 Fehlermeldungen:
  diese können/müssen ignoriert werden
     aptitude dhcp3-server-ldap


2. Einbinden der Schema-Datei (Datei im Paket)

     cd /usr/share/doc/dhcp3-server-ldap/
     gunzip dhcp.schema.gz
     cp dhcp.schema /etc/ldap/schema/
  in /etc/ldap/slapd.conf  unter                          (Datei im Paket)
    # Schema and objectClass definitions
     include         /etc/ldap/schema/dhcp.schema
  habe ich als letzte Zeile hinzugefügt!

3. in /etc/default/dhcp3-server (Datei im Paket)

   habe ich ergänzt:
     INTERFACES="eth1"

4. das Konvertierungsscript nach root gebracht

   (dieser Schritt kann entfallen, da man sofort mit der LDIF-Datei
    weiterarbeiten kann. Es geht hier nur ums nachvollziehen zu können)
     cd /usr/share/doc/dhcp3-server-ldap/
     gunzip dhcpd-conf-to-ldap.pl.gz
     cp dhcpd-conf-to-ldap.pl /root

5. herkömmliche 'dhcpd.conf' als Vorlage bereitgestellt (Datei im Paket: dhcpd.conf.orig)

   !!!!!! Hinweis !!!!!!!!!
   diese, ich wiederhole *diese* lies sich ohne Probleme mit dem Script
   konvertieren, dafür habe ich ganz bewußt die Fehler in Kauf genommen
   (z.B. nach wpad.pac kein Leerzeichen, denn darüber stolpert das Script)


authoritative;
ddns-update-style none;
deny client-updates;
default-lease-time    3600; # 1h
max-lease-time      86400;  # 1d
get-lease-hostnames   on;
option domain-name "delixs-schule.de";
option domain-name-servers  10.100.0.1;
option netbios-dd-server  10.100.0.1;
option netbios-name-servers 10.100.0.1;
option netbios-node-type  8;  # First use WINS, then broadcast
option time-servers   10.100.0.1;
option interface-mtu    1492;
option ip-forwarding    off;
allow booting;
allow bootp;
option wpad     code 252 = text;
option wpad     "http://wpad.delixs-schule.de/wpad.pac";

subnet 10.100.0.0 netmask 255.255.255.0 {
      range 10.100.0.100 10.100.0.200;
      option routers      10.100.0.1;
      option broadcast-address  10.100.0.255;
      filename "/pxelinux.0";
      next-server 10.100.0.1;
}

6. Konvertierung der dhcpd.conf ins LDIF-file

   ./dhcpd-conf-to-ldap.pl < /etc/dhcp3/dhcpd.conf > /root/dhcpd.ldif


7. das dazu passende LDIF-File: (Datei im Paket)

   Hinweis: so, also genau *so* ist es vom Script erstellt worden.
   Vor dem Einspielen musste es also noch leicht bearbeitet werden.
   das im Paket liegende LDIF-File ist schon bearbeitet und kann direkt
   eingespielt werden. Außerdem ist dieses LDIF-file so verändert worden,
   dass 2 Teilnetze bereitgestellt werden. Beide Teilnetze aber ohne
   Terminalserveroptionen. (zumindest schluckt es der LDAP und der DHCP)


dn: cn=alix, dc=delixs-schule,dc=de
cn: alix
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=DHCP Config, dc=delixs-schule,dc=de 

dn: cn=DHCP Config, dc=delixs-schule,dc=de
cn: DHCP Config
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=alix, dc=delixs-schule,dc=de
dhcpStatements: authoritative
dhcpStatements: ddns-update-style none
dhcpStatements: deny client-updates
dhcpStatements: default-lease-time 3600
dhcpStatements: max-lease-time 86400
dhcpStatements: get-lease-hostnames on
dhcpStatements: allow booting
dhcpStatements: allow bootp
dhcpOption: domain-name "delixs-schule.de"
dhcpOption: domain-name-servers 10.100.0.1
dhcpOption: netbios-dd-server 10.100.0.1
dhcpOption: netbios-name-servers 10.100.0.1
dhcpOption: netbios-node-type 8
dhcpOption: time-servers 10.100.0.1
dhcpOption: interface-mtu 1492
dhcpOption: ip-forwarding off
dhcpOption: wpad code 252 = text
dhcpOption: wpad "http://wpad.delixs-schule.de/wpad.pac" 

dn: cn=10.100.0.0, cn=DHCP Config, dc=delixs-schule,dc=de
cn: 10.100.0.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 10.100.0.100 10.100.0.200
dhcpStatements: filename "/pxelinux.0"
dhcpStatements: next-server 10.100.0.1
dhcpOption: routers 10.100.0.1
dhcpOption: broadcast-address 10.100.0.255


8. Einspielen des LDIF-File in den LDAP

     ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/dhcpd.ldif


9. Erstellen der dhcpd.conf

   diese sieht jetzt so aus:                       (Datei im Paket: dhcpd.conf)
     ldap-server "alix.delixs-schule.de";
     ldap-port 389;
     ldap-username "cn=admin,dc=delixs-schule,dc=de";
     ldap-password "geheim";
     ldap-base-dn "dc=delixs-schule,dc=de";
     ldap-method dynamic;
     ldap-debug-file "/var/log/dhcp-ldap.log";
   durch dieses File die ursprüngliche dhcpd.conf ersetzen.

10. Einrichtung von 2 Teilnetzen

   ich habe in die Datei /etc/network/interfaces               (Datei im Paket)
   Folgendes eingetragen:
     # die 2. Netzwerkkarte
     auto eth1
     # das erste Teilnetz
     iface eth1 inet static
         address 10.100.0.1
         netmask 255.255.255.0
         broadcast 10.100.0.255
         gateway 192.168.172.1
     # das zweite Teilnetz
     iface eth1:1 inet static
         address 10.100.1.1
         netmask 255.255.255.0
         broadcast 10.100.1.255
         gateway 192.168.172.1


11. Starten des DHCP-Servers

      /etc/init.d/dhcpd3-server start


12. einen Rechner eine feste IP geben

    Dazu kann folgendes LDIF-File fip.ldif verwendet werden:     (Datei im Paket)
dn: cn=Aachen,cn=10.100.0.0,cn=DHCP Config,dc=delixs-schule,dc=de
cn: Aachen
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:40:05:4f:e4:bc
dhcpStatements: fixed-address 10.100.0.21


    einspielen mit
     ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/fip.ldif


Aus DD-Mails von Hans-Dietrich Kirmse 04.02.09

--Dorn 13:10, 15. Feb. 2009 (UTC)