Cisco DHCP: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
[[Категория:Cisco]]
 
[[Категория:Cisco]]
  +
По большой нужде (например если нет сервера или нет питания и сервер выключен) можно попробовать использовать DHCP на роутере или коммутаторе.
  +
<BR>
  +
То что оно конфигурируется убулюдошно не должно останавливать настоящего самурая. Но конечно позорище.
 
[[Категория:Dhcp]]
 
[[Категория:Dhcp]]
  +
=Cisco DHCP Option 82=
+
=Cisco DHCP Option 82=
  +
Тут я не нашел способа как сделать соответствие одновременно и классу и мак-адресу, при указанном мак-адресе срабатывает всегда он (как минимум на ASR1001)
  +
<BR>
  +
  +
Вот пример:
  +
<PRE>
  +
ip dhcp relay information trust-all
  +
</PRE>
  +
<PRE>
  +
ip dhcp pool 100.64.1.2_static
  +
network 100.64.0.0 255.255.0.0
  +
dns-server 172.31.100.1 172.31.100.5
  +
default-router 100.64.255.254
  +
lease 0 0 11
  +
class 0106000400650118020800067cad74002140
  +
address range 100.64.1.2 100.64.1.2
  +
</PRE>
  +
<PRE>
  +
ip dhcp class 0106000400650118020800067cad74002140
  +
relay agent information
  +
relay-information hex 0106000400650118020800067cad74002140
  +
</PRE>
  +
  +
Что в этом примере важно:
  +
* Если роутер сам является непосредственно получателем запросов (без релея) то <code>network 100.64.0.0 255.255.0.0</code> должна быть на интерфейсе (даже если не нужна там)
  +
* Если роутер получает запросы через релей то адрес релея должен быть заполнен правильно, и к нему должен быть маршрут
  +
Кроме того возможен вариант когда Option 82 вставляется на втором уровне, то что называют local_relay, и тогда обязательно нужно сказать тупой железке что это валидно, когда есть Opt 82, но в поле giaddr - <code>0.0.0.0</code> . Насколько я понимаю за это отвечает настройка <code>ip dhcp relay information trust-all</code>
  +
<BR>
  +
==relay-information hex==
  +
Сама идея писать в HEX мне не нравится - но видно лень было писать код
  +
<BR>
  +
Взять это значение можно из WireShark или написать руками
  +
  +
