Проект переехал на новый домен!  [[ перейти ]]

протокол DHCP

Сначала идёт пересборка ядра, где фключаем bpf:
################################################################
# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device          bpf             # Berkeley packet filter
################################################################
sh# cd /usr/src/sys/i386/conf
sh# cp GENERIC DHCP
sh# ee DHCP
sh# config DHCP
sh# cd ../compile/DHCP
sh# clean depend && make depend
sh# make install clean
sh# reboot

Собираем из портов:
sh# cd /usr/ports/net/isc-dhcp3-server
sh# make install clean
sh# cd /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf
sh# ee /usr/local/etc/dhcpd.conf
###################################################################
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

#Настройки самого DHCP что и кому будем выдавать
subnet 192.168.1.0 netmask 255.255.255.0 {
    range 192.168.1.3 192.168.1.254;
    option domain-name-servers 192.168.1.2;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
    default-lease-time 600;
    max-lease-time 7200;
    
}
					
#Жестко прописанный хост
host f2.domain.com {
    hardware ethernet 00:0d:61:3f:58:8d;
    fixed-address 192.168.1.2;
}
###################################################################
sh# echo 'dhcpd_enable="yes"' >> /etc/rc.conf
sh# echo 'dhcpd_ifaces="fxp0"' >> /etc/rc.conf
sh# reboot

#################################################################################################
Всё что ниже - ОПИСАЛОВО, его можно почитать если хоти добавить в конфиг ещё чего-нибудь!: ;-))))
#################################################################################################

#Время - промежуток времени в секундах, на который выделяется адрес клиенту, в случае если клиент самостоятельно не указал время использования адреса.
default-lease-time время;

#Время - максимальный промежуток времени в секундах, на который выделяется адрес клиенту.
max-lease-time время;

#Для того что бы BOOTP клиент был опознан сервером, его mac-адрес должен быть объявлен с помощью параметра hardware в секции host Параметр тип_железа
#- тип физического интерфейса. В настоящее время используются только ethernet и token-ring и возможно скоро будет реализованы другие типы, особенно  
#fddi аппаратный_адрес - записывается как набор шестнадцатеричных значений ( от 0 до ff ) разделенных двоеточиями. 
#should be a set of hexadecimal octets (numbers from 0 through ff) seperated by colons. Параметр hardware можно использовать и для DHCP клиентов.
hardware тип_железа аппаратный_адрес;

#Параметр filename указывает имя файла, используемого для начальной загрузки клиента. имя_файла
#должно быть записано в формате понятном тому сервису передачи файлов,  посредством которого клиент будет пытаться загрузить этот файл.
filename имя_файла;
	  
#Параметр server-name используется, что бы сообщить клиенту имя сервера который его обслуживает. Имя_сервера - имя сервера, сообщаемое клиенту.
server-name имя_сервера;
	    
#Параметр next-server используется для указания клиенту адреса сервера с которого должен быть получен загрузочный файл (тот самый файл что указан в параметре filename). 
#Имя_сервера может быть IP адресом или доменным именем. Если этот параметр не указан, то используется адрес DHCP сервера.	    
next-server имя_сервера;
	     
#Параметр fixed-address используется для назначения одного или нескольких постоянных адресов клиенту. 
#Параметр может присутствовать только в секции host. Если указано более одного адреса, то клиенту будет 
#присвоен адрес соответствующий подсети к которой подключен клиент в данный момент. Если нет адресов 
#соответствующих подсети в которую включен клиент, то считается что этот клиент не соответствует объявлению host 
#и эти адреса ему не присваиваются. Каждый адрес может быть IP адресом или доменным именем, которое резолвится в один или несколько IP адресов.
fixed-address адрес [, адрес ... ];

