Перейти к содержимому
Калькуляторы

Всем привет.

Неделю мучаюсь с настройкой WS-C3550-24-FX-SMI и WS-C2950G-48-EI + Ubuntu (isc-dhcp-server). Ранее получилось настроить, сейчас вообще ни в какую.

Схема:

[клиент]<--access_vlan770-->[cisco2950]<--trunk_1,770-->[cisco3550]<--access_vlan1-->[sERVER_DHCP]

Конфиг 2950:

...
ip dhcp snooping vlan 770
ip dhcp snooping
ip dhcp snooping information option
...
vlan 770
!
interface FastEthernet0/1
switchport access vlan 770
ip dhcp snooping limit rate 200
!
...
interface GigabitEthernet0/2
switchport trunk allowed vlan 1,770
switchport mode trunk
ip dhcp snooping trust
!
interface Vlan1
ip address 10.10.13.90 255.255.0.0
no ip route-cache
!
...

 

Конфиг 3550:

...
ip dhcp relay information option
!
...
!
vlan 770
!
...
!
interface Vlan1
ip address 10.10.13.75 255.255.0.0
!
interface Vlan770
ip address 10.140.1.1 255.255.255.0
ip helper-address 10.10.254.127
ip dhcp relay information trusted
!

 

Конфиг dhcp:

default-lease-time 2592000;
max-lease-time 2592001;

ddns-update-style none;
log-facility local7;
option ms-classless-static-routes code 249 = array of unsigned integer 8;

site-option-space "111";
server-identifier hostname;
local-address 10.10.254.127;


shared-network mynetwork{
   authtoritative;

   if exists agent.remote-id {
    log ( info, option agent.remote-id);
   } 
   if exists agent.circuit-id {
    log ( info, option agent.circuit-id);
   }


   subnet 10.10.0.0 netmask 255.255.0.0{
#        host admin_phone{
#	    fixed-address 10.10.14.1;
#    	    hardware ethernet f8:df:a8:8a:c0:83;
#    	    option routers 10.10.10.99;
#    	    option domain-name-servers 8.8.8.8, 62.165.32.250;
#	}


   if exists agent.remote-id {
    log ( info, option agent.remote-id);
   } 
   if exists agent.circuit-id {
    log ( info, option agent.circuit-id);
   }

   }

   subnet 10.140.1.0 netmask 255.255.255.0 {

   if exists agent.remote-id {
    log ( info, option agent.remote-id);
   } 
   if exists agent.circuit-id {
    log ( info, option agent.circuit-id);
   }

   # 00:23:81:1b:eb:bf - client
   # 00:11:93:EF:A4:C0 - 2950 base
   # 00:11:93:EF:A4:C1-F2 - 2950 ports
       class "sw01-p01" {
    match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1" 
	and
    binary-to-ascii(10, 8, ":", suffix(option agent.circuit-id, 1)) = "0001";
}

class "sw01-p02" {
   	    match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"
	and
    binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1";
}


option routers 10.140.1.1;
option subnet-mask 255.255.255.0;
authoritative;

pool {
    range 10.140.1.2;
    allow members of "sw01-p01";
}
pool {
    range 10.140.1.3;
    allow members of "sw01-p02";
}
   }
}

 

В итоге, на отлавливаю пакеты такого вида:

# tcpdump -s0 -vvvni vr0 host 10.10.254.127 and port 67
tcpdump: listening on vr0, link-type EN10MB (Ethernet), capture size 65535 bytes
14:36:03.956400 IP (tos 0x0, ttl 255, id 348, offset 0, flags [none], proto UDP (17), length 347)
   10.140.1.1.67 > 10.10.254.127.67: [udp sum ok] BOOTP/DHCP, Request from 00:23:81:1b:eb:bf, length 319, hops 1, xid 0xc5f545ed, secs 7424, Flags [broadcast] (0x8000)
  Gateway-IP 10.140.1.1
  Client-Ethernet-Address 00:23:81:1b:eb:bf
  Vendor-rfc1048 Extensions
    Magic Cookie 0x63825363
    DHCP-Message Option 53, length 1: Discover
    Client-ID Option 61, length 7: ether 00:23:81:1b:eb:bf
    Hostname Option 12, length 3: "DNS"
    Vendor-Class Option 60, length 8: "MSFT 5.0"
    Parameter-Request Option 55, length 13: 
      Subnet-Mask, Domain-Name, Default-Gateway, Domain-Name-Server
      Netbios-Name-Server, Netbios-Node, Netbios-Scope, Router-Discovery
      Static-Route, Classless-Static-Route, Classless-Static-Route-Microsoft, Option 252
      Vendor-Option
    Agent-Information Option 82, length 18: 
      Circuit-ID SubOption 1, length 6: ^@^D^C^B^@^@
      Remote-ID SubOption 2, length 8: ^@^F^@^QM-^SM-oM-$M-@
    Agent-Information Option 82, length 14: 
      Remote-ID SubOption 2, length 12: ^B^J^@^@^JM-^L^A^A^J^@^@^@
    END Option 255, length 0

 