Если писать руками то в моем случае (<code>0106000400650118020800067cad74002140</code>:
  +
<PRE>
  +
01|06|00|04|0065|01|18|02|08|00|06|7cad74002140|
  +
01| | | | | | | | | | | | номер секции (или sub-option?)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|06| | | | | | | | | | | длинна sub-option (6 байт! -> 00 04 00 65 01 18)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
00| | | | | | | | | | (что значит 00 тут я не знаю - предполагаю что на длину отведено 2 байта)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|04| | | | | | | | | Длинна curcuit-id, 4 байта
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|0065| | | | | | | | Номер VLAN (в hex) (первые 2 байта из 4 байт curcuit-id),
  +
| | | | | | | | тут влан 101 (десятичный)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|01| | | | | | | Номер модуля, причем даже в коммутаторах без модулей
  +
| | | | | | | |(например для Po1 модуль будет 3 а номер порта - 1 )
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|18| | | | | | Номер порта коммутатора, к которому подключен клиент
  +
| | | | | | (счёт начинается с 0 или 1 зависит от коммутатора), 0x18 в HEX это 24
  +
| | | | | | в десятичном счислении, у меня счет шел с 0 и порт Gi 1/23
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|02| | | | | Начало второй секции
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|08| | | | Длинна второй секции ( 8 байт-> 00 06 7c ad 74 00 21 40)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|00| | | (что значит 00 тут я не знаю - предполагаю что на длину отведено 2 байта)
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|06| | Длинна remote-id, 6 байт
  +
------------------------------------------------------------------------------------------------------------------------------
  +
|7cad74002140| MAC-адрес коммутатора, к которому подключен клиент
  +
</PRE>
  +
* В поле remote-id в целом вендоры могут пихать что угодно (особенно удобно строки что бы при замене коммутатора не менялся remote-id но так как это умеют не все, а мак-адрес - все, то пока ориентируюсь только на мак адрес)
   
 
=Cisco Static Adresses=
 
=Cisco Static Adresses=
  +
тут конечно какой-то очередной треш
  +
  +
* Если хочется сделать адрес статическим и только то нужно делать так
  +
<PRE>
  +
ip dhcp relay information trust-all
  +
ip dhcp excluded-address 100.64.1.1
  +
ip dhcp excluded-address 100.64.255.254
  +
!
  +
</PRE>
  +
<PRE>
  +
ip dhcp pool 100.64.1.3_static
  +
host 100.64.1.3 255.255.0.0
  +
hardware-address b827.eb24.8df2
  +
dns-server 172.31.100.1 172.31.100.5
  +
default-router 100.64.255.254
  +
lease 0 0 2
  +
</PRE>
  +
* <code>host 100.64.1.3 255.255.0.0</code> если тут маска не совпадает с тем что на интерфейсе то работать не будет (а как сделать что бы работало - никто не знает)

Текущая версия на 15:42, 9 августа 2023

По большой нужде (например если нет сервера или нет питания и сервер выключен) можно попробовать использовать DHCP на роутере или коммутаторе.
То что оно конфигурируется убулюдошно не должно останавливать настоящего самурая. Но конечно позорище.

Cisco DHCP Option 82

Тут я не нашел способа как сделать соответствие одновременно и классу и мак-адресу, при указанном мак-адресе срабатывает всегда он (как минимум на ASR1001)

Вот пример:

ip dhcp relay information trust-all
ip dhcp pool 100.64.1.2_static
 network 100.64.0.0 255.255.0.0
 dns-server 172.31.100.1 172.31.100.5
 default-router 100.64.255.254
 lease 0 0 11
 class 0106000400650118020800067cad74002140
  address range 100.64.1.2 100.64.1.2
ip dhcp class 0106000400650118020800067cad74002140
 relay agent information
      relay-information hex 0106000400650118020800067cad74002140

Что в этом примере важно:

  • Если роутер сам является непосредственно получателем запросов (без релея) то network 100.64.0.0 255.255.0.0 должна быть на интерфейсе (даже если не нужна там)
  • Если роутер получает запросы через релей то адрес релея должен быть заполнен правильно, и к нему должен быть маршрут

Кроме того возможен вариант когда Option 82 вставляется на втором уровне, то что называют local_relay, и тогда обязательно нужно сказать тупой железке что это валидно, когда есть Opt 82, но в поле giaddr - 0.0.0.0 . Насколько я понимаю за это отвечает настройка ip dhcp relay information trust-all

relay-information hex

Сама идея писать в HEX мне не нравится - но видно лень было писать код
Взять это значение можно из WireShark или написать руками

Если писать руками то в моем случае (0106000400650118020800067cad74002140:

01|06|00|04|0065|01|18|02|08|00|06|7cad74002140|
01|  |  |  |    |  |  |  |  |  |  |            | номер секции (или sub-option?)
------------------------------------------------------------------------------------------------------------------------------
  |06|  |  |    |  |  |  |  |  |  |            | длинна  sub-option (6 байт! -> 00 04 00 65 01 18) 
------------------------------------------------------------------------------------------------------------------------------
      00|  |    |  |  |  |  |  |  |            | (что значит 00 тут я не знаю - предполагаю что на длину отведено 2 байта)
------------------------------------------------------------------------------------------------------------------------------
        |04|	|  |  |  |  |  |  |            | Длинна curcuit-id, 4 байта
------------------------------------------------------------------------------------------------------------------------------
           |0065|  |  |  |  |  |  |            | Номер VLAN (в hex) (первые 2 байта из 4 байт curcuit-id), 
                |  |  |  |  |  |  |            | тут влан 101 (десятичный)
------------------------------------------------------------------------------------------------------------------------------
                |01|  |  |  |  |  |            | Номер модуля, причем даже в коммутаторах без модулей 
                |  |  |  |  |  |  |            |(например для Po1 модуль будет 3 а номер порта - 1 )
------------------------------------------------------------------------------------------------------------------------------
                   |18|	 |  |  |  |            | Номер порта коммутатора, к которому подключен клиент 
                      |  |  |  |  |            | (счёт начинается с 0 или 1 зависит от коммутатора), 0x18 в HEX это 24 
                      |  |  |  |  |            | в десятичном счислении, у меня счет шел с 0 и порт Gi 1/23
------------------------------------------------------------------------------------------------------------------------------
                      |02|  |  |  |            | Начало второй секции 
------------------------------------------------------------------------------------------------------------------------------
                         |08|  |  |            | Длинна второй секции ( 8 байт-> 00 06 7c ad 74 00 21 40)
------------------------------------------------------------------------------------------------------------------------------
                            |00|  |            | (что значит 00 тут я не знаю - предполагаю что на длину отведено 2 байта)
------------------------------------------------------------------------------------------------------------------------------
                               |06|            |	Длинна remote-id, 6 байт
------------------------------------------------------------------------------------------------------------------------------
                                  |7cad74002140|	MAC-адрес коммутатора, к которому подключен клиент
  • В поле remote-id в целом вендоры могут пихать что угодно (особенно удобно строки что бы при замене коммутатора не менялся remote-id но так как это умеют не все, а мак-адрес - все, то пока ориентируюсь только на мак адрес)

Cisco Static Adresses

тут конечно какой-то очередной треш

  • Если хочется сделать адрес статическим и только то нужно делать так
ip dhcp relay information trust-all
ip dhcp excluded-address 100.64.1.1
ip dhcp excluded-address 100.64.255.254
!
ip dhcp pool 100.64.1.3_static
 host 100.64.1.3 255.255.0.0
 hardware-address b827.eb24.8df2
 dns-server 172.31.100.1 172.31.100.5
 default-router 100.64.255.254
 lease 0 0 2
  • host 100.64.1.3 255.255.0.0 если тут маска не совпадает с тем что на интерфейсе то работать не будет (а как сделать что бы работало - никто не знает)