######################################################## # ## dhcpd.conf pour ScribeNg # ## Equipe Eole eole@ac-dijon.fr # ## septembre 2007 # ######################################################## # %if not %%is_empty(%%global_dhcp_lease_default) default-lease-time %%global_dhcp_lease_default; %end if %if not %%is_empty(%%global_dhcp_lease_max) max-lease-time %%global_dhcp_lease_max; %end if %if not %%is_empty(%%global_nom_domaine_dhcp) option domain-name "%%global_nom_domaine_dhcp"; %end if %if not %%is_empty(%%global_adresse_ip_dns_dhcp) %set %%dns_ip = %%global_adresse_ip_dns_dhcp %if not %%is_empty(%%global_adresse_ip_dns_secondaire_dhcp) %set %%dns_ip = %%dns_ip + ', ' + %%global_adresse_ip_dns_secondaire_dhcp %end if option domain-name-servers %%dns_ip; %end if %if not %%is_empty(%%global_adresse_ip_wins_primaire_dhcp) %set %%netbios_ip = %%global_adresse_ip_wins_primaire_dhcp %if not %%is_empty(%%global_adresse_ip_wins_secondaire_dhcp) %set %%netbios_ip = %%netbios_ip + ', ' + %%global_adresse_ip_wins_secondaire_dhcp %end if option netbios-name-servers %%netbios_ip; option netbios-dd-server %%netbios_ip; option netbios-node-type 8; %end if %if not %%is_empty(%%global_adresse_ip_ntp_dhcp) option ntp-servers %%global_adresse_ip_ntp_dhcp; %end if %if not %%is_empty(%%global_domain_wpad_dhcp) option wpad-url code 252 = text; option wpad-url "http://wpad.%%global_domain_wpad_dhcp/wpad.dat\n"; %end if #ToIP %if %%global_verif_modele_telip_dhcp == "oui" ## Vérification des id vendor dans le fichier des baux set vendor-string = option vendor-class-identifier; %end if ## définition des espaces d'option Tel.IP %if not %%is_empty(%%global_modele_telip_dhcp) %for %%i_modele in %%global_modele_telip_dhcp option space %%i_modele code width 1 length width 1 hash size 3; %set %%optprio = %%i_modele +'.vendor-priority' %set %%optvlan = %%i_modele +'.vendor-vlan-id' option %%optprio code %%i_modele.global_option_vendor_priority_dhcp = unsigned integer 8; option %%optvlan code %%i_modele.global_option_vendor_vlanid_dhcp = unsigned integer 16; %end for %end if #ddns-update-style none; authoritative; %if %%adresse_network_eth0 not in %%adresse_network_dhcp # pas de dhcp sur la zone scribe subnet %%adresse_network_eth0 netmask %%adresse_netmask_eth0 { } %end if %set %%subnets = {} %for %%subnet in %%adresse_network_dhcp %silent %%subnets.setdefault((%%str(%%subnet), %%subnet.adresse_netmask_dhcp),{}) %set %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('ranges', {})[(%%subnet.ip_basse_dhcp, %%subnet.ip_haute_dhcp)] = {'restriction': %%subnet.interdire_hotes_inconnus, 'lease_default': %%subnet.dhcp_lease_default, 'lease_max': %%subnet.dhcp_lease_max} %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('dns', []) %if %%subnet.adresse_ip_dns_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['dns'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('dns', []).append(%%subnet.adresse_ip_dns_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('dns', []) %if %%subnet.adresse_ip_dns_secondaire_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['dns'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('dns', []).append(%%subnet.adresse_ip_dns_secondaire_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('domain', []) %if %%subnet.nom_domaine_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['domain'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('domain', []).append(%%subnet.nom_domaine_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('gateway', []) %if %%subnet.adresse_ip_gw_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['gateway'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('gateway', []).append(%%subnet.adresse_ip_gw_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('ntp', []) %if %%subnet.adresse_ip_ntp_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['ntp'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('ntp', []).append(%%subnet.adresse_ip_ntp_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('wins', []) %if %%subnet.adresse_ip_wins_primaire_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['wins'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('wins', []).append(%%subnet.adresse_ip_wins_primaire_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('wins', []) %if %%subnet.adresse_ip_wins_secondaire_dhcp not in %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)]['wins'] %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('wins', []).append(%%subnet.adresse_ip_wins_secondaire_dhcp) %end if %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('vendor', []).append(%%subnet.vendor_identifier_dhcp) %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('priority', []).append(%%subnet.vendor_priority_dhcp) %silent %%subnets[(%%str(%%subnet), %%subnet.adresse_netmask_dhcp)].setdefault('vlanid', []).append(%%subnet.vendor_vlanid_dhcp) %end for %for %%subnet in %%subnets subnet %%subnet[0] netmask %%subnet[1] { %set %%gateway = [g for g in %%subnets[%%subnet]['gateway'] if g != None] %if not %%len(%%gateway) == 0 option routers %%custom_join(%%gateway, ' '); %end if option subnet-mask %%subnet[1]; %set %%domain = [g for g in %%subnets[%%subnet]['domain'] if g != None] %if not %%len(%%domain) == 0 option domain-name "%%domain[0]"; %end if %set %%dns = [d for d in %%subnets[%%subnet]['dns'] if d != None] %if not %%len(%%dns) == 0 option domain-name-servers %%custom_join(%%dns, ', '); %end if %set %%wins = [d for d in %%subnets[%%subnet]['wins'] if d != None] %if %%len(%%wins) == 0 and %%is_defined('container_ip_fichier') %if %%container_ip_fichier == "127.0.0.1" option netbios-name-servers %%adresse_ip_eth0; option netbios-dd-server %%adresse_ip_eth0; option netbios-node-type 8; %else option netbios-name-servers %%adresse_ip_fichier_link; option netbios-dd-server %%adresse_ip_fichier_link; option netbios-node-type 8; %end if %elif not %%len(%%wins) == 0 option netbios-name-servers %%custom_join(%%wins, ', '); option netbios-dd-server %%custom_join(%%wins, ', '); option netbios-node-type 8; %end if # dhcp statique include "/etc/dhcp/fixed-address/%%{subnet[0]}_%%{subnet[1]}.txt"; #serveur de temps %set %%ntp = [d for d in %%subnets[%%subnet]['ntp'] if d != None] %if not %%len(%%ntp) == 0 option ntp-servers %%custom_join(%%ntp, ', '); %else option ntp-servers %%adresse_ip_eth0; %end if %if %%activer_tftp == 'oui' next-server %%adresse_ip_tftp; filename "%%chemin_fichier_pxe"; %end if %set %%vendor = [v for v in %%subnets[%%subnet]['vendor'] if v != None] %if not %%len(%%dns) == 0 %set %%modele = %%custom_join(%%global_modele_telip_dhcp, ' ') %set %%optprio = %%modele +'.vendor-priority' %set %%optvlan = %%modele +'.vendor-vlan-id' class "vendor-class-%%modele" { match if option vendor-class-identifier="%%custom_join(%%vendor, ' ')"; vendor-option-space %%modele; %set %%priority = [p for p in %%subnets[%%subnet]['priority'] if p != None] %if not %%len(%%priority) == 0 option %%optprio %%custom_join(%%priority, ' '); %end if %set %%vlanid = [l for l in %%subnets[%%subnet]['vlanid'] if l != None] %if not %%len(%%vlanid) == 0 option %%optvlan %%custom_join(%%vlanid, ' '); %end if } %end if %set %%nb_ranges = %%len(%%subnets[%%subnet]['ranges']) %for %%range_ip in %%subnets[%%subnet]['ranges'] %if %%nb_ranges > 1 # plages d'ip pool { range %%range_ip[0] %%range_ip[1]; %if %%subnets[%%subnet]['ranges'][%%range_ip]['restriction'] == 'oui' deny unknown-clients; %end if %set %%lease_default = %%subnets[%%subnet]['ranges'][%%range_ip]['lease_default'] %if not %%lease_default == None default-lease-time %%lease_default; %end if %set %%lease_max = %%subnets[%%subnet]['ranges'][%%range_ip]['lease_max'] %if not %%lease_max == None max-lease-time %%lease_max; %end if } %else # plages d'ip %set %%lease_default = %%subnets[%%subnet]['ranges'][%%range_ip]['lease_default'] %if not %%lease_default == None default-lease-time %%lease_default; %end if %set %%lease_max = %%subnets[%%subnet]['ranges'][%%range_ip]['lease_max'] %if not %%lease_max == None max-lease-time %%lease_max; %end if range %%range_ip[0] %%range_ip[1]; %if %%subnets[%%subnet]['ranges'][%%range_ip]['restriction'] == 'oui' deny unknown-clients; %end if %end if %end for } %end for