DHCP сервер

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
Ответить
Scorp
Сообщения: 22
Зарегистрирован: 16 янв 2009, 14:19

DHCP сервер

Сообщение Scorp »

устанавливаем

Код: Выделить всё

# pkg_add -r isc-dhcp30-server
Создадим конфигурационный файл для DHCP сервера:

Код: Выделить всё

 #ee /usr/local/etc/dhcpd.conf

Код: Выделить всё

default-lease-time 86400; # время аренды по умолчанию
max-lease-time 86400; # максимальное время аренды
authoritative; # единственный DHCP сервер в сети
ddns-update-style none; # динамический стиль обновления DNS
log-facility local7; #

subnet 192.168.34.0 netmask 255.255.254.0 { # подсеть в которой будем выдавать адреса
    range 192.168.34.30 192.168.34.254; # интервалы ip адресов на выдачу клиентам
    option routers 192.168.34.1; # адрес маршрутизатора в Интернет
    option netbios-name-servers 192.168.34.1; # адрес сервера WINS (если есть)
    option domain-name-servers 192.168.1.7; # адрес DNS сервера AD
    option domain-name "khk.stniva.ru"; # полное имя домена AD
}
в /etc/rc.conf добавляем следующие строки

Код: Выделить всё

dhcpd_enable="YES"
dhcpd_flags="-q" # отключаем вывод копирайта и прочего при старте dhcpd
dhcpd_ifaces="bge0" # сетевой интерфейс на котором будет работать dhcpd
запускаем

Код: Выделить всё

#/usr/local/etc/rc.d/isc-dhcpd start
проверяем

Код: Выделить всё

#/usr/local/etc/rc.d/isc-dhcpd status
dhcpd is running as pid 93726.
все отлично, пробуем какой-нибуть станцией получить адрес, все арендованные адреса мы видим тут

Код: Выделить всё

/var/db/dhcpd/dhcpd.leases
для тех кому надо привязать ip адрес к маку в dhcpd.conf добавляем следующее

Код: Выделить всё

host book { # имя хоста
     hardware ethernet 00:c0:9f:1e:64:92; # MAC адрес сетевой карты хоста
     fixed-address 192.168.34.23; # ip адрес для этого хоста
}
host general {
     hardware ethernet 00:a0:cc:c9:5c:7d;
     fixed-address 192.168.34.24;
}
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

DHCP сервер - установка из портов

Сообщение RomA »

DHCP - это сервис, который раздаёт IP адреса нашим компьютерам. Когда компьютеров мало - проще сделать руками... возможно, но когда компьютеров много? тогда руками сложно... а когда компьютеров много и вам надо часто менять настройки? ещё сложней. Вы не меняете часто настройки? ну тогда вы не развиваете свою сеть)))) Итак - DHCP позволяет централизованно и организованно управлять сетевыми настройками ваших устройств.
За осново мы возьмём предыдущую статью с начальными настройками, и разовьем их немного. А так же будем заглядывать в эту http://corp.stniva.ru/forum/viewtopic.p ... 66&start=0 статью. К статьям я отправляю, потому что то, что там описано я повторять второй раз не буду, а буду говорить только о новом.

Идём в

Код: Выделить всё

cd /usr/ports/net/isc-dhcp41-server
make install clean
Он спросит, а вы отвечаете

Код: Выделить всё

                                                                                ┌────────────────────────────────────────────────────────────────────┐
                                                                                │             Options for isc-dhcp41-server 4.1.2_1,1                │  
                                                                                │ ┌────────────────────────────────────────────────────────────────┐ │  
                                                                                │ │    [X] DHCP_PARANOIA  Enable support for chroot                │ │  
                                                                                │ │    [ ] DHCP_LDAP      Experimental LDAP backend support        │ │  
                                                                                │ │    [ ] DHCP_LDAP_SSL  Support LDAP connection over SSL/TLS     │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                │ │                                                                │ │  
                                                                                ├─└────────────────────────────────────────────────────────────────┘─┤  
                                                                                │                       [  OK  ]       Cancel                        │  
                                                                                └────────────────────────────────────────────────────────────────────┘  
                                                                                                                                                        

После того как поставилось берем за основу статью выше, и начинаем править файлы. Первым делом разрешим автозапуск, дабы не забыть - для этого в файл /etc/rc.conf добавляем следующие строки

Код: Выделить всё

dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_ifaces="em0"
Теперь идём править конфиг /usr/local/etc/dhcpd.conf - я опишу те строки, которые я правил, а те, которых нет в предыдущей статье обьясню, потому конфиг получится рванный - но для вас всё последующее - это один файл

Код: Выделить всё

