Cisco DHCP

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

По большой нужде (например если нет сервера или нет питания и сервер выключен) можно попробовать использовать 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|020800067cad74002140
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|  |
                |  |18|	Номер порта коммутатора, к которому подключен клиент (счёт начинается с 0 или 1 зависит от коммутатора), 0x18 в HEX это 24 в десятичном счислении, у меня счет шел с 0 и порт Gi 1/23
                0208	Начало второй секции, 8 байт
                    0006	Поле remote-id, 6 байт

7cad74002140 MAC-адрес коммутатора, к которому подключен клиент

Cisco Static Adresses