Отправка DHCP Option82 из Linux клиента

Собрав лабораторный стенд для 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

 

Advertisements

2 thoughts on “Отправка DHCP Option82 из Linux клиента

  1. e1t1

    А в каких виртуальных машинах или эмуляторах может жить Cisco ISG?

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s