Ubuntu → Настройка DHCP сервера под управлением Ubuntu 12.04
Почти 2 года прошло с публикации предыдущей статьи по настройке DHCP сервера на Ubuntu, я решил ее обновить, благо новая ОС вышла и в ней есть не большие изменения. Недавно, я рассказал о настройке шлюза для локальной сети, а эта статья будет, дополнением к предыдущей, т.е. у нас есть шлюз, теперь неплохо настроить локальную сеть. Настраивать клиентские ПК в ручную-скучно, по этому, процесс настройки сети, на клиентских устройствах, мы автоматизируем.
Предполагается что у нас:
1) Операционная система установлена.
2) Шлюз настроен по статье: Настройка шлюза локальной сети, на базе Ubuntu 12.04
3) В локальной сети у нас есть клиентский ПК, операционная система значения не имеет. (для тестирования работоспособности)
Переходим к настройке.
поднимаем права до root:
Установим пакет DHCP сервера:
Зависимости подтянутся автоматически.
Адресное пространство, в нашей локальной сети, будет находиться в диапазоне 192.168.10.0/24 т.е. в нашей пдсети может находиться максимум 254 сетевых устройства.
Для начала, укажем на каком интерфейсе будет работать наш DHCP сервер
Нас интересует строка INTERFACES т.к. к локальной сети у нас подключается eth1 вот его и укажем:
Теперь нам необходимо настроить конфигурационный файл DHCP сервера:
Сервер планируется единственным в сети, по этому будет работать в авторитарном режиме, для этого снимаем комментарий со строки:
Закомментируем некоторые строки, они нам не понадобятся, все параметры будут храниться в одном месте, но об этом дальше.
Теперь создадим нашу подсеть, диапазон IP у нам будет начиная со 192.168.10.10 и заканчивая 192.168.10.254, маска подсети 255.255.255.0 ( или 24 bit), в качестве шлюза, DNS сервера у нас выступает сам сервер, указываем IP интерфейса eth1-192.168.10.1
Время аренды адреса, указывается в секундах, я указал 7 дней.
Сохраняем изменения выходим.
перезапустим DHCP
Переходим к нашему тестовому клиентскому ПК, устанавливаем в настройках сетевого соединения- получение IP адреса от DHCP сервера. Получаем настройки сети, лезем в интернет и если вы настраивали шлюз по моей статье, то с доступом в интернет у вас проблем возникнуть не должно.
В случае возникновения проблем, то их причины нужно узнавать из логов. По умолчанию isc-dhcp-server кидает записи в syslog, который находится в /var/log/syslog в случае если информации в нем, не достаточно, то можно изменить уровень логирования событий, его настройки хранятся в:
нас интересует строка:
Если потребовалось изменить уровень логирования, то можно выставить 1, тогда, чтобы выглядело:
Тогда в лог будут заноситься все события DHCP сервера, просто в огромных объемах, но это необходимо исключительно в целях выявления причины сбоя, после устранения необходимо перевести в обычный режим.
Если есть необходимость в резервировании IP адреса за определенной машиной, то бегать к клиентскому ПК, чтобы забить там статический IP, нет необходимости, да и это совершенно не правильно. Гораздо удобнее выполнить резервацию этого IP адреса на DHCP сервере. После выполнения резервации данный IP адрес будет выдаваться только тому MAC адресу, за которым он зарегистрирован.
Делается это очень просто:
В dhcpd.conf добавляется следующее:
Где:
hardware ethernet -Указываем MAC адрес сетевой карты
Остальное можно писать «от фанаря».
Если понадобилось посмотреть, какие адреса были выданы, а также узнать их статус (свободен/занят), то идем в:
На этом, пожалуй и все.
В случае возникновения вопросов, дополнений и улучшений- прошу в комментарии.
Предполагается что у нас:
1) Операционная система установлена.
2) Шлюз настроен по статье: Настройка шлюза локальной сети, на базе Ubuntu 12.04
3) В локальной сети у нас есть клиентский ПК, операционная система значения не имеет. (для тестирования работоспособности)
Переходим к настройке.
поднимаем права до root:
sudo su
Установим пакет DHCP сервера:
aptitude install isc-dhcp-server
Зависимости подтянутся автоматически.
Адресное пространство, в нашей локальной сети, будет находиться в диапазоне 192.168.10.0/24 т.е. в нашей пдсети может находиться максимум 254 сетевых устройства.
Для начала, укажем на каком интерфейсе будет работать наш DHCP сервер
nano /etc/default/isc-dhcp-server
Нас интересует строка INTERFACES т.к. к локальной сети у нас подключается eth1 вот его и укажем:
INTERFACES="eth1"
Теперь нам необходимо настроить конфигурационный файл DHCP сервера:
nano /etc/dhcp/dhcpd.conf
Сервер планируется единственным в сети, по этому будет работать в авторитарном режиме, для этого снимаем комментарий со строки:
authoritative;
Закомментируем некоторые строки, они нам не понадобятся, все параметры будут храниться в одном месте, но об этом дальше.
default-lease-time 600;
max-lease-time 7200;
Теперь создадим нашу подсеть, диапазон IP у нам будет начиная со 192.168.10.10 и заканчивая 192.168.10.254, маска подсети 255.255.255.0 ( или 24 bit), в качестве шлюза, DNS сервера у нас выступает сам сервер, указываем IP интерфейса eth1-192.168.10.1
Время аренды адреса, указывается в секундах, я указал 7 дней.
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.254;
option domain-name-servers 192.168.10.1;
option domain-name "example.org";
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 604800;
max-lease-time 604800;
}
Сохраняем изменения выходим.
перезапустим DHCP
/etc/init.d/isc-dhcp-server restart
Переходим к нашему тестовому клиентскому ПК, устанавливаем в настройках сетевого соединения- получение IP адреса от DHCP сервера. Получаем настройки сети, лезем в интернет и если вы настраивали шлюз по моей статье, то с доступом в интернет у вас проблем возникнуть не должно.
В случае возникновения проблем, то их причины нужно узнавать из логов. По умолчанию isc-dhcp-server кидает записи в syslog, который находится в /var/log/syslog в случае если информации в нем, не достаточно, то можно изменить уровень логирования событий, его настройки хранятся в:
nano /etc/dhcp/dhcpd.conf
нас интересует строка:
log-facility local7;
Если потребовалось изменить уровень логирования, то можно выставить 1, тогда, чтобы выглядело:
log-facility local1;
Тогда в лог будут заноситься все события DHCP сервера, просто в огромных объемах, но это необходимо исключительно в целях выявления причины сбоя, после устранения необходимо перевести в обычный режим.
Если есть необходимость в резервировании IP адреса за определенной машиной, то бегать к клиентскому ПК, чтобы забить там статический IP, нет необходимости, да и это совершенно не правильно. Гораздо удобнее выполнить резервацию этого IP адреса на DHCP сервере. После выполнения резервации данный IP адрес будет выдаваться только тому MAC адресу, за которым он зарегистрирован.
Делается это очень просто:
В dhcpd.conf добавляется следующее:
host testhost {
hardware ethernet 00:01:8a:e3:s8:92;
fixed-address 192.168.10.11;
}
Где:
hardware ethernet -Указываем MAC адрес сетевой карты
Остальное можно писать «от фанаря».
Если понадобилось посмотреть, какие адреса были выданы, а также узнать их статус (свободен/занят), то идем в:
/var/lib/dhcp/dhcpd.leases
На этом, пожалуй и все.
В случае возникновения вопросов, дополнений и улучшений- прошу в комментарии.
116 комментариев
по поводу VPN -так статья есть тут, просто воспользуйтесь наработкой.
1) мне удалось настроить dnsmasq как мне нужно — пинговал локальные машины по имена, для этого мне пришлось занести их все в hosts на сервере + оказывается он простые имена не воспринимал — только типа ubuntu.home.local, но за то не работал прокси сервер — возможно из-за того что я не использовал DHCP настройку в dnsmasq — у меня стоит dhcp3
2) тут удаляю dnsmasq и ставлю bind9 без каких то настроек и тут же включается сквид, но за то не могу пинговать локальные компьютеры… вот и я хотел просто настроить bind9 для этих дел, хотя может всё таки нужно добивать dnsmasq
Что в syslog?
eth0 отсутствует вообще, поднимаю вручную eth0 (ifconfig eth0 up) ip не присваивается.
Даже если IP не выдан DHCP сервером, то сетевой интерфейс падать не должен.
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
А что с syslog?
PS у меня интернет щас через роутер раздается в сетку и на сервак соответственно тоже приходит через роутер.
---интернет--->|роутер|---|сервер|----|клиенты|
|
|
|клиенты|
DHCP сервер поднят на втором интерфейсе (192.168.1.1) и соответственно раздает ip только туда.
PS у меня интернет щас через роутер раздается в сетку и на сервак соответственно тоже приходит через роутер.
необходимо разбираться с включением интерфейса eth0, думаю что проблема именно в нем. В настройках шлюза и DHCPя не трогал авто поднятия сетевой карты.
Ну так на вскидку, если засунуть команду запуска в rc.local чтобы он поднимался автоматически при старте системы.
например:
Должно возвращать IP сервера.
Ну проверить чтобы с клиентов ходили пинги к шлюзу.
Конфликта ISC-DHCP-SERVER и dnsmasq быть не должно, если вы не настроили в качестве DHCP сервера dnsmasq. Если все было настроено по моей доке, то никаких проблем наблюдаться не должно.
с чем это может быть связано? где её искать?
а у вас клиенты-то в локальной сети есть? А то может просто нечего туда вписывать…
Смущает только то, что при DHCP-сервер висит на 0.0.0.0:67 (udp) и 0.0.0.0:1 (raw). Зачем нужны эти порты вроде как понятно. Не понятен адрес: 0.0.0.0! Хотелось бы каким-нибудь образом переделать с 0.0.0.0 на 192.168.0.0. Не подскажете как это можно сделать?
Система работает?
Не парьтесь!
А по openVPN статью писать не собираетесь?
Инета нет где — на сервере или же на клиентах?
У меня у самого несколько странная проблема возникла:
ДХЦП сервер отдает зарезервированные адреса «левым» клиентам. С чего вдруг?
Дело в том что если ПК до этого выдавался определенный адрес, то после перезагрузки он пытается снова его получить, возможно с этим связана выдача арендованных адресов другим клиентам, но данная фигня обычно решается сама собой, если в сети есть уже такой IP адрес, то запрос к DHCP серверу выполняется повторно.
пул адресов 192.168.5.2 — 192.168.5.254
Зарезервированные: 192.168.5.2 — 5.20
В сеть подключены все машины из зарезервированных за исключением 2х. Т.е. 2 адреса из зарезервированных еще не арендовались (планшеты, мать их. И когда они появятся в офисе — неизвестно). Если я правильно понимаю, то при подключении новой машины ей присваивается первый адрес из свободных. А первый из свободных — в зарезервированном диапазоне. Я так думаю, что это продолжалось бы только до тех пор, пока все «зарезервированные» машины не получили бы положенные им адреса.
В данном случае просто укоротил пул адресов: 192.168.5.21 — 5.254
Ошибка выдается?
Адреса раздаются?
нужно смотреть логи!
eth0 Link encap:Ethernet HWaddr 00:18:F3:BE:18:1E
BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39456 errors:0 dropped:0 overruns:0 frame:0
TX packets:45730 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 00:18:F3:BE:18:1E
inet addr:192.168.10.1 Bcast:192.168.10.255 Mask:255.255.255.0
inet6 addr: fe80::218:f3ff:febe:181e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39456 errors:0 dropped:0 overruns:0 frame:0
TX packets:45730 errors:0 dropped:0 overruns:0 carrier:6
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:468 (468.0 B)
Interrupt:20
lo Link encap: Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:12812 (1.1 Kb) TX bytes:12812 (1.1 Kb)
auto eth1
iface lo inet dhcp
auto eth0
auto eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
auto lo
iface lo inet dhcp
auto lo
iface lo inet loopback
у меня на шлюзе (на котором и будет висеть ДХЦП) 4 сетевые карты: eth0 (смотрит в инэт, статический ip) eth1 локалка 192.168.1.0/24, eth2 локалка 192.168.2.0/24, eth3 локалка 192.168.3.0/24. Вопрос: Как настроить ДХЦП чтоб он раздавал свои адреса в свои подсети?
В вашей ситуации, нужно делить сети на vlanы и им уже выдавать нужные диапазоны адресов.
ubuntuforums.org/showthread.php?t=1465860
Все нужно прописать.
Схема роутер-комп-виртуалка с убунтой-виртуалка с клиентом ХР.
Это после включения виртуалки. 2 строки о железке на интерфейсе и 1 строка о не готовности линка.
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
Все работало ровно до момента установки isc-dhcp-server.
/etc/init.d/isc-dhcp-server stop
/etc/init.d/networking restart
и после смотреть появился ли интерфейс. Нет, не появился. В логах тоже самое.
Посмотрите эту статью xgu.ru/wiki/%D0%9E%D0%BF%D1%86%D0%B8%D1%8F_82_DHCP думаю что она ответит на все ваши вопросы по данной теме.
Наткнулся на эту статью и возник вопрос добавления маршрута для 255.255.255.255. Можешь прокомментировать? Спасибо!
немного логов
Я так и не увидел и тут вырисовывается как минимум 2 варианта:
1) Адрес находится вне пула IP адресов выдаваемых DHCP сервером.
2) Адрес занят, но тогда должна быть запись вида DHCPNACK и роутрер должен начать запрашивать любой свободный IP адрес.
Конфик dhcp
подсеть получатель ---> маска указанной подсети--->Адрес роутера, который отправит пакеты в указанную подсеть.
пример: вы находитесь в подсети 192.168.100.0/24 вам нужно отправить пакет в подсеть 10.10.3.0/16 через маршрутизатор 192.168.100.10 тогда маршрут имеет вид:
10.10.3.0 255.255.0.0 192.168.100.10
А вы выкладываете маску 255.255.255.255 и что вы хотите получить, я не могу понять.
Сделайте резервирование IP за MAC адресами роутеров
Ну или как-то так…
Если какие-то проблемы в выдаче адресов то нужно смотреть логи системы! Там есть 99% ответов о проблемах.
то что клиенты не получают ответ от DNS сервера, на вскидку, возможно 3 варианта:
1) Клиенты получают не правильный IP DNS сервера
2) DNS сервер заблокирован фаерволлом
3) DNS не слушает интерфейс в вашей подсети.
А что конкретно у вас там я не знаю, в любом случае, syslog вам в помощь…
/var/lib/dhcp/dhcpd.leases ничего не открывает. Это может быть связано с тем что при перезагрузке dhcp-сервера он ошибку не выдал [Fail], но и не выдал [ОК]. Подскажите что не так.
Права на запись в указанную папку у DHCP сервера есть? Файл должен создаваться автоматически.
Как мне добиться обращений к клиентам по именам хостов. У меня в сети сервер sun. Клиенты mars, mercury, saturn и т.д. Пинги по именам идут нормально: ping masr. А подключения не проходят.
ssh mars
отвечает
ssh: connect to host mars port 22: Connection refused
Пока обращаюсь по ip адресам: ssh 192.168.1.32. но это не удобно.
конфиг /etc/network/interfaces
INTERFACES=«vlan»
указав IP адреса вашей новой подсети!
«Переходим к нашему тестовому клиентскому ПК, устанавливаем в настройках сетевого соединения- получение IP адреса от DHCP сервера. „
Это куда? У меня не показывает никаких активных соединений.
Тестовый ПК у вас как-то подключен к локальной сети где работает ваш DHCP сервер, если нет, то самое время это сделать