В общем, отвечаю себе сам.
У меня получилось разобраться, как работает циска со вбитой командой ip dhcp database tftp://192.168.3.3/dhcp.databaseНе знаю, что я делал не так, но после перезапуска DHCP-сервера (Switch(config)#no service dhcp; service dhcp), циска читает базу данных из файла. Но формат, как для команды origin уже не подходит. Фишка в том, что коммутатор 3560 работает с версией файла 1, а для маршрутизатора я использовал версию 2. Это я понял, когда внимательнее посмотрел файл, который коммутатор сам создаёт, когда у него появляются новые динамические привязки.
В общем, залить базу привязок в циску удалось в таком формате:
*time* Dec 18 2009 11:52 AM
*version* 2
!IP address Type Hardware address Lease expiration
192.168.3.3 1 0018.7178.cc16 Infinite pdc
192.168.3.4 1 0016.e04c.17c0 Infinite switch-root
192.168.3.6 1 00:05:1a:6b:46:18 Infinite switch-234
192.168.3.7 1 00:05:1a:47:de:f8 Infinite switch-kc
192.168.3.8 1 00:06:ac:50:d4:78 Infinite switch-232
#192.168.3.11 1 00:0f:cb:f7:d9:00 Infinite switch-300
#192.168.3.13 1 00:e0:d8:12:c7:ef Infinite UPSPW
192.168.3.12 id 01:00:22:15:02:9a:57 Infinite 1
192.168.3.14 id 01:00:1a:80:64:3f:24 Infinite 1
192.168.3.15 id 01:00:1e:8c:27:03:6c Infinite 1
*end*
Может быть стоило поменять *version* на 1. Но у меня залилось в таком виде. При этом заметьте, mac-адрес может быть в любом стандартном формате, а после слова Infinite обязательно должно что-то быть, иначе строчка, например,
192.168.3.17 id 01:00:07:e9:0a:50:27 Infinite
не читается с ошибкой "cannot read month"
Закомментированные строчки не читаются. Маску сети нужно обязательно убрать, то есть строка
192.168.3.18 /24 id 01:00:18:f3:bc:e4:0a Infinite
не прочитается.
Также не читаются строчки с пропущенными нулями в мак-адресе, например:
192.168.3.23 id 01:0:1a:92:07:47:34 Infinite
(маршрутизатор с командой origin такие строчки понимает)
Type 1 значит hardware address, id значит client-identifier.
Хранить файл можно как на файл-сервере, так и на флэшке самой циски.
Switch(config)#ip dhcp database flash:dhcp.database
После того как циска успешно засосала подложенный мной файл со статическими привязками, она сама после каждого изменения в базе данных перезаписывает файл в этом же месте.
Вот кратко, что у неё получается:
*time* Dec 18 2009 04:42 PM
*version* 1
!IP address Type Hardware address Lease expiration
192.168.3.23 id 0100.1a92.0747.34 Dec 18 2010 03:39 PM
192.168.3.43 id 0100.15f2.dd03.6b Dec 18 2010 03:37 PM
192.168.3.47 id 0100.1bfc.7303.6c Dec 18 2010 03:37 PM
192.168.3.68 id 0100.18f3.bfb0.38 Dec 18 2010 03:50 PM
192.168.3.145 id 0100.1e8c.e049.f9 Dec 18 2010 04:03 PM
192.168.3.223 id 0100.1c23.a266.36 Dec 18 2010 03:51 PM
192.168.7.3 id 0100.1c23.a266.36 Dec 19 2009 01:59 PM
!IP address Interface-index Lease expiration Server IP address Vrf
*end*
Lease expiration декабрь следующего года, потому что в пуле стоит lease 365. То есть те Infinite, которые циска изначально скачала, ей до лампочки. Но к счастью на прочитанный мак-адрес она обращает внимание. Если команду lease в пуле не вбивать, то lease expiration будет через сутки. Поэтому я попробую сделать write-delay 4294967295, что эквивалентно 136 годам :). И пусть циска только читает, но не пишет в базу данных.