option domain-name "stoilyanka.org";
option domain-name-servers 192.168.54.2, 192.168.1.7;
Теперь пропишем автоконфигурацию прокси - компьютеры, подключаемые к нашей сети смогут сами ходить в инет :-) (не забываем создать этот адрес и файл как это описано вот в этой статье http://corp.stniva.ru/forum/viewtopic.p ... &t=44#p313)

Код: Выделить всё

option local-pac-server code 252 = text ;                                                                         
option local-pac-server "http://wpad.stoilyanka.ru:80/wpad.dat\000" ;
А теперь укажем с каким сервером времени надо синхранизировать наши устройства

Код: Выделить всё

option ntp-servers 192.168.54.2;
Дальше продолжаем двигаться по файлу - это время, на которое будет выдаваться аренда ИП адреса. А вот второй параметр гораздо интересней - обычно проблема с DHCP в том, что постоянно меняется ИП адрес - но это от незнания - на самом деле DHCP сервер привязывает IP адрес к МАС адресу - так вот второй параметр отвечает за "время жизни" этой привязки - то есть если вы поставите там 1 год, то и ваши ИПы у компов не будут меняться год, потому что DHCP будет резервировать однажды выданный ИП. Следует аккуратно относиться к этой опции, иначе у вас просто кончатся все ИП адреса, если вы понимаете о чем я говорю )))))

Код: Выделить всё

default-lease-time 86400;
max-lease-time 172800;
ddns-update-style interim;
authoritative;
Теперь кусок для автообновления зон - статья как это настроить есть, потому не обьясняю

Код: Выделить всё

key DHCP_UPDATER {
    algorithm HMAC-MD5.SIG-ALG.REG.INT;
    secret 1b57xll8CbрgAа4iLOY0Iw==;
};

zone 54.168.192.IN-ADDR.ARPA {
    primary 127.0.0.1;
    key DHCP_UPDATER;
}
zone stoilyanka.ru {
    primary 127.0.0.1;
    key DHCP_UPDATER;
}

Дальше я удалю все те примеры, которые там есть и пропишу свою подсеть

Код: Выделить всё

subnet 192.168.54.0 netmask 255.255.255.0 {
  range 192.168.54.20 192.168.54.255;
  option domain-name-servers 192.168.54.2, 192.168.1.7, 192.168.1.1;
  option routers 192.168.0.1;
  option domain-name "stoilyanka.ru";
}
Теперь Вы должны перестроить DNS сервер для DDNS обновлений, а так же настроить сценарий автоконфигурации прокси. Но это можно сделать и потом - главное не забыть, а сейчас мы запускам сервер

Код: Выделить всё

hotel# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Всё успешно стартовало. Давайте перезагрузим какую нить машину и посмотрим что случилось cat /var/db/dhcpd/dhcpd.leases

Код: Выделить всё

server-duid "\000\001\000\001\025?\324\265\000\021\021\307W\351";

lease 192.168.54.26 {
  starts 2 2011/04/19 07:24:25;
  ends 3 2011/04/20 07:24:25;
  cltt 2 2011/04/19 07:24:25;
  binding state active;
  next binding state free;
  hardware ethernet 00:22:68:7e:f4:5a;
  uid "\001\000\"h~\364Z";
  set ddns-rev-name = "26.54.168.192.in-addr.arpa.";
  set ddns-txt = "31031d7743ad99a8b4a6a2f7fdbfafc66e";
  set ddns-fwd-name = "administrator.stoilyanka.ru";
  client-hostname "administrator";
}
lease 192.168.54.26 {
  starts 2 2011/04/19 07:24:28;
  ends 3 2011/04/20 07:24:28;
  cltt 2 2011/04/19 07:24:28;
  binding state active;
  next binding state free;
  hardware ethernet 00:22:68:7e:f4:5a;
  uid "\001\000\"h~\364Z";
  set ddns-rev-name = "26.54.168.192.in-addr.arpa.";
  set ddns-txt = "31031d7743ad99a8b4a6a2f7fdbfafc66e";
  set ddns-fwd-name = "administrator.stoilyanka.ru";
  client-hostname "administrator";
}


мы видем, что наш компьютер имеет IP адрес 192.168.54.26 - давайте проверим прямую и обратную зоны DNS? но сначало убедимся что на сервере в файле /etc/resolv.conf прописано всё верно - должен быть прописан наш внутренний сервер

Код: Выделить всё

domain   stoilyanka.ru
nameserver      127.0.0.1
Хорошо, прописано всё верно. Теперь проверим обратную зону

Код: Выделить всё

hotel# nslookup 192.168.54.26
Server:		127.0.0.1
Address:	127.0.0.1#53

26.54.168.192.in-addr.arpa	name = administrator.stoilyanka.ru.

hotel# 
Отлично, у нашего компьютера есть имя - administrator.stoilyanka.ru - проверим прямую зону

