flash.one Опубликовано 1 июня, 2010 · Жалоба Суть проблемы: Клиент не получает IP в пользовательском влане по Option82 (Просьба не посылать подальше, а помочь разобраться, было бы неплохо услышать тех кто пользуется оборудованием zyxel у себя в сетях)+(для сведения в управляемом влане айпишка отдается без проблем) Имеется MES3528+GS4012F->DHCP сервер(ISC) На свичах прописано два влана: 1800 - влан управления 10 - пользователький влан. DHCP-сервер находится в влане 1800. Насколько я понимаю, то option и information должен вставлять только MES3528, а GS4012 - только должен релеем передать этот запрос на сервер. Упрощенно конфиги коммутаторов: MES3528:(Клиент включается в 24 порт, uplink-порт25) ; Product Name = MES-3528 ; Firmware Version = V3.90(BHR.2) | 08/25/2009 ; SysConf Engine Version = 1.2 vlan 10 name test normal 26 fixed 24-25 forbidden 1-23,27-28 untagged 1-24,27-28 exit vlan 1800 name MGMT normal "" fixed 1-23,25-28 forbidden 24 untagged 1-24,26-28 ip address default-management 10.7.1.33 255.255.255.0 ip address default-gateway 10.7.1.1 exit interface port-channel 24 pvid 10 exit interface port-channel 25 dhcp snooping trust arp inspection trust exit dhcp snooping dhcp snooping vlan 10 dhcp snooping vlan 10 option dhcp snooping vlan 10 information dhcp dhcp-vlan 1800 arp inspection vlan 10 arp inspection Конфиг GS4012F(11 порт - downlink,12 порт - DHCP Server): ; Product Name = GS-4012F ; Firmware Version = V3.80(TS.4) | 10/07/2008 ; SysConf Engine Version = 1.1 vlan 10 name test normal "" fixed 11 forbidden 1-10,12 untagged 1-10,12 exit vlan 1800 name MGMT normal "" fixed 11-12 forbidden 1-10 untagged 1-10,12 ip address 10.7.1.35 255.255.255.0 ip address default-gateway 10.7.1.1 exit interface port-channel 12 pvid 1800 exit interface route-domain 10.7.1.35/24 exit ip address 192.168.0.1 255.255.255.0 dhcp smart-relay dhcp smart-relay helper-address 10.7.1.107 Конфиг dhcp-сервера: ddns-update-style none; default-lease-time 86400; max-lease-time 86460; authoritative; log-facility local7; local-address 10.7.1.107; ###Клиентский айпишник: subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name-servers 192.168.1.1; class "test_port24" { match if (binary-to-ascii (10, 8, "", substring( option agent.circuit-id, 1, 1))="24" and substring( option agent.circuit-id, 3, 3)="10" and substring( option agent.circuit-id, 4, 32)="test"); } #### Адрес для 24-го порта: pool { range 192.168.1.10; allow members of "test_port24"; } } ###Выдача ай-пи адресов в управляемом влане: subnet 10.7.1.0 netmask 255.255.255.0 { option routers 10.7.1.1; option domain-name-servers 10.7.1.1; class "test_port26" { match if (binary-to-ascii (10, 8, "", substring( option agent.circuit-id, 1, 1))="26" and substring( option agent.circuit-id, 4, 32)="test"); } #### Адрес для 26го порта: pool { range 10.7.1.100; allow members of "test_port26"; } } При попытке клиента получить ip в клиентском влане(10) сервер пишет: May 19 11:12:41 test2 dhcpd: DHCPDISCOVER from 00:26:18:95:c3:da via eth0: network 10.7.1/24: no free leases May 19 11:12:41 test2 dhcpd: DHCPDISCOVER from 00:26:18:95:c3:da via eth0: network 10.7.1/24: no free leases May 19 11:12:41 test2 dhcpd: DHCPDISCOVER from 00:26:18:95:c3:da via 10.7.1.35: network 10.7.1/24: no free leases Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Tsvetkov Опубликовано 1 июня, 2010 (изменено) · Жалоба Тестировал на es2108 с последней прошивкой с сайта. Как не настраивал его не смог добиться добавления полей в пакет. Смотрел wireshark-ом еще не увидел на 25 порте vlan-trunking Изменено 1 июня, 2010 пользователем Tsvetkov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 1 июня, 2010 (изменено) · Жалоба vlan-trunking там нету, так как оба влана прописаны статически. Изменено 1 июня, 2010 пользователем flash.one Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 1 июня, 2010 · Жалоба flash.one Релеем должен работать MES3528, GS4012F должен пропускать DHCP прозрачно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
white_crow Опубликовано 1 июня, 2010 (изменено) · Жалоба У меня сеть на Zyxel XGS4728F , GS4012F, ES3124, MES3528 - в обязательном порядке юзаю опцию 82 и схему VLAN на дом (хотя в данном случае это пофиг). Все работает. Смогу описать логику работы и конфиги только в конце июня. Ща в отпуске и на сесии в другом городе, нет времени...соррии Изменено 1 июня, 2010 пользователем white_crow Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 3 июня, 2010 · Жалоба flash.one Релеем должен работать MES3528, GS4012F должен пропускать DHCP прозрачно. Не хочет оно так работать. DHCP-сервер находится в другом влане, нежели клиент. Если релеем работает MES3528 - то до сервера вообще ничего не доходит. Но если релеем работает GS4012 - то запрос попадает на сервер, но сервер пишет, что no free leases. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivantey Опубликовано 3 июня, 2010 · Жалоба Ну так а с коммутатора у вас dhcp сервер пингуется. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 3 июня, 2010 (изменено) · Жалоба Ну так а с коммутатора у вас dhcp сервер пингуется.Естественно. Я ж говорю, что если порт клиента включить во влан в котором стоит сервер - все отлично отрабатывается. Но если порт в клиентском влане, то почему-то не работает.Если релеем работает MES3528 - то до сервера вообще ничего не доходит.Здесь ошибся, запросы все таки есть, но опять же ответ: no free leases. Изменено 3 июня, 2010 пользователем flash.one Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 3 июня, 2010 · Жалоба Здесь ошибся, запросы все таки есть, но опять же ответ: no free leases.Значит неправильно настроен сервер. Попробуйте сети в shared-network объявить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
flash.one Опубликовано 3 июня, 2010 · Жалоба Значит неправильно настроен сервер. Попробуйте сети в shared-network объявить.я так и думал что косяк в самом сервере. После обьявления сетей в shared-network все заработало. Огромное спасибо!Может есть ещё какие-то нюансы? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivantey Опубликовано 3 июня, 2010 (изменено) · Жалоба #/etc/dhcpd.conf local-address 10.7.1.107; lease-file-name "/var/lib/dhcp3/dhcpd.leases"; one-lease-per-client true; ddns-update-style none; default-lease-time 172800; max-lease-time 172800; authoritative; #authoritative; log-facility local5; if exists agent.circuit-id { log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ", binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)), " (add 1 to port number!), VLAN ", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ", binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6)) ,"IP" ,binary-to-ascii(10, 8, ".", packet(24, 4)) )); log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " raw option-82 info is CID: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " AID: ", binary-to-ascii(16, 8, ".", option agent.remote-id))); } option classes-static-route-ms code 249 = array of unsigned integer 8; option classes-static-route code 121 = array of unsigned integer 8; option domain-name-servers 192.168.1.1, 10.7.1.1; include "/etc/dhcp3/dhcp_networks.conf"; #/etc/dhcp3/dhcp_networks.conf shared-network Test { subnet 10.7.1.0 netmask 255.255.255.0{} ###Клиентский айпишник: subnet 10.20.114.0 netmask 255.255.255.0 { option routers 10.20.114.1; option subnet-mask 255.255.255.0; option broadcast-address 10.20.114.255; option classes-static-route-ms 8,10,10,20,114,1,16,192,168,10,20,114,1; option classes-static-route 8,10,10,20,114,1,16,192,168,10,20,114,1; include "/etc/dhcp3/10_7_1_33.conf"; } #/etc/dhcp3/10_7_1_33.conf # class "24@10_7_1_33" {match if option agent.remote-id = 0:6:00:22:B0:50:9B:83 and option agent.circuit-id = 0:4:00:0A:0:18;} pool {range 10.20.114.49; allow members of "24@10_7_1_33";} pool {range 10.20.114.50; allow members of "24@10_7_1_33";} Опоздал :) Изменено 3 июня, 2010 пользователем Ivantey Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 8 декабря, 2010 · Жалоба Привет. Так, прочитал ветку, сделал всё, теперь буксую два часа уже. Демон поднят на 10.0.0.1. Свич 4728 (прозрачно для dhcp) - 10.0.0.10. Клиентский 3528 - 10.0.0.102. Оба свича в vlan1 вместе с сервером. Влан 1002 поднята на обоих свичах, терминится на 4728 с айпи 10.0.0.129. В этой влан сидят dhcp-клиенты. Сетки Servers (10.0.0.0/25) и Clients (тестовая vlan1002 - 10.0.0.128.25). dhcpd.conf: local-address 10.0.0.1; lease-file-name "/var/db/dhcpd.leases"; one-lease-per-client true; ddns-update-style none; default-lease-time 172800; max-lease-time 172800; authoritative; log-facility local3; if exists agent.circuit-id { log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ", binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)), " (add 1 to port number!), VLAN ", binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ", binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6)), "IP" ,binary-to-ascii(10, 8, ".", packet(24, 4)) )); log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " raw option-82 info is CID: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " AID: ", binary-to-ascii(16, 8, ".", option agent.remote-id))); } option domain-name-servers 10.0.1.1; shared-network Servers { subnet 10.0.0.0 netmask 255.255.255.128 {} option routers 10.0.0.10; } shared-network Clients { class "vlan1002" {match if ( substring( option agent.circuit-id, 3, 3)="1002"); } subnet 10.0.0.128 netmask 255.255.255.128 { option routers 10.0.0.129; option subnet-mask 255.255.255.128; option broadcast-address 10.0.0.255; pool {range 10.0.0.150 10.0.0.170; allow members of "vlan1002";} } } А теперь лог!!!! Dec 8 23:32:13 gw dhcpd: Dec 8 23:32:13 gw dhcpd: Listening on LPF/eth0/00:1b:78:7b:8f:d4/Servers Dec 8 23:32:13 gw dhcpd: Sending on LPF/eth0/00:1b:78:7b:8f:d4/Servers Dec 8 23:32:13 gw dhcpd: Sending on Socket/fallback/fallback-net Dec 8 23:32:22 gw dhcpd: DHCPDISCOVER from cc:08:e0:0a:ca:1d via 10.0.0.102: network Servers: no free leases То есть демон пытается выдать на запрос из сетки Clients адрес из сетки Servers! И, естественно, фейл. Где я накосячил? Пытался раскодить шаманские строки Ivantey на тему option classes-static-route-ms, но инфы по ним нигде не нашел. По запаху они не имеют прямого отношения к сабжу, но КАК сказать демону, в какой сети выдавать адреса? Спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Deac Опубликовано 8 декабря, 2010 · Жалоба shared-network Servers Вот эта то сетка как раз НЕ shared. Ну и посмотреть, приходит ли "1002" в нужной опции. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 8 декабря, 2010 (изменено) · Жалоба shared-network Servers Вот эта то сетка как раз НЕ shared. Ну и посмотреть, приходит ли "1002" в нужной опции. Когда я ставлю ее просто subnet, в логе отлуп, что не может дать адрес из 10.0.0.25. Те же яйцы.А как посмотреть, приходит ли 1002 в нужной опции? Класс вроде отлавливается. Или я ошибаюсь? Спасибо! Изменено 8 декабря, 2010 пользователем sillybilly Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivantey Опубликовано 8 декабря, 2010 · Жалоба shared-network Clients { class "vlan1002" {match if ( binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2))="1002");} subnet 10.0.0.128 netmask 255.255.255.128 { option routers 10.0.0.129; option subnet-mask 255.255.255.128; option broadcast-address 10.0.0.255; pool {range 10.0.0.150; allow members of "vlan1002";} pool {range 10.0.0.151; allow members of "vlan1002";} } } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 8 декабря, 2010 · Жалоба Ivantey, снаряды всё ближе, спасибо за binary-to-ascii. Однако пока не попадают. Мучаю далее! Вот что дает dhcpdump: --------------------------------------------------------------------------- TIME: 2010-12-09 01:22:13.516 IP: 10.0.0.10 (0:19:cb:93:1d:a7) > 10.0.0.1 (0:1b:78:7b:8f:d4) OP: 1 (BOOTPREQUEST) HTYPE: 1 (Ethernet) HLEN: 6 HOPS: 1 XID: 00000178 SECS: 42 FLAGS: 0 CIADDR: 0.0.0.0 YIADDR: 0.0.0.0 SIADDR: 0.0.0.0 GIADDR: 10.0.0.10 CHADDR: cc:08:e0:0a:ca:1d:00:00:00:00:00:00:00:00:00:00 SNAME: . FNAME: . OPTION: 53 ( 1) DHCP message type 1 (DHCPDISCOVER) OPTION: 55 ( 6) Parameter Request List 1 (Subnet mask) 3 (Routers) 6 (DNS server) 15 (Domainname) 119 (Domain Search) 252 (MSFT - WinSock Proxy Auto Detect) OPTION: 57 ( 2) Maximum DHCP message size 1500 OPTION: 61 ( 7) Client-identifier 01:cc:08:e0:0a:ca:1d OPTION: 51 ( 4) IP address leasetime 7776000 (12w6d) OPTION: 82 ( 14) Relay Agent Information Circuit-ID 00:1a:03:ea:53:77:2e:64:32:34:6b:31 --------------------------------------------------------------------------- Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 9 декабря, 2010 · Жалоба Совсем сломал голову. Запросы до демона доходят только тогда, когда на клиентском свиче (нахрена??) заводится mgmt-адрес, принадлежащий той вилане, в которую я релею dhcp. Это, идеологически, бред. Я бы хотел релеить ТОЛЬКО на терминирующем свиче (4728 в моем случае), ибо бродкасты с клиентских свичей до него ДОХОДЯТ, иначе б в нем не работал встроенный dhcp-сервер, а больше ничего для счастья не надо. Но, как ни пытаюсь я сконфигурить релей на 4728 (удалив релей на клиентском), ни одного запроса с него до демона не долетает. Это - неправильно! Пошел пинать инженеров зухеля. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Tsvetkov Опубликовано 9 декабря, 2010 (изменено) · Жалоба Пошел пинать инженеров зухеля. уже пинал на счет es2108 - сказали, что покраска 82 опцией будет работать только, когда пользователь в влане управления Изменено 9 декабря, 2010 пользователем Tsvetkov Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 9 декабря, 2010 · Жалоба Пошел пинать инженеров зухеля.уже пинал на счет es2108 - сказали, что покраска 82 опцией будет работать только, когда пользователь в влане управления Ага. Т.е. я не одинок в этой проблеме. О результатах доложу! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
motorhunter Опубликовано 9 декабря, 2010 (изменено) · Жалоба sillybilly У нас работает точно такая же схема, которую привели Вы. С той лишь разницей, что в ядре стоит Zyxel GS-4024, но это не принципиально, т.к. DHCP Relay поднят на абонентских MES-3528. При этом абонентские свитчи не имеют адреса в том VLANе, где находится DHCP-сервер. Вот краткий конфиг свитчей. GS-4024 VLAN 1: (192.168.1.1/24) (влан для маршрутизации трафика между L3-свитчами) VLAN 100: (10.10.0.1/24) (разные серверы, в т.ч. DHCP, имеющий адрес 10.10.0.4) MES-3528 VLAN 1: (192.168.1.21/24) (маршрутизирующий) VLAN 2006: (10.20.6.1/24) (абонентский) На MES-3528 настроен default gateway на 192.168.1.1, а также DHCP Snooping для VLAN 2006, где свитч выступает релеем для пересылки DHCP-запросов на адрес 10.10.0.4 (сначала делал глобальный DHCP-релей, тоже работает). На GS-4024 настроен маршрут на 10.20.6.0/24 через 192.168.1.21. Фрагмент конфига DHCP: class "vlan-2006" { match if binary-to-ascii(10,16,"",substring(option agent.circuit-id,2,2)) = "2006"; } subnet 10.20.6.0 netmask 255.255.255.0 { pool { range 10.20.6.10 10.20.6.254; allow members of "vlan-2006"; option routers 10.20.6.1; } } У Вас, возможно, не настроена маршрутизация между коммутаторами. MES должен видеть DHCP-сервер (проверяется пингом...) И еще меня смущает следующая строчка из Вашего конфига: class "vlan1002" {match if ( substring( option agent.circuit-id, 3, 3)="1002"); } Во-первых, коммутатор добавляет номер VLANа в hex-коде, и чтобы сравнивать с символами ("1002"), соответственно, надо сперва преобразовать в ascii (binary-to-ascii). Во-вторых, почему берете три символа? Согласно документации Zyxel, он добавляет в option 82 следующие поля: Slot ID (1 byte); Port ID (1 byte); VLAN ID (2 bytes); Information (up to 64 bytes). Поэтому правильней было бы Вам написать class "vlan1002" {match if binary-to-ascii(10,16,"",substring( option agent.circuit-id,2,2))="1002"; } Удачи :) Изменено 9 декабря, 2010 пользователем motorhunter Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 9 декабря, 2010 · Жалоба sillybilly так и есть, релей работает если в том вилане есть ip адрес. без ip адреса работает dhcp snooping - тогда к пакету просто добавляется опция 82 и он летит дальше (только на MES в BHR4 и ниже пакет и/или ответ еще летит и другим абонентам в том же вилане на том же свитче). dhcp-vlan перехватывает *все* dhcp пакеты на свитче и отправляет их в указанный влан, с опцией или без. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
motorhunter Опубликовано 9 декабря, 2010 · Жалоба sillybilly так и есть, релей работает если в том вилане есть ip адрес. Не обязательно, если настраивать в разделе Global (а не отдельно для каждого VLANа), то работает и без адреса. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalyb Опубликовано 9 декабря, 2010 · Жалоба motorhunter да, действительно, забыл о dhcp smart-relay но все виланы релеить не интересно :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 9 декабря, 2010 · Жалоба motorhunter, я это всё перепробовал 33 раза в разных комбинациях. В самом удачном случае через 4728 пролетает DHCPDISCOVER. Но на клиентский свич ответ не доходит. Полагаю, что 4728 сильно отличается от 4024, ему нужна какая-то дополнительная настройка, чтоб корректно проталкивать ответы в нужный вилан. По сабстрингу - да, вначале тупо скопировал из топика, а потом подумал... :) Спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sillybilly Опубликовано 9 декабря, 2010 · Жалоба Дополню. На самом деле вопрос состоит из двух - и я зря устраиваю мешанину. Вопрос 1 - как донести до dhcpd, что мы хотим адрес в vlan1002, если DHCPREQUEST идет из бродкаст-домена vlan1, а про vlan1002 сервер ваще ни ухом ни рылом? Ответ пока один - завести IP-интерфейс в 3528 для vlan1002 и тогда сервак ПОНИМАЕТ, откуда дровишки. Если есть другой ответ - скажите же мне его! Вопрос 2 - если решен вопрос 1 - как донести DHCPLEASE обратно до клиента? Напоминаю, про виланы dhcpd НЕ знает. Про них знает 4728 и 3528, но последний явно не маршрутизатор. Вот где-то так. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...