#Параметр dynamic-bootp-lease-cutoff устанавливает момент времени в который все адреса назначенные клиентам BOOTP должны быть освобождены. 
#Так как клиенты BOOTP не имеют возможности продлить срок использования полученных адресов и не могут определить что срок аренды истек, 
#то по умолчанию клиентам BOOTP адреса выделяются на неограниченный срок. Однако в некоторых случаях оказывается полезным установить 
#параметр dynamic-bootp-lease-cutoff, например в учебном заведении при окончании семестра или в ночное время когда предприятие не работает а все компьютеры выключены.
#дата - срок окончания действия всех адресов выделенных BOOTP клиентам. Дата указывается  в следующем формате: W ГГГГ/ММ/ДД ЧЧ:ММ:СС
#W - день недели в виде числа от 0 (воскресенье) до 6 (суббота). ГГГГ - год ММ - месяц 1..12 ДД - день месяца 1..31 ЧЧ - часы 0..23 ММ - минуты 0..59 СС - секунды 0..59 
#Время указывается в GMT, а не местное.
dynamic-bootp-lease-cutoff дата;
	       
#Параметр dynamic-bootp-lease-length используется для указания срока на который выделяется адрес BOOTP клиенту. 
#В некоторых организациях возможна ситуация что по прошествии определенного времени можно быть уверенным что 
#выделенный адрес уже не используется. Период задается числом секунд. Если клиент перезагружается в момент 
#когда срок указанный в этом параметре еще не истек, то период аренды адреса заново устанавливается в указанное значение. 
#Таким образом часто перезагружаемые BOOTP клиенты могут постоянное удерживать свой адрес. 
#Необходимо заметить что при настройке параметра, следует быть осторожным.		 
dynamic-bootp-lease-length время_в_секундах;

#Параметр get-lease-hostnames сообщает серверу dhcp следует ли выполнять преобразование IP адресов в соответствующие им 
#имена и использовать полученные имена в качестве значения параметра hostname. Если значение параметра - истина, тогда 
#преобразование выполняется для каждого адреса в диапазоне. По умолчанию или если значение - ложь, преобразование не выполняется.
get-lease-hostnames on/off;
		  
#Если параметр use-host-decl-names имеет значение - on (включено), то для каждого объявления хоста, находящегося в 
#зоне действия параметра, значение использованное в объявлении host{} предоставляется клиенту в качестве его имени. Например конструкция:		  
use-host-decl-names on/off;