Код: Выделить всё

hotel# ping administrator.stoilyanka.ru
PING administrator.stoilyanka.ru (192.168.54.26): 56 data bytes
64 bytes from 192.168.54.26: icmp_seq=0 ttl=128 time=0.310 ms
64 bytes from 192.168.54.26: icmp_seq=1 ttl=128 time=0.227 ms
Компьютер пингуется по имени! На этом настройки DHCP+DDNS закончены

Совет от Евгения Харитонова:
настраивал DDNS по статье, у меня не заработало, в логах писало что нет прав на добавление, стал искать материал, оказывается для динамических зон есть папка /etc/namedb/dynamic (логично блин), перенес туда свои прямые и обратные зоны, поправил пути, рестартнул намед и автоматом создались журналы там и все стало работать
Vitamin
Сообщения: 14
Зарегистрирован: 02 мар 2010, 13:50
Контактная информация:

Отказоустойчивый DHCP с балансировкой нагрузки

Сообщение Vitamin »

Поставлена задача ввести в работу два DHCP-сервера в одной сети.
Пример работы на сетке 172.16.0.0 с маской сети 255.255.255.0
Начнём:
Предполагается, что у вас уже установлен и введён в работу DHCP-сервер.
Устанавливаем на другом серваке наш будущий "secondary" DHCP-сервак той-же версии и пока забываем о нём.
"Топаем" к конфигу будущего "primary" сервера.
PRIMARY
Конфиги серверов должны быть практически идентичны, копируем любым возможным способом конфиг на другой сервер.
Я это сделал так.

Код: Выделить всё

test# cd /usr/local/etc
test# scp dhcpd.conf vit@172.16.0.2:/tmp
Password:
dhcpd.conf                                                                                                                                       100%  472     0.5KB/s   00:00    
test# 
Сохраняем работающий конфиг.

Код: Выделить всё

test# cp /usr/local/etc/dhcpd.conf /usr/local/etc/dhcpd.conf.old
test#
Далее, добавляем такие строчки в конфиг на "primary" серваке, только не в конец конфига, а допустим после authoritative;:

Код: Выделить всё

one-lease-per-client true;
failover peer "apk" {
  primary;
  address 172.16.0.1;
  port 519;
  peer address 172.16.0.2;
  peer port 520;
  max-response-delay 60;
  max-unacked-updates 10;
  mclt 600;
  split 128;
  load balance max seconds 3;
}
include "/etc/dhcpd.master";
Далее, создаём файл с описанием сети и пулом адресов.

Код: Выделить всё

test# touch /etc/dhcpd.master
И не забываем установить права на этот файл.

Код: Выделить всё

test# chown dhcpd:dhcpd /etc/dhcpd.master
Правим его, добавляя туда

Код: Выделить всё

subnet 172.16.0.0 netmask 255.255.255.0 {
  pool {
    failover peer "apk";
    range 172.16.0.10 172.16.0.254;
    deny dynamic bootp clients;
  }
}
Этот файл должен присутствовать и на "secondary" DHCP-серваке поэтому копируем его туда тоже.
Ну,в принципе тут всё, для верности перепроверим всё ли правильно сделали и переходим на "secondary".

SECONDARY
Сразу переносим скопированный файл конфигурации на своё место, переименовав перед этим конфиг по умолчанию.

Код: Выделить всё

test1# cp /usr/local/etc/dhcpd.conf /usr/local/etc/dhcpd.conf.old
test1# cp -i /tmp/dhcpd.conf /usr/local/etc/dhcpd.conf
overwrite dhcpd.conf? (y/n [n]) y
test1#
Ну и этот тоже.

Код: Выделить всё

test1# cp /tmp/dhcpd.master /etc/dhcpd.master
Начинаем править наш "secondary" файл.
Добавляем.

Код: Выделить всё

one-lease-per-client true;
failover peer "apk" {
  secondary;
  address 172.16.0.2;
  port 520;
  peer address 172.16.0.1;
  peer port 519;
  max-response-delay 60;
  max-unacked-updates 10;
}
include "/etc/dhcpd.master";
Я добавил на то же место, что и в "primary".
Проверяем права, синтаксис всех конфигов, прибираемся и запускаем. Сначала "primary", потом "secondary".
В логе "secondary" у нас должна появиться инфа об обмене информацией с "primary" и в конце что-то типа.

Код: Выделить всё

balancing pool 80135a600 172.16.0.0/24  total 191  free 95  backup 95  lts 0  max-own (+/-)19
balanced pool 80135a600 172.16.0.0/24  total 191  free 95  backup 95  lts 0  max-misbal 29
Если это не так, то так-же читаем лог, смотрим что пишет и исправляем.
Ответить