AlKov Опубликовано 31 января, 2010 · Жалоба Есть сеть, поделенная на два сегмента двумя роутерами которые в свою очередь "смотрят" в третий роутер (в "главный", так сказать). На этом роутере поднят dhcp, который раздает IP юзерам (статика, привязанная к МАС-у). Приблизительно такая схема: (юзеры сегм. 1) 10.0.0.0/21------роутер №1------10.1.0.1/24------ |-------10.1.0.254/24-----роутер №3 + dhcp (юзеры сегм. 2) 10.0.8.0/21------роутер №2------10.1.0.2/24------ Есть "служебный ноут", предназначенный для "прописывания" новых МАС-ов (читай - юзеров), которому от dhcp выдаётся стат. "служебный IP". На роутерах №1 и №2 для этой цели подняты сабинтерфейсы со стороны юзеров с IP тех самых "служебных" подсетей, ну например, 172.16.0.0/28 и 172.16.0.16/28 соответственно. Задача - как выдать "правильный" IP от dhcp служебному ноуту, в зависимости от того, за каким роутером (№1, или №2) он находится?? P.S. Роутеры №1 и №2 - DOCSIS CMTS, роутер №3 - PC с Linux Fedora 6 на борту, ISC dhcp v3.1.0. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Nic Опубликовано 31 января, 2010 · Жалоба Ну так роутеры 1 и 2 по любому работают как dhcp релей, следовательно, как минимум свой ip в пакет вставляют. Так что остается только нужный класс в конфиге дхцп прописать... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 1 февраля, 2010 (изменено) · Жалоба Ну так роутеры 1 и 2 по любому работают как dhcp релей, следовательно, как минимум свой ip в пакет вставляют. Так что остается только нужный класс в конфиге дхцп прописать...Эмм.. А примерчиком не поделитесь, или ссылкой на описание подобного решения? Не приходилось еще с классами работать..Как бы вроде оно самое, но.. Не могу никак сообразить, как "прикрутить" выдраные данные (то, что требуется есть - IP роутера и МАС клиента) к секции host? Хотелось бы выдавать один конкретный статический IP для конкретного МАС-а, а в примерах с классами везде pool.. Или dhcp сам разберется, из какой секции host вытягивать IP? Вот вроде все есть.. Lease for 10.0.128.24 Router IP: 10.0.128.1 MAC of subscriber: 0:1e:8c:13:17:91 Lease for 10.0.152.24 Router IP: 10.0.152.1 MAC of subscriber: 0:1e:8c:13:17:91 Как бы сиё теперь оформить в dhcpd.conf, чтобы в зависимости от Router IP "срабатывал" конкретный host host user001e8c131791_a { hardware ethernet 00:1E:8C:13:17:91; next-server XX.XX.XX.XX; fixed-address 10.0.128.24; option subnet-mask 255.255.252.0; } host user001e8c131791_b { hardware ethernet 00:1E:8C:13:17:91; next-server XX.XX.XX.XX; fixed-address 10.0.152.24; option subnet-mask 255.255.252.0; } Изменено 1 февраля, 2010 пользователем AlKov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Nic Опубликовано 1 февраля, 2010 (изменено) · Жалоба Кста, если верить доке, то все тривиально - делаете 2 ip адреса в декларации хоста, из разных подсетей. Далее сервер должен, в зависимости от подсети релея, сам выбрать нужный ип. Т.е. так: host user001e8c131791_b { hardware ethernet 00:1E:8C:13:17:91; next-server XX.XX.XX.XX; fixed-address 10.0.152.24; fixed-address 10.0.128.24; option subnet-mask 255.255.252.0; } Ежели не прокатит, тогда class userXXX_1 { match if (binary-to-ascii (16, 8, ":", substring( hardware, 1, 6)) = "0:13:11:d8:1e:aa" and #MAC ноута binary-to-ascii (10, 8, ".", packet( 24, 4)) = "111.112.113.1"); #ip релея. такую конструкцию не проверял, но должно прокатить. } class userXXX_2 { match if (binary-to-ascii (16, 8, ":", substring( hardware, 1, 6)) = "0:13:11:d8:1e:aa" and #MAC ноута binary-to-ascii (10, 8, ".", packet( 24, 4)) = "111.112.114.1"); #ip релея. такую конструкцию не проверял, но должно прокатить. } #остальной конфиг shared-network super-mega-ip-net{ subnet 111.112.113.1 netmask 255.255.255.0{ pool { range 111.112.113.10; allow members of userXXX_1; } pool { #остальные хомячки; } } subnet 111.112.114.1 netmask 255.255.255.0{ pool { range 111.112.114.10; allow members of userXXX_1; } pool { #остальные хомячки; } } } Изменено 1 февраля, 2010 пользователем Nic Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 2 февраля, 2010 · Жалоба Кста, если верить доке, то все тривиально - делаете 2 ip адреса в декларации хоста, из разных подсетей. Далее сервер должен, в зависимости от подсети релея, сам выбрать нужный ип.Т.е. так: host user001e8c131791_b { hardware ethernet 00:1E:8C:13:17:91; next-server XX.XX.XX.XX; fixed-address 10.0.152.24; fixed-address 10.0.128.24; option subnet-mask 255.255.252.0; } Т.е. Вы хотите сказать, что можно не заморачиваться с классами, а просто сделать два объявления соотв. сабнетов, а dhcp уже сам разберется по ответу от релея?Ежели не прокатит, тогда class userXXX_1 { match if (binary-to-ascii (16, 8, ":", substring( hardware, 1, 6)) = "0:13:11:d8:1e:aa" and #MAC ноута binary-to-ascii (10, 8, ".", packet( 24, 4)) = "111.112.113.1"); #ip релея. такую конструкцию не проверял, но должно прокатить. } class userXXX_2 { match if (binary-to-ascii (16, 8, ":", substring( hardware, 1, 6)) = "0:13:11:d8:1e:aa" and #MAC ноута binary-to-ascii (10, 8, ".", packet( 24, 4)) = "111.112.114.1"); #ip релея. такую конструкцию не проверял, но должно прокатить. } #остальной конфиг shared-network super-mega-ip-net{ subnet 111.112.113.1 netmask 255.255.255.0{ pool { range 111.112.113.10; allow members of userXXX_1; } pool { #остальные хомячки; } } subnet 111.112.114.1 netmask 255.255.255.0{ pool { range 111.112.114.10; allow members of userXXX_1; } pool { #остальные хомячки; } } } А здесь объявление пула обязательно? Ведь по большому счету это будет один IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 2 февраля, 2010 · Жалоба Кста, если верить доке, то все тривиально - делаете 2 ip адреса в декларации хоста, из разных подсетей. Далее сервер должен, в зависимости от подсети релея, сам выбрать нужный ип.Т.е. так: host user001e8c131791_b { hardware ethernet 00:1E:8C:13:17:91; next-server XX.XX.XX.XX; fixed-address 10.0.152.24; fixed-address 10.0.128.24; option subnet-mask 255.255.252.0; } Не катит.. :( В лог матюгает вот так Feb 2 15:32:44 router dhcpd: /etc/dhcpd/other.conf line 29: Only one fixed address declaration per host. Feb 2 15:32:44 router dhcpd: fixed-address 10.0.128.24; Feb 2 15:32:44 router dhcpd: ^ Feb 2 15:32:44 router dhcpd: /etc/dhcpd.conf line 805: /etc/dhcpd/other.conf: bad parse. Feb 2 15:32:44 router dhcpd: include "/etc/dhcpd/other.conf" Feb 2 15:32:44 router dhcpd: ^ Feb 2 15:32:44 router dhcpd: Configuration file errors encountered -- exiting Это если два IP прописаны. По одному все в норме. Может это как-то по-другому объявляется, типа два объявления host?? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zlobar Опубликовано 2 февраля, 2010 · Жалоба Может это как-то по-другому объявляется, типа два объявления host?? Именно! host aaa { hardware ethernet 00:1d:60:95:e6:55; fixed-address 10.110.45.102; } host bbb { hardware ethernet 00:1d:60:95:e6:55; fixed-address 10.110.40.30; } IP из сетей на разных интерфейсах. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 2 февраля, 2010 · Жалоба Может это как-то по-другому объявляется, типа два объявления host?? Именно! host aaa { hardware ethernet 00:1d:60:95:e6:55; fixed-address 10.110.45.102; } host bbb { hardware ethernet 00:1d:60:95:e6:55; fixed-address 10.110.40.30; } IP из сетей на разных интерфейсах. Подтверждаю, давно такое есть - работает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 2 февраля, 2010 (изменено) · Жалоба Подтверждаю, давно такое есть - работает. А вот такое не пробовали? host user001 { hardware ethernet 00:11:7F:02:1B:66; next-server XX.XX.XX.XX; fixed-address 10.0.128.24,10.0.152.24; } Однако тоже работает! :) Вычитал на opennet (man dhcpd). Параметр fixed-address fixed-address адрес [, адрес ... ]; Параметр fixed-address используется для назначения одного или нескольких постоянных адресов клиенту. Параметр может присутствовать только в секции host. Если указано более одного адреса, то клиенту будет присвоен адрес соответствующий подсети к которой подключен клиент в данный момент. Если нет адресов соответствующих подсети в которую включен клиент, то считается что этот клиент не соответствует объявлению host и эти адреса ему не присваиваются. Каждый адрес может быть IP адресом или доменным именем, которое резолвится в один или несколько IP адресов. Вот только немного смущает момент с масками.. У меня в одной подсети маска /21, а в другой /29 и для "обычного" юзера в каждой секции host я добавляю option subnet-mask XXX.XXX.XXX.XXX; Там у всех маска одинакова. А здесь как быть? Либо все же логичнее сделать два объявления host, или (судя по ману), dhcpd сам разберется с масками и "отдаст" клиенту нужную? Изменено 2 февраля, 2010 пользователем AlKov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Nic Опубликовано 2 февраля, 2010 · Жалоба Предлагаю попробовать оба варианта и рассказать, что получилось. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...