#Дополнительный параметр option host-name указанный в объявлении host{} имеет больший приоритет 
#по сравнению с use-host-decl-names что позволяет переопределить имя хоста при включенном use-host-decl-names
---------------------------------------
group {
   use-host-decl-names on;
   host f2 {
   hardware ethernet 08:00:2b:4c:29:32;
   fixed-address f2.domaim.com;
 }

#эквивалентно:

host f2 {
   hardware ethernet 08:00:2b:4c:29:32;
   fixed-address f2.domain.com;
   option host-name f2;
}
---------------------------------------												 

#Обычно DHCP сервер предполагает что конфигурационная информация описывающая сегмент сети правильна и "авторитетна" 
#Так что если клиент запрашивает IP адрес и сервер знает что этот адрес не правилен, то сервер ответит клиенту сообщением DHCPNAK, 
#что является предложением клиенту отказаться от этого адреса и запросить новый.
#Если до конфигурации DHCP сервера каким-то образом допустили кого-нибудь кто не является сетевым администратором и даже не 
#претендует на это звание, то в соответствующей секции нужно указать параметр not authoritative;
#Обычно, бывает достаточно написать not authoritative; в начале файла конфигурации. Однако, если сервер поддерживает несколько 
#различных сегментов, то лучше объявлять авторитетность сервера в пределах обслуживаемых им подсетей.
authoritative;
not authoritative;

#Если параметр use-lease-addr-for-default-route установлен в "on" для соответствующего сегмента сети, то вместо посылки клиенту 
#значения указанного в дополнительном параметре option routers ( или не посылки ничего если адреса маршрутизаторов не заданы ), 
#клиенту посылаются IP адреса уже назначенные сервером. На клиенте это вызывает запросы ARP по всем этим адресам, что может быть 
#очень полезным если ваш маршрутизатор сконфигурирован как proxy ARP.
use-lease-addr-for-default-route on/off;

#Некоторые BOOTP клиенты ожидают ответа от сервера в стиле RFC1048, но сами не следуют RFC1048 при посылке запросов. 
#Если в вашей сети имеется такой проблемный клиент, который не воспринимает параметры передаваемые ему сервером и если 
#в логах появляется сообщение (non-rfc1048), то можно воспользоваться этим параметром.
#Если у вас все клиенты требуют работы в стиле RFC1048, то можно использовать параметр always-reply-rfc1048 
#Параметр может быть указан в любом объявлении в этом случае воздействует только на тех клиентов, которые соответствуют указанной зоне действия.
always-reply-rfc1048 on/off;

#Параметр server-identifier отсылается клиенту и должен являться IP адресом DHCP сервера, правильными для той подсети в которой 
#находится клиент и достижимым для всех клиентов этой подсети.
#Использование server-identifier не рекомендовано, единственная причина использования - переопределить значение по умолчанию 
#если оно по какой-нибудь причине не верно. Значением по умолчанию является первый IP адрес из присвоенных физическому интерфейсу на который пришел клиентский запрос.
#Обычно параметр server-identifier используется когда физический интерфейс с несколькими IP адресами, и адрес сообщаемый 
#сервером клиенту не подходит некоторым или всем клиентам обслуживаемым этим интерфейсом. Другой частый случай когда для 
#интерфейса определен алиас и необходимо что бы клиенты использовали именно его.
#Задание значения для параметра dhcp-server-identifier эквивалентно использованию параметра server-identifier. 
server-identifier имя_хоста;


Стандартными параметрами являются следующие:

#Задает маску подсети клиента, согласно RFC 950. В случае если параметр не указан, 
#dhcpd использует значение маски подсети в которой находится используемый сервером адрес.
option subnet-mask ip-address;

#Задает значение смещения времени на клиенте относительно 
#Coordinated Universal Time (UTC), в секундах.
option time-offset int32;

#Список IP адресов маршрутизаторов для клиентской сети. 
#Маршрутизаторы должны быть перечислены в порядке предпочтительности.
option routers ip-address [, ip-address...];

#Список серверов времени, соответствующих RFC 868, доступных клиенту.
option time-servers ip-address [, ip-address...];

#option ien116-name-servers ip-address [, ip-address...];
Список IEN 116 name servers доступных для клиента.

#option domain-name-servers ip-address [, ip-address...];
Список DNS серверов (STD 13, RFC 1035), доступных клиенту.

#Список MIT-LCS UDP log servers, доступных клиенту.
option log-servers ip-address [, ip-address...];

#Список cookie-серверов соответствующих RFC 865, доступных клиенту.
option cookie-servers ip-address [, ip-address...];

#Список принт-серверов соответствующих RFC 1179, доступных клиенту.
option lpr-servers ip-address [, ip-address...];

#Список Imagen Impress серверов, доступных клиенту.
option impress-servers ip-address [, ip-address...];

#Список Resource Location серверов соответствующих RFC 887, доступных клиенту.
option resource-location-servers ip-address [, ip-address...];

#Параметр задает имя клиента. Имя может быть или не быть дополнено именем домена 
#(предпочтительнее использовать параметр domain-name для указания имени домена)
option host-name string;

#Задает размер (в 512-байтных блоках) загрузочного образа для клиента.
option boot-size uint16;

#Позволяет задать путь к файлу, куда будет сброшен дамп, в случае краха клиента.
option merit-dump string;

#Параметр задает доменное имя, которое клиенты используют при запросах к DNS, при разрешении имен.
option domain-name string;

#Задает адрес клиентского swap сервера.
option swap-server ip-address;

#Параметр задает путь к клиентскому корневому каталогу.
option root-path string;

#Параметр определяет возможность пересылки пакетов на клиенте. Значение:
#0 означает запрет пересылки,
#1 - разрешает пересылку пакетов.
option ip-forwarding flag;

#Значение параметра определяет возможность пересылки датаграмм с non-local source routes. 
#Значение: 0 означает запрет на пересылку таких датаграмм, а значение 1 разрешает их пересылку.
option non-local-source-routing flag;

#This option specifies the maximum size datagram that the client should be prepared to reassemble. The minimum value legal value is 576.
option max-dgram-reassembly uint16;

#Значение которое на клиенте будет использовано по умолчанию для TTL в исходящих датаграммах.
option default-ip-ttl uint8;

#This option specifies the timeout (in seconds) to use when aging Path MTU values discovered by the mechanism defined in RFC 1191.
option path-mtu-aging-timeout uint32;

#This option specifies a table of MTU sizes to use when performing Path MTU Discovery as defined in RFC 1191. 
#The table is formatted as a list of 16-bit unsigned integers, ordered from smallest to largest. 
#The minimum MTU value cannot be smaller than 68.
option path-mtu-plateau-table uint16 [, uint16...];

#This option specifies the MTU to use on this interface. The minimum legal value for the MTU is 68.
option interface-mtu uint16;

#This option specifies whether or not the client may assume that all subnets of the IP network 
#to which the client is connected use the same MTU as the subnet of that network to which the 
#client is directly connected. A value of 1 indicates that all subnets share the same MTU. 
#A value of 0 means that the client should assume that some subnets of the directly connected network may have smaller MTUs.
option all-subnets-local flag;

#Параметр задает широковещательный адрес клиентской подсети.
#Корректные значения широковещательных адресов указаны в секции 3.2.1.3 of STD 3 (RFC1122).
option broadcast-address ip-address;

#Указывает должен ли клиент определять маску подсети посредством запросов ICMP. 
#Значение: 
#0 указывает что клиент не должен выполнять процедуру определения маски, 
#1 разрешает клиенту определять маску подсети используя ICMP.
option perform-mask-discovery flag;

#This option specifies whether or not the client should respond to subnet mask requests using ICMP. 
#A value of 0 indicates that the client should not respond. A value of 1 means that the client should respond.
option mask-supplier flag;

#This option specifies whether or not the client should solicit routers using the Router 
#Discovery mechanism defined in RFC 1256. A value of 0 indicates that the client should not perform router discovery. 
#A value of 1 means that the client should perform router discovery.
option router-discovery flag;

#This option specifies the address to which the client should transmit router solicitation requests.
option router-solicitation-address ip-address;

#This option specifies a list of static routes that the client should install in its routing cache. If multiple routes to the same destination are specified, 
#they are listed in descending order of priority.
#The routes consist of a list of IP address pairs. The first address is the destination address, and the second address is the router for the destination.
#The default route (0.0.0.0) is an illegal destination for a static route. To specify the default route, use the routers option.
option static-routes ip-address ip-address [, ip-address ip-address...];

#This option specifies whether or not the client should negotiate the use of trailers (RFC 893 [14]) 
#when using the ARP protocol. A value of 0 indicates that the client should not attempt to use trailers. 
#A value of 1 means that the client should attempt to use trailers.
option trailer-encapsulation flag;

#This option specifies the timeout in seconds for ARP cache entries.
option arp-cache-timeout uint32;

#This option specifies whether or not the client should use Ethernet Version 2 (RFC 894) or IEEE 802.3 (RFC 1042) 
#encapsulation if the interface is an Ethernet. A value of 0 indicates that the client should use RFC 894 encapsulation. 
#A value of 1 means that the client should use RFC 1042 encapsulation.
option ieee802-3-encapsulation flag;

#This option specifies the default TTL that the client should use when sending TCP segments. The minimum value is 1.
option default-tcp-ttl uint8;

#This option specifies the interval (in seconds) that the client TCP should wait before sending a 
#keepalive message on a TCP connection. The time is specified as a 32-bit unsigned integer. 
#A value of zero indicates that the client should not generate keepalive messages on connections unless 
#specifically requested by an application.
option tcp-keepalive-interval uint32;

#This option specifies the whether or not the client should send TCP keepalive messages with a 
#octet of garbage for compatibility with older implementations. A value of 0 indicates that a garbage octet should not be sent. 
#A value of 1 indicates that a garbage octet should be sent.
option tcp-keepalive-garbage flag;

#This option specifies the name of the client's NIS (Sun Network Information Services) domain. 
#The domain is formatted as a character string consisting of characters from the NVT ASCII character set.
option nis-domain string;

#This option specifies a list of IP addresses indicating NIS servers available to the client.
option nis-servers ip-address [, ip-address...];

#This option specifies a list of IP addresses indicating NTP (RFC 1035) servers available to the client.
option ntp-servers ip-address [, ip-address...];

#Задает список серверов имен NetBIOS (NBNS), соответствующих RFC 1001/1002 Сервера имен NetBIOS так же известны как сервера WINS.
option netbios-name-servers ip-address [, ip-address...];

#The NetBIOS datagram distribution server (NBDD) option specifies a list of RFC 1001/1002 NBDD servers.
option netbios-dd-server ip-address [, ip-address...];

#Параметр позволяет сконфигурировать тип узла, т.е. способ разрешения имен клиентами NetBIOS over TCP/IP.
#Возможные значения параметра:
#1   B-node (Broadcast): Разрешение имен с помощью широковещательных запросов, WINS не используется. 
#2   P-node (Peer): Используется только WINS. 
#4   M-node (Mixed): Смешанный тип, сначала используется широковещательный запрос, затем в случае неудачи - WINS 
#8   H-node (Hybrid): Смешанный наоборот :) WINS, а затем broadcast.

option netbios-node-type uint8;

#The NetBIOS scope option specifies the NetBIOS over TCP/IP scope parameter for the client as specified in 
#RFC 1001/1002. See RFC1001, RFC1002, and RFC1035 for character-set restrictions.
option netbios-scope string;

#Сервера со шрифтам X Window System Font.
option font-servers ip-address [, ip-address...];

#This option specifies a list of systems that are running the X Window System Display 
#Manager and are available to the client.
option x-display-manager ip-address [, ip-address...];

#This option can be used to specify the a DHCP client identifier in a host declaration, 
#so that dhcpd can find the host record by matching against the client identifier.
option dhcp-client-identifier data-string;

#This option specifies the name of the client's NIS+ domain. The domain is formatted as 
#a character string consisting of characters from the NVT ASCII character set.
option nisplus-domain string;

#Список серверов NIS+, доступных клиенту.
option nisplus-servers ip-address [, ip-address...];

#This option is used to identify a TFTP server and, if supported by the client, 
#should have the same effect as the server-name declaration. BOOTP clients are unlikely to support this option. 
option tftp-server-name string;

#This option is used to identify a bootstrap file. If supported by the client, 
#it should have the same effect as the filename declaration. BOOTP clients are unlikely to support this option. 
option bootfile-name string;

#This option specifies a list of IP addresses indicating mobile IP home agents available to the client. 
#Agents should be listed in order of preference, although normally there will be only one such agent.
option mobile-ip-home-agent ip-address [,ip-address... ];

#Список SMTP серверов, доступных клиенту.
option smtp-server ip-address [,ip-address... ];

#Список POP серверов, доступных клиенту.
option pop-server ip-address [,ip-address... ];

#Список NNTP серверов, доступных клиенту.
option nntp-server ip-address [,ip-address... ];

#Список WWW серверов, доступных клиенту.
option www-server ip-address [,ip-address... ];

#Список Finger серверов, доступных клиенту.
option finger-server ip-address [,ip-address... ];

#Список IRC серверов, доступных клиенту.
option irc-server ip-address [,ip-address... ];

#Список StreetTalk серверов, доступных клиенту.
option streettalk-server ip-address [,ip-address... ];

#The StreetTalk Directory Assistance (STDA) server option specifies a list of STDA servers available to the client.
option streetalk-directory-assistance-server ip-address [,ip-address... ];