Собрав лабораторный стенд для Cisco ISG из виртуальных машин и эмуляторов, возникла необходимость добавлять option82 в dhcp-запросы клиента. Чтобы не связываться с реальным оборудованием, которое может это делать, было решено найти dhcp-клиент, умеющий самостоятельно добавлять option82 в сообщения Discover и Request.
С этой задаче может справиться ISC dhcp client, однако начиная с версии 3.0.7 выпилена возможность отправки произвольных опций, поэтому придётся воспользоваться версией 3.0.6, возраст которой на момент написания этой заметки почти 7 лет.
Для того, чтобы собрать это ПО в современном дистрибутиве Linux (у меня под рукой оказалась Fedora 20) придётся наложить (тривиальный) патч на скрипт configure, поскольку в 2007 году никто не ожидал, что ядро внезапно перейдёт на новую систему нумерации.
Сборка и “установка” dhclient:
cd /usr/local/src mkdir dhcp; cd dhcp wget http://ftp.isc.org/isc/dhcp/dhcp-3.0-history/dhcp-3.0.6.tar.gz tar -zxf dhcp-3.0.6.tar.gz ; cd dhcp-3.0.6 #скачиваем патч из вложения и размещаем в /usr/local/src/dhcp/dhcp-3.0.6 patch -p1 < dhcp-3-0-6-configure.key ./configure make ln -s /usr/local/src/dhcp/dhcp-3.0.6/work.linux-2.2/client/dhclient /usr/sbin/dhclient3.0.6 mkdir /var/state ; mkdir /var/state/dhcp
Конфиг клиента:
# cat /etc/dhcp/dhclient.conf send dhcp-client-identifier = hardware; option space opt82; option opt82.circuit-id code 1 = text; option opt82.remote-id code 2 = text; option opt82-encapsulation code 82 = encapsulate opt82; send opt82.circuit-id "port1"; send opt82.remote-id "switch1";
Запуск: dhclient3.0.6 -cf /etc/dhcp/dhclient.conf ens35.100 (где ens35.100 – интерфейс на котором должен быть запущен dhcp-клиент)
tcpdump:
21:09:26.003342 IP (tos 0x10, ttl 16, id 0, offset 0, flags [none], proto UDP (17), length 328) 0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from 00:0c:29:ae:06:1e, length 300, xid 0xa4189939, Flags [none] (0x0000) Client-Ethernet-Address 00:0c:29:ae:06:1e Vendor-rfc1048 Extensions Magic Cookie 0x63825363 DHCP-Message Option 53, length 1: Discover Parameter-Request Option 55, length 7: Subnet-Mask, BR, Time-Zone, Default-Gateway Domain-Name, Domain-Name-Server, Hostname Client-ID Option 61, length 7: ether 00:0c:29:ae:06:1e Agent-Information Option 82, length 16: Circuit-ID SubOption 1, length 5: port1 Remote-ID SubOption 2, length 7: switch1 END Option 255, length 0 PAD Option 0, length 0, occurs 20
Сессия на bras:
B1#show subscriber session ... Uniq ID Interface State Service Up-time TC Ct. Identifier 280 DHCPv4 authen Lterm 00:00:28 0 port1-switch1 ...
Патч для configure: dhcp-3.0.6-configure
Исходники dhclient: dhcp-3.0.6.tar.gz
А в каких виртуальных машинах или эмуляторах может жить Cisco ISG?
Я поднимал ISG в режиме IPoE l2-subscriber на CSR1000V на ESXi 5.5. Список поддерживаемых гипервизоров есть здесь http://www.cisco.com/c/en/us/td/docs/routers/csr1000/software/configuration/csr1000Vswcfg/installov.html#pgfId-1150153