А в логах пусто - только мак ноута.

Где я накосячил?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip helper-address 10.10.254.127 пингуется с каталиста? Вообще, уберите снупинг и всякие трасты на время отладки, а на dhcp-сервере tcpdump`ом посмотрите, что летит. Может банально не маршрута с самого каталиста до сервера. И сервер у Вас сам слушает запросы на 10.10.254.127:67?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Благодарю за ответ. Что летит - самый последний из дампов. Да, все пингуется, маршрут до 10.140.1.1 тоже включен

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще, уберите снупинг и всякие трасты на время отладки

Убрал .

Теперь приходит

09:50:38.920864 IP (tos 0x0, ttl 255, id 4, offset 0, flags [none], proto UDP (17), length 326)
   10.140.1.1.67 > 10.10.254.127.67: [udp sum ok] BOOTP/DHCP, Request from 00:23:81:1b:eb:bf, length 298, hops 1, xid 0x63e6f4f5, secs 7168, Flags [none] (0x0000)
  Gateway-IP 10.140.1.1
  Client-Ethernet-Address 00:23:81:1b:eb:bf
  Vendor-rfc1048 Extensions
    Magic Cookie 0x63825363
    DHCP-Message Option 53, length 1: Discover
    Client-ID Option 61, length 7: ether 00:23:81:1b:eb:bf
    Hostname Option 12, length 3: "DNS"
    Vendor-Class Option 60, length 8: "MSFT 5.0"
    Parameter-Request Option 55, length 13: 
      Subnet-Mask, Domain-Name, Default-Gateway, Domain-Name-Server
      Netbios-Name-Server, Netbios-Node, Netbios-Scope, Router-Discovery
      Static-Route, Classless-Static-Route, Classless-Static-Route-Microsoft, Option 252
      Vendor-Option
    Agent-Information Option 82, length 14: 
      Remote-ID SubOption 2, length 12: ^B^J^@^@^JM-^L^A^A^J^@^@^@

выше такой же дамп, судя по Remote-ID в первом и во втором случаях, в данном случае это mac-адрес 3550 без порта. Если на 2950 вернуть снуппинг и указать снуппинг для вилана, то я получу Mac 2950 и порт, но останется одна проблема - в dhcp в логи, падает только

Aug 18 09:53:26 www dhcpd: DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases

хотя в конфиге есть запись следующего вида

subnet 10.140.1.0 netmask 255.255.255.0 {

if exists agent.remote-id {
       log ( info, concat(
        "Switch MAC:", binary-to-ascii(16, 8, ":", option agent.remote-id),
    "Switch port:", binary-to-ascii(10, 8, ":", option agent.circuit-id) ));    }

или как в первом посте - просто белиберду в лог писать, если remote-id существует.

Из пакета видно, что он существует, но в лог ничего не падает. Получается, что не существует? Но ведь тогда circuit-id также изменяется, почему в этом случае ничего не падает в лог?

Изменено пользователем default_vlan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

уберите

if exists agent.remote-id 

 

Как вариант оставив:

log (info, "--------------------------------------------------------------------");
   log ( info, concat(
                      "Switch MAC:", binary-to-ascii(16, 8, ":", option agent.remote-id),
                      "Switch port:", binary-to-ascii(10, 8, ":", option agent.circuit-id) 
                     )
       );    
log (info, "--------------------------------------------------------------------");

 

посмотрите что будет в логах.

Изменено пользователем bomberman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

посмотрите что будет в логах.

Добавил. В логах только это.

Aug 18 10:46:12 www dhcpd: Copyright 2004-2016 Internet Systems Consortium.
Aug 18 10:46:12 www dhcpd: All rights reserved.
Aug 18 10:46:12 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Aug 18 10:46:13 www dhcpd: Internet Systems Consortium DHCP Server 4.3.4
Aug 18 10:46:13 www dhcpd: Copyright 2004-2016 Internet Systems Consortium.
Aug 18 10:46:13 www dhcpd: All rights reserved.
Aug 18 10:46:13 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/
Aug 18 10:46:13 www dhcpd: Wrote 0 class decls to leases file.
Aug 18 10:46:13 www dhcpd: Wrote 0 leases to leases file.
Aug 18 10:46:13 www dhcpd: 
Aug 18 10:46:13 www dhcpd: No subnet declaration for vr1 (8*.***.***.***).
Aug 18 10:46:13 www dhcpd: ** Ignoring requests on vr1.  If this is not what
Aug 18 10:46:13 www dhcpd:    you want, please write a subnet declaration
Aug 18 10:46:13 www dhcpd:    in your dhcpd.conf file for the network segment
Aug 18 10:46:13 www dhcpd:    to which interface vr1 is attached. **
Aug 18 10:46:13 www dhcpd: 
Aug 18 10:46:13 www dhcpd: Listening on BPF/vr0/00:1c:f0:98:47:ff/mynetwork
Aug 18 10:46:13 www dhcpd: Sending on   BPF/vr0/00:1c:f0:98:47:ff/mynetwork
Aug 18 10:46:13 www dhcpd: Sending on   Socket/fallback/fallback-net
Aug 18 10:46:13 www dhcpd: Server starting service.
Aug 18 10:47:26 www dhcpd: DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
Aug 18 10:47:30 www dhcpd: DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
Aug 18 10:47:39 www dhcpd: DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
Aug 18 10:47:56 www dhcpd: DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases

Изменено пользователем default_vlan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Не отрабатывает условие

match if

поэтому

DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases

2. Какого беса не видно log-а......

Попробуйте запустить dhcp в терминале так, убив существующий.:

dhcpd -4 -d -cf [путь к конфигу] [интерфейс] 

Будет ли log в терминале?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

этот лог не сработает. чтобы залогировать приходящую опцию был отдельный патч.

 

Оставьте эту секцию с логом, но выдайте адрес по маку. насколько я помню в опции 82 у цисок счет портов начинается с 0.

 

на 2950 добавьте еще no ip dhcp snooping verify mac-address

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

этот лог не сработает. чтобы залогировать приходящую опцию был отдельный патч

Любопытно. На тестовом стенде:

Internet Systems Consortium DHCP Server 4.3.1 Gentoo-r2

log работает. И опцию в нём видно.

В каких случаях требуется патч? и что за патч, если можно приведите ссылку.

Изменено пользователем bomberman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

патч помогает, когда ноу фри лизес )

 

This patch makes the server log the agent options when it receives a DHCP DISCOVER packet. You need this patch if you want to know the agent options of a received DISCOVER packet that doesn't match anything in the config file and gets rejected.

02-log-agent-options patch

 

http://www.miquels.cistron.nl/isc-dhcpd/

при успехе никто не спорит, что будет лог :)

 

 

 

Еще на прошлой работе использовали патч на субклассы с этой же ссылки, конфиг получался сильно меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Попробуйте запустить dhcp в терминале так, убив существующий.:

Server starting service.
DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases
DHCPDISCOVER from 00:23:81:1b:eb:bf via 10.140.1.1: network mynetwork: no free leases

Не сработало.

 

Оставьте эту секцию с логом, но выдайте адрес по маку. насколько я помню в опции 82 у цисок счет портов начинается с 0.

Да, с 0 или ^@ в tcpdump'е.

 

на 2950 добавьте еще no ip dhcp snooping verify mac-address

Эммм...

TEST_2950-48(config)#ip dhcp snooping ?
 information  DHCP Snooping information
 vlan         DHCP Snooping vlan
 <cr>

 

Логически, чтобы подправить конфиг, надо понимать что приходит.

 Agent-Information Option 82, length 18: 
             Circuit-ID SubOption 1, length 6: ^@^D^C^B^@^@
             Remote-ID SubOption 2, length 8: ^@^F^@^QM-^SM-oM-$M-@

 

Circuit-ID SubOption 1, length 6: ^@^D^C^B^@^@ 000504030000 - клиет был в 1 порту. Последняя ^@ меняется в соответствии с ASCII кодом, оно и логично.

^@^F^@^QM-^SM-oM-$M-@ - даже близко на mac-адрес не похоже.

IP по маку клиента получил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

на коммутаторе оставьте вставку опции 82 и тогда при выдаче успешной по маку у вас в логе вылезет реальное содержимое опций :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

на коммутаторе оставьте вставку опции 82 и тогда при выдаче успешной по маку у вас в логе вылезет реальное содержимое опций :)

ГИГАМЕГАМЕЖГАЛАКТИЧЕСКИЙПАЛЕЦВВЕРХ )) завелось. Спасибо огромное

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот еще вопрос, чисто теоретически, как-то можно проверять мак свитча + мак порта + мак клиента?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм. Не заметил у себя. При Discover тоже есть опция, но вот не в случае "no free leases". В моём случае: "unknown client" в соседней сети стоит deny unknown-clients;

 

патч помогает, когда ноу фри лизес )

Т.е. лог не срабатвает при DISCOVER и "no free leases"?

 

Быть может в моём установленном пакете патч присутствует. Не смотрел.

В любом случае спасибо за информацию и патч. Записал в блокнотик :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вряд ли этот патч ушел в дистрибы.

Ты вон сам написал, что если ноу фри лизес у тебя лога нет содержимого опций (т.е. log правило из subnet не срабатывает). Патч это правит. Очень удобно, если надо понять че за клиент.

 

поди можно. если дописать еще один and и условие в

match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"

and

binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1";

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

поди можно. если дописать еще один and и условие в

match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"

and

binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1";

Это хотя бы отлавливается. Вопрос в том, как это сравнить. Может быть есть возможность вывести все эти переменные? я же не могу сделать:

match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"
and
binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1"
and
Client-Ethernet-Address = "00:23:81:1b:eb:bf";

 

или Client-Ethernet-Address надо заменить на "hardware ethernet"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ты вон сам написал, что если ноу фри лизес у тебя лога нет содержимого опций (т.е. log правило из subnet не срабатывает).

Нет. Есть всегда. Я наверное не правильно выразился. У меня всегда есть log, даже при Discover. Но состояния "no free leases" у меня небыло. Было только "unknown client".

Да, к тому же я log пишу не в пределах subnet, а глобально. Быть может поэтому он и есть всегда.

Изменено пользователем bomberman

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот еще вопрос, чисто теоретически, как-то можно проверять мак свитча + мак порта + мак клиента?

 

Мак свитча - можно всунуть в идентификатор. Только не помню, какие модели цисок позволяют/не позволяют задать произвольный идентификатор для релея. Мак порта - нальзя. Мак клиента - можно без проблем. Но Ваш вариант заведомо мертвый. Чтобы исключить проблему с невозможностью использования мака порта, используйте опцию 82, и будет Вам счастье.

 

Чуть не забыл - опция 82 номер порта сообщает при запросе. Вот только у цисок 2940 и 2960, если память мне не изменяет, не передается VLANID в запросе серверу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

мак свитча там и так есть в remote-id. он хочет мак клиента проверять. видимо защита от перетыкальщиков..

mac клиента лежит в hardware, только обязательно поиграть с lead zeroes в маке.

 

http://www.exonotes.com/node/55

 

 

Скорее всего будет что-то типа

class "sw01-p02" {

match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"

and

binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1"

and

binary-to-ascii(16, 8, ":", hardware) = "00:22:33:44:55:66";

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скорее всего будет что-то типа

class "sw01-p02" {

match if binary-to-ascii( 16, 8, ":", suffix(option agent.remote-id ,6) )="00:11:93:ef:a4:c1"

and

binary-to-ascii( 10, 8, ":", suffix(option agent.circuit-id, 1) ) = "1"

and

binary-to-ascii(16, 8, ":", hardware) = "00:22:33:44:55:66";

}

 

Почти. binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)); - так полностью определяет. Пока на одном ноуте пробовал, но, думаю, что и на всех сработает.

 

Вот теперь другой вопрос. Как-то можно запретить изменение ip для клиента? Ну, чтобы если у клиента должен быть Ip-адрес 10.144.1.2, то забивая 10.144.1.3 и другие у него не было доступа к Интернет. Писать соответствие mac-порта к ip на сервере доступа - насколько я понимаю - не вариант, т.к. в arp-таблицу мак порта не попадает. Отслеживать по лизингу ip-адресов тоже не вариант.

Может есть решение?

 

Еще раз спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот теперь другой вопрос. Как-то можно запретить изменение ip для клиента? Ну, чтобы если у клиента должен быть Ip-адрес 10.144.1.2, то забивая 10.144.1.3 и другие у него не было доступа к Интернет. Писать соответствие mac-порта к ip на сервере доступа - насколько я понимаю - не вариант, т.к. в arp-таблицу мак порта не попадает. Отслеживать по лизингу ip-адресов тоже не вариант.

Может есть решение?

ip source guard + dhcp snooping

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ip source guard + dhcp snooping

 

А без ip source guard реально? У меня ни 2950, не 3550 не поддерживают это.

Вроде бы на 3550 есть вариант использовать "ip source binding". Вопрос, как это все синхронизировать?

Изменено пользователем default_vlan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

без ip source guard + dhcp snooping только влан на клиента

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

без ip source guard + dhcp snooping только влан на клиента

TEST_3550-24(config)#ip ver
TEST_3550-24(config)#ip verify ?
 drop-rate  drop-rate snmp trap config commands

TEST_3550-24(config)#ip verify d
TEST_3550-24(config)#ip verify drop-rate ?
 compute  drop-rate computation config commands
 notify   drop-rate snmp trap config

TEST_3550-24(config)#ip so               
TEST_3550-24(config)#ip source ?
 binding  static IP binding

TEST_3550-24(config)#ip source bin
TEST_3550-24(config)#ip source binding ?
 H.H.H  binding MAC address

 

Суть в том, что snooping на 2950 (L2), на 3550 (L3) - relay. Как таблицу снупинга с 2950 перенести на 3550?)

vlan на клиента у меня не сработает - слишком много vlan получается

Изменено пользователем default_vlan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.