Добрый день!
Сразу :
-оговорим исходные условия - про Cisco ISG или SE100 говорить не будем...
-прошу извинить за много букв...
Итак :
После N-ного прочтения доки, форума, вики по теме - "Выдача ип клиентам по схеме Option 82 + dhcp relay" пришёл к выводу что почти у 149%
интересующихся этим вопросом топология сети организована каноничным способом:
1.Уровень доступа : домовые свичи, встявляющие в клиентские пакеты dhcp-discover или dhcp-request свои поля remote-id и circuid-id, (причём в 417%
случаев судьбоносный параметр в circuid-id - номер порта.) Модифицированные пакетики уплывают в сторону ядра броадкастом ( аля D-link dhcp local relay )
2. Уровень агрегации - свитч 3 уровня, являющийся для всех клиентов шлюзом по умолчанию. На нём работает DHCP-relay на 3-ем (!) уровне. Dhcp request-ы
и DHCP-discover-ы перехватываются и юникастом шлются в сторону DHCP-сервера ( BGInetAccess ) - на DHCP - сервере есть обратный маршрут в сторону клиентов...
3.Ядро - INET- шлюз типа manad, microtik API , SSH (telnet ) service Activator, нат, шейпинг, нетфлоу на бордере..., отделённые от клиентов девайсом из пункта 2
Всему этому хозяйству соответствует такое дерево устройств в INET:
Код:
A+A
-Netflow-source
--Inet Gateway
---DHCP-relay 3-level
----Home switch (opt82 ) 1
----Home switch (opt82 ) 2
----Home switch (opt82 ) 3
----Home switch (opt82 ) 4
При статической привязке ипов клиентам на сервис клиента вешается интерфейс домового свитча ( порт ) , ип и выбирается устройство "Home switch (opt82 ) n"
Параметры сервиса поднимаются снизу вверх до A+A , настройки наоборот - сверху вниз. Всё классно, канонично , всё работает и все довольны.
Но! Как быть если топология не канонична ?
Т.е. :
1. Схема vlan на юзера.
2. На доступе - зоопарк свитчей, которые умеют тока vlan в порт и не более...
3. На агрегации - свитч 2-го уровня( правда бальшой-бальшой ) в который со всех районов стягиваются vlan с vlan-id от 1000 до 4000 (например в порты с 1-го по
24-ый) хаотично .
4. На этом-же свитче есть 2 порта ( например 25-ый и 26-ой ).
25-ый порт развиланен на 1000-4000-ые вланы. В нем торчит INET-шлюз типа Mikrotik, развиланеный на эти 3000
вланов и сооружённый либо по схеме ip-unnumbered ,либо на каждом vlan - интервейсе прописаны ип из сетки /29.
26-порт развиланен на эти же 3000- вланов + один влан (например с vlan-id =2)
в котором живёт DHCP-server (с ипом например 192.168.222.254). В этот порт включён какой-нить слабенький свитчок ( трафик клиентов через него всё равно не ходит ) (например типа des-3200-10)
всего одним портом(!) ( например 1-ым ) и вот с таким вот конфигом :
Код:
config vlan default delete 1
create vlan 2 tag 2
config vlan 2 add tagged 1
create vlan vlanid 1000-4000
config vlan vlanid 1000-4000 add tagged 1
config ipif System vlan 2 ipaddress 192.168.222.250/24 state enable
disable dhcp_local_relay
config dhcp_relay option_82 remote_id user_define "192.168.222.250"
config dhcp_relay add vlanid 1000-4000 192.168.222.254
enable dhcp_relay
DHCP-сервер живёт во 2-ом влане с ипом 192.168.222.254, на нём крутится isc-dhcpd примерно вот с таким-вот конфигом :
Код:
...........
...........
authoritative;
local-address 192.168.222.254;
................
................
class "192_168_222_250_1000"
{match if binary-to-ascii(10, 16, "", substring( option agent.circuit-id, 2, 2)) = "1000" and binary-to-ascii(10, 8, ".", packet(24, 4)) = "192.168.222.250";}
class "192_168_222_250_1001"
{match if binary-to-ascii(10, 16, "", substring( option agent.circuit-id, 2, 2)) = "1001" and binary-to-ascii(10, 8, ".", packet(24, 4)) = "192.168.222.250";}
...............
...............
shared-network "ipoe" {
subnet 172.18.150.0 netmask 255.255.255.248 {
option routers 172.18.150.1;
option domain-name-servers 192.168.222.1, 8.8.8.8;
option broadcast-address 172.18.150.7;
option subnet-mask 255.255.255.248;
pool {range 172.18.150.2 172.18.150.6; allow members of "192_168_222_250_1000"; }}
subnet 172.18.150.8 netmask 255.255.255.248 {
option routers 172.18.150.9;
option domain-name-servers 192.168.222.1, 8.8.8.8;
option broadcast-address 172.18.150.15;
option subnet-mask 255.255.255.248;
pool {range 172.18.150.10 172.18.150.14; allow members of "192_168_222_250_1001"; }}
.................
.................
subnet 192.168.222.0 netmask 255.255.255.0 { }
}
isc-dhcpd выплёскивает в влан юзера целую сетку /29 с привязкой по влану, не имеет маршрутов на ип-сетку юзеров ( и не надо ).
БЖБ ничего не знает о этом DHCP-сервере, в дереве устройств INET только A+A, netfow-source и Inet Gateway. Всё это хозяйсто работает как как часы уже не первый год.
Но вот захотелось уйти от isc-dhcp и выдавать ип клиентам с помощью BGInetAccess с привязкой сразу сетки /29 на влан. Внутри этой сетки /29- выдача ип юзеру
произвольным способом..
Если я правильно понял то мне надо :
1. Создать 3000 ип-ресурсов от id=1 до id=3000
и заполнить их записями вида :
Код:
ip.resource.category=1:
ip range : 172.18.150.2 - 172.18.150.6
gate : 172.18.150.1
mask: 255.255.255.248
DNS: 192.168.222.1
ip.resource.category=2:
ip range : 172.18.150.10 - 172.18.150.14
gate : 172.18.150.9
mask: 255.255.255.248
DNS: 192.168.222.1
и т.д. до ip.resource.category=3000
2. Создать 3000 vlan-ресурсов от id=1 до id=3000
и заполнить их записями вида :
vlan.resource.category=1:
vlan range: 1000-1000
vlan.resource.category=2:
vlan range: 1001-1001
и т.д. до vlan.resource.category=3000
3. Создать виртуальное устройство типа
http://www.bgbilling.ru/v6.0/doc/ch18s13s04s01.html с именем "user vlan"
4. Заполнить дерево устройств INET по типу:
Код:
A+A
-Netflow-source
--Inet Gateway (mikrotik SA типа API)
---user vlan (opt82 ) 1000
---user vlan (opt82 ) 1001
---user vlan (opt82 ) 1002
..........
..........
---user vlan (opt82 ) 3000
и в конфиге каждого устройства прописать директивы типа :
Код:
ip.resource.category=1
vlan.resource.category=1
ip.resource.category=2
vlan.resource.category=2
................
ip.resource.category=3000
vlan.resource.category=3000
Т.е.создать 3000 устройств !?
Посему прошу ответить :
1. Либо я чота не понимаю в идеологии модуля INET и эту топологию можно представить в дереве устройств более просто и компактно ?
2. Либо действительно придётся генерить такого монстра в дереве устройств ?