ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Настройка DHCP на оборудовании Cisco
Друг, наша предыдущая статья была посвящена рассказу о том, что из себя представляет протокол DHCP (Dynamic Host Configuration Protocol). Сегодня мы расскажем, как его настроить на оборудовании Cisco.
Полный курс по Сетевым Технологиям
В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer
Маршрутизатор Cisco, работающий под управлением программного обеспечения Cisco IOS, может быть настроен на работу в качестве DHCP сервера. Сервер назначает и управляет адресами IPv4 из указанных пулов адресов в маршрутизаторе для DHCP клиентов.
Исключение адресов IPv4
Маршрутизатор, работающий как DHCP сервер, назначает все адреса IPv4 в диапазоне (пуле), если не настроен на исключение определенных адресов. Как правило, некоторые IP адреса из пула принадлежат сетевым устройствам, таким как маршрутизаторы, сервера или принтеры, которым требуются статические адреса, поэтому эти адреса не должны назначаться другим устройствам. Чтобы их исключить, используется команда ip dhcp excluded-address. При помощи этой команды можно исключить как один единственный адрес, так и диапазон адресов, указав из него первый и последний.
Рассмотрим на примере, в котором исключим из раздачи адрес 192.168.1.254 и адреса с 192.168.1.1 по 192.168.1.9
Настройка DHCP пула
Настройка DHCP сервера включает в себя определение пула адресов, которые будут раздаваться. Для создания пула используется команда ip dhcp pool [название_пула]. После этого необходимо ввести две обязательные команды – network [адрес_сети][маска/длина_префикса] для указания сети из которой будут раздаваться адреса и default-router[адрес_default_gateway] для указания шлюза по умолчанию (можно ввести до 8 адресов).
Также можно использовать дополнительные команды – например, указать DNS сервер (команда dns-server [адрес]), доменное имя (команда domain-name [домен]), NetBIOS WINS сервер (команда netbios-name-server[адрес]), а так же время аренды адреса (команда lease [количество_дней_часов_минут], сначала указываются дни, затем через пробел часы, а затем минуты). По умолчанию время аренды выставляется 1 день.
Чтобы выполнить проверку можно использовать команду show ip dhcp binding, которая показывает список всех IP адресов и сопоставленных с ними MAC адресов, которые были выданы DHCP сервером. Также есть команда show ip dhcp server statistics, используя которую можно увидеть статистику DHCP сервера, включая информацию об отправленных и полученных DHCP сообщениях. Ну и если клиентом является ПК с ОС Windows, то информацию можно посмотреть через командную строку, введя команду ipconfig /all, а для пользователей Linux подойдет команда ifconfig.
Ретрансляция DHCP (DHCP Relay)
В сложной иерархической сети серверы обычно находятся не в той же сети, что и клиенты. В результате если DHCP сервер находится в другой сети, то до него не смогут доходить запросы от клиентов, поскольку маршрутизаторы не пересылают широковещательные сообщения. Чтобы решить эту проблему нужно воспользоваться командной ip helper-address [адрес_DHCP-сервера], которую нужно ввести на маршрутизаторе в режиме конфигурации интерфейса, чтобы он перенаправлял broadcast сообщения от DHCP клиентов уже в виде unicast к DHCP серверу, находящемуся в другой сети.
Настройка роутера как DHCP клиента
Иногда роутер сам должен получить IP адрес по DHCP, например от интернет-провайдера. Для этого нужно в режиме конфигурации интерфейса ввести команду ip address dhcp, после чего интерфейс будет пытаться получить адрес от DHCP сервера.
Полный курс по Сетевым Технологиям
В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer
Как обрабатываются два оператора «ip helper-address»?
Я обнаружил подсеть с двумя операторами ip helper-address. Это не наша нормальная конфигурация.
Глядя на наши DHCP-серверы, кажется, что у них обоих есть аренда.
Я понимаю, что это не рекомендуется, и два DHCP-сервера могут не знать о назначении аренды друг у друга (я уверен, что они этого не делают).
Вопрос в том, как это обрабатывается коммутатором Cisco (4510 Sup7 12.2)?
Команда ip helper-address обозначает адрес, на который передаются широковещательные сообщения; он отправит исходный пакет на каждый из перечисленных адресов.
Если оба отвечают, оба ответа пересылаются обратно в ЛВС.
Ваш ip-помощник является правильным способом сделать это для резервирования и является рекомендуемым методом.
Обнаружение DHCP (широковещательная рассылка) выбирается хелпером ip и затем индивидуально пересылается на каждый DHCP-сервер с агентом-ретранслятором (маршрутизатором) в запросе.
Обычно выигрывает первый DHCP-сервер. Оба DHCP-сервера могут (и должны) отправлять DCHPOffers клиенту. Именно клиент решает, какой из них оставить, а затем отправляет DHCPRequest (одноадресный) на сервер, который предложил его для IP-адреса, который он хочет использовать. Серверу необходимо DHCPAck, чтобы запрос завершил процесс.
Так как ваш пул областей пополам, убедитесь, что серверы могут поддерживать всю вашу сеть, если один сервер DHCP выйдет из строя. Рассматривайте время аренды как время, в течение которого клиенты могут сохранять свои адреса, когда вы не исчерпаете свой пул, если у вас много чередующихся клиентов, но при этом вы сможете выделить достаточно времени для обнаружения и устранения неисправного DHCP-сервера.
Особенности работы и настройки DHCP на маршрутизаторах Cisco (Часть 2)
1. Конфигурация
В качестве примера возьмем следующую схему:
На маршрутизаторе R3 расположен DHCP-сервер, который централизованно выдает адреса в сети LAN_1 и LAN_2. Маршрутизаторы R1 и R2 в данной схеме являются DHCP-Relay агентами
Сконфигурируем на R3 два пула адресов для каждой локальной сети:
!в режиме глобальной конфигурации определим адреса, которые будут исключены из пула (это адреса интерфейсов R1 и R2
ip dhcp excluded-address 192.168.1.1
ip dhcp excluded-address 192.168.2.1
!создадим пул адресов с именем LAN_1
ip dhcp pool LAN1
network 192.168.1.0 255.255.255.0
ip default-router 192.168.1.1
!создадим пул адресов с именем LAN_2
ip dhcp pool LAN2
network 192.168.2.0 255.255.255.0
ip default-router 192.168.2.1
Естественно, при необходимости можно добавить в пул дополнительные опции.
Следующий этап — конфигурация агентов DHCP-Relay на маршрутизаторах R1 и R2. Суть DHCP-Relay заключается в пересылке широковещательного пакета от клиента одноадресатным пакетом DHCP-серверу.
Конфигурация агентов выполняется следующей командой:
!выбираем интерфейс, на который будет приходить широковещательный запрос от клиентов, в данном случае это интерфейс f0/0 маршрутизатора, который подключен к сегменту сети
interface fa0/0
ip helper-address 10.1.1.2
no ip forward-protocol udp 37
no ip forward-protocol udp 53
2. Как это работает?
Клиент шлет стандартный DISCOVERY:
который пересылается Relay-агентом в направлении DHCP-сервера (измененные поля отмечены красным):
Как видно из картинки, сообщение теперь пересылается одноадресным пакетом с источником 192.168.1.1 (интерфейс маршрутизатора, на который был получен широковещательный пакет) и получателем 10.1.1.2 (адрес, который указан командой ip helper-address. Кроме того, адрес 192.168.1.1 указан в поле Relay agent IP address
На основании адреса источника сообщения DHCP-сервер определяет, из какого пула выдавать адреса. Для маршрутизатора R2 запрос пойдет с адресом источника 192.168.2.1 и сервер выдаст адрес из пула LAN_2.
Предложение OFFER от R3 к R1 выглядит следующим образом:
R1 пересылает его клиенту меняя только адреса источника на 192.168.1.1 и получателя на 192.168.1.2 (ссылка на скриншот)
Вот таким образом выглядит обмен сообщениями между клиентом, агентом и сервером:
3. Заключение
Для правильной работы данного примера важно учесть следующий момент: маршрутизатор R3 получает пакеты от R1 с адресом источника 192.168.1.1, поэтому на R3 сеть 192.168.1.0 должна быть в таблице маршрутизации, я настроил EIGRP между маршрутизаторами для решения этой проблемы. Смотрим таблицу:
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
C 10.1.2.0 is directly connected, FastEthernet0/0
C 10.1.1.0 is directly connected, FastEthernet0/1
D 192.168.1.0/24 [90/307200] via 10.1.1.1, 00:00:16, FastEthernet0/1
D 192.168.2.0/24 [90/307200] via 10.1.2.1, 00:02:17, FastEthernet0/0
Cisco IOS – DHCP Helper (DHCP Relay) – IP-Helper Setup
KB ID 0001168В
Problem
Cisco documentationВ calls this a ‘DHCP Relay’, and uses the command IP-Helper, and I usually call this DHCP Helper, just to confuse everyone. To be fair the term DHCP Relay is an industry standard, it’s not particular to Cisco (as you will see later when I Wireshark the traffic).
So If you are reading this you have a DHCP server and you want to use it to lease addresses to clients that are on a different network segment (layer 2, or layer3).
To do that you need an agent to be on the same network segment as the client listening for DHCP requests, when it receives one it talks to the DHCP server on the clients behalf and gets the correct address.
Solution
Example 1 Cisco Router
Here we need to lease two different DHCP scopes to two different network segments, R1 will act as the IP-Helper for both of those networks, R2 and R3 will get their IP addresses from the correct DHCP scope.
This works because each (client facing) interface on R1 has an IP-Helper address defined that points to the DHCP server.
So How Does It Know Which Scope To Lease From?В This is because the Router supplies the IP address of a RELAY AGENT, which is justВ the IP address of the physical interface that intercepted the DHCP request. When it asks for an IP address from the DHCP server, the Server leases an address from the same range, (again I’ve tracked all this in Wireshark below).
IP-Helper RouterВ Configuration
You can see this works because the DHCP server has matching scopes for both network segments. (Yes one of my test servers is 2003, you’re going to see some Windows XP in a minute!
Well that’s fine for routers, but what about machines? They send a DHCP Discover just like any other client. I’ve replaced one of the routers with an actual machine.
With its network card set to DHCP you will again get a lease from the correct scope, because the Router brokered it for us.
Back on the DHCP server you can see the lease to the windows XP machine entered in the current scope leases, It knows the name of the client because (as you will see below) the relay agent (Router) passed that information (along with the MAC address of the client) to the DHCP server.
Example 2 CiscoВ Switches
OK, I did the routers first because I find it easier to explain things at layer 3. Not that you can’t create sub interfaces on the router, add those sub interfaces to VLANs, and run DHCP relays from them. But in most cases you will be setting up DHCP helpers on switches. Here the principle is the same but you define the ip-helper on the VLAN, (unless it’s routed port then treat it the same as a router interface). Let’s modern things up a bit, and use a 2012 R2 DHCP server, and some Windows 8 clients.
I need to lease addresses from my second scope to clients in VLAN 200, (the other client and server are in the same VLAN, so that will just work. (Remember a VLAN is a broadcast domain, and DHCP is using broadcasts).

And my client, (DHCP Client in VLAN 200) gets the correct IP.
IP-Helper SwitchВ Configuration (VLANS)
Analysing (Packet-Sniffing) DHCP Relay Sequence with Wireshark
Other packet sniffers are available, but I’ve got a soft spot for Wireshark. To filter DHCP traffic you can use the following ‘filter’.
DHCP works by using four messages, (which I remember using the acronym DORA: Discover, Offer, Request, Acknowledge). If you sniff the traffic on the DHCP server, you can watch this process being brokered by your DHCP Relay Agent.
Discover
Offer
Request
Acknowledge
And just to prove it’s not all ‘smoke and mirrors’, here’s the client with the leased address, showing a matching MAC address, and hostname.
Волчье логово / Ulvens Lair / Wolfshöhle / Wolfs Lair
Шпаргалки и заметки о сетевых технологиях, серверах, СХД, IT в принципе. И о разном другом) Чтоб самому не забывать, и другим помочь.
четверг, 20 июня 2013 г.
DHCP Relay: Теория и практика настройки DHCP-Relay
Теоретическая база
DHCP сообщение выглядит следующим образом:
DHCP-Relay
Все очень просто: в данной схеме присутствует маршрутизатор, который, как известно, разбивает на части широковещательный домен и не передает широковещательные сообщения из одной сети в другую. Следовательно, РС0 и DHCP SERVER находятся в разных широковещательных доменах, а значит, без дополнительных настроек недостижимы. Broadcast от PC0 будет сброшен маршрутизатором, и РС0 не получит требуемого адреса из своей сети.
Тем не менее выход из данной ситуации есть: настройка DHCP-Relay. Мы можем заставить промежуточное устройство передавать широковещательные DHCP-запросы между клиентами и серверами, которые находятся в разных широковещательных доменах.
В случае настройки Relay-агента, в поле giaddr появится адрес того устройства, которое будет пересылать DHCP-запросы. В случае предлагаемой схемы, в поле будет стоять адрес интерфейса маршрутизатора GW, направленного в сторону сегмента, в котором расположен РС0. Ответы от DHCP-сервера будут направлены relay-агенту, а он уже будет отправлять их конечному хосту, запрашивающему сетевые настройки.
Практическая часть
С теорией все понятно. Теперь применим полученные знания к задачам, возникающим на практике. Попробуем начать с простых задач, и дойдем до (на мой взгляд) более-менее сложных.
Вариант № 1
УСЛОВИЕ: Имеем коммутатор L3 (Cisco 3750-X). Запустим на нем DHCP-Server и будем раздавать настройки всем устройствам, подключенным к нашему коммутатору.
Откровенно говоря, DHCP-сервер лучше всего создавать на маршрутизаторе. Но в данном случае все равно попробуем сделать это на коммутаторе L3, раз он умеет выполнять такую роль. Синтаксис может отличаться в зависимости от версии IOS.
Предлагаемая схема проста и представлена на рисунке ниже.
Создадим SVI для возможности подключения к коммутатору с помощью Telnet/SSH
L3_Core_SW(config)#interface vlan 1
L3_Core_SW(config-if)#ip address 10.10.10.253 255.255.255.0
L3_Core_SW(config-if)#no shutdown
Использовать VLAN 1 не самое правильное решение, но для тестовой схемы будем использовать его. Далее приступим к созданию DHCP-пула. Во-первых, исключим адреса, которые мы выдали серверам, шлюзам, сетевым устройствам. Например исключим диапазон с 10.10.10.250 по 10.10.10.254:
L3_Core_SW(config)#ip dhcp excluded-address 10.10.10.250 10.10.10.254
Создадим пул адресов с именем LocalNet и укажем, какие параметры необходимо выдавать хостам:
L3_Core_SW(config)#ip dhcp pool LocalNet
L3_Core_SW(dhcp-config)#network 10.10.10.0 255.255.255.0
L3_Core_SW(dhcp-config)#default-router 10.10.10.254
L3_Core_SW(dhcp-config)#dns-server 8.8.8.8
L3_Core_SW(dhcp-config)#domain-name LovelyWork
Вариант № 2
УСЛОВИЕ: Возьмем схему из предыдущего варианта и модифицируем её, добавив еще несколько SVI, VLAN, и создав для каждого из VLAN свой DHCP-пул.
К имеющемуся VLAN добавим еще два:
Конфигурация коммутатора будет схожа с предыдущем заданием. Пулы настраиваются точно так же:
L3_Core_SW(config)#vlan 2
L3_Core_SW(config-vlan)#name Department_A
L3_Core_SW(config-vlan)#vlan 3
L3_Core_SW(config-vlan)#name Department_B
L3_Core_SW(config-vlan)#exit
L3_Core_SW(config)#interface vlan 2
L3_Core_SW(config-if)#ip address 172.16.1.13 255.255.255.240
L3_Core_SW(config-if)#no shutdown
L3_Core_SW(config-if)#exit
L3_Core_SW(config)#ip dhcp excluded-address 172.16.1.13 172.16.1.14
L3_Core_SW(config)#ip dhcp pool Dep_A
L3_Core_SW(dhcp-config)#network 172.16.1.0 255.255.255.240
L3_Core_SW(dhcp-config)#default-router 172.16.1.14
L3_Core_SW(dhcp-config)#dns-server 8.8.8.8
L3_Core_SW(dhcp-config)#domain-name LovelyDepartment_A
L3_Core_SW(dhcp-config)#exit
L3_Core_SW(config)#interface vlan 3
L3_Core_SW(config-if)#ip address 172.16.1.29 255.255.255.240
L3_Core_SW(config-if)#no shutdown
L3_Core_SW(config-if)#exit
L3_Core_SW(config)#ip dhcp excluded-address 172.16.1.29 172.16.1.29
L3_Core_SW(config)#ip dhcp pool Dep_B
L3_Core_SW(dhcp-config)#network 172.16.1.16 255.255.255.240L3_Core_SW(dhcp-config)#default-router 172.16.1.30
L3_Core_SW(dhcp-config)#dns-server 8.8.8.8
L3_Core_SW(dhcp-config)#domain-name LovelyDepartment_B
Настроим на интерфейсах роли портов доступа (Access interface), и присвоим интерфейсам соответствие одному из VLAN. Порт g2/0/1 оставим без изменений, по умолчанию он будет находится в VLAN1:
L3_Core_SW(config)#int g2/0/2
L3_Core_SW(config-if)#switchport mode access
L3_Core_SW(config-if)#switchport access vlan 2
L3_Core_SW(config-if)#int g2/0/3
L3_Core_SW(config-if)#switchport mode access
L3_Core_SW(config-if)#switchport access vlan 3
Теперь запустим debug DHCP и посмотрим, каким образом будут обрабатываться сообщения от клиентов, находящихся в разных VLAN:
Каким образом коммутатор понимает, из какого пула необходимо взять адрес? Стоит обратить внимание на то, что коммутатор делает верный выбор пула, и выдает точно те адреса, которые могут существовать в соответствующем VLAN. Как видно из лога, коммутатор сравнивает пулы с адресом интерфейса, на который приходит DHCPDISCOVER. Если это сообщение приходит на интерфейс SVI VLAN 2, а этот интерфейс находится в одном сетевом сегменте с клиентом, значит нужно выбрать тот пул, который будет включать в себя адрес этого SVI. Аналогично с физическими интерфейсами на маршрутизаторе.
Таким образом, можно создавать множество пулов адресов без каких-либо проблем.
Вариант № 3
DHCPServer#sh run
Building configuration.
*Mar 2 02:02:59.417: %SYS-5-CONFIG_I: Configured from console by console
Current configuration : 2311 bytes
!
! Last configuration change at 02:02:59 UTC Tue Mar 2 1993
!
version 12.2
!
hostname DHCPServer
!
ip dhcp excluded-address 10.10.10.253 10.10.10.254
ip dhcp excluded-address 172.16.1.13 172.16.1.14
ip dhcp excluded-address 172.16.1.29 172.16.1.30
!
ip dhcp pool LocalNet
network 10.10.10.0 255.255.255.0
default-router 10.10.10.254
dns-server 8.8.8.8
domain-name LovelyWork
!
ip dhcp pool Dep_A
network 172.16.1.0 255.255.255.240
default-router 172.16.1.14
dns-server 8.8.8.8
domain-name LovelyDepartment_A
!
ip dhcp pool Dep_B
network 172.16.1.16 255.255.255.240
default-router 172.16.1.30
dns-server 8.8.8.8
domain-name LovelyDepartment_B
!
!
interface GigabitEthernet2/0/24
no switchport
ip address 10.10.5.200 255.255.255.0
!
end
Коммутатор, выполняющий роль relay-агента и маршрутизатора для межсетевого взаимодействия, имеет следующую конфигурацию:
RelayAgent#sh run
!
hostname RelayAgent
!
ip routing
!
interface GigabitEthernet1/0/1
!
interface GigabitEthernet1/0/2
switchport access vlan 2
switchport mode access
!
interface GigabitEthernet1/0/3
switchport access vlan 3
switchport mode access
!
interface GigabitEthernet1/0/4
switchport access vlan 4
switchport mode access
!
!
interface Vlan1
ip address 10.10.10.253 255.255.255.0
ip helper-address 10.10.5.200
!
interface Vlan2
ip address 172.16.1.13 255.255.255.240
ip helper-address 10.10.5.200
!
interface Vlan3
ip address 172.16.1.29 255.255.255.240
ip helper-address 10.10.5.200
!
interface Vlan4
ip address 10.10.5.253 255.255.255.0
!
Для настройки relay к каждому SVI был добавлен helper-address, ссылающийся на DHCP-сервер.
Подключим клиентское устройство к порт Gi1/0/3 (VLAN 3) на коммутаторе RelayAgent и рассмотрим лог команды debug:
*Mar 2 03:05:17.120: DHCPD: setting giaddr to 172.16.1.29.
*Mar 2 03:05:17.120: DHCPD: BOOTREQUEST from 0100.0d60.7886.dc forwarded to 10.10.5.200.
Ответ от DHCP-сервера приходит соответственно на SVI, принадлежащий VLAN 4, в котором и расположен DHCP-сервер. Этот ответ обрабатывается и перенаправляется клиенту. При этом relay-агент создает ARP-запись для выдаваемого сервером адреса:
Стоит посмотреть, есть ли какие-либо интересные изменения в логе debug на самом DHCP-сервере:
Вариант №4
Можно составить еще какие-либо схемы, используя дополнительные промежуточные устройства. Но логика настройки и работы DHCP остается неизменно.























