Пролог На хабе было довольно много тем, описывающих различные варианты построения провайдерских сетей, в том числе с использованием упомянутых в заголовке технологий.
Частично они помогли мне в решении моей проблемы, но многое пришлось копать самому.
Хочу поделиться произошедшим и попытаться сэкономить время подписчиков.
Итак, постановка задачи:
Необходимо организовать сеть, максимально удобную для конечного пользователя, одновременно удобную (с точки зрения минимальной нагрузки на техподдержку) и безопасную (с точки зрения мошенничества) для оператора.Кроме того, сеть должна быть недорогой.
Некоторые возразят, что Cisco и «недорого» — понятия несовместимые, но для решения нашей проблемы подойдут и старые продукты End of Life, которые можно приобрести по очень доступным ценам.
Для удобства пользователя были исключены следующие опции:
- статическое назначение IP-адресов неудобно для пользователя, адрес нужно где-то записать, пользователи потерявшие адрес обращаются в техподдержку
- DHCP с привязкой к mac-адресу неудобен для пользователя; при смене устройства необходимо перерегистрировать его у провайдера или сменить на нем mac.
- всевозможные туннели, в основном pptp - требует настройки от клиента, забыты логины и пароли
Аутентификация пользователя в биллинге только по IP-адресу также кажется на первый взгляд ненадежной; хитрый пользователь может вручную установить IP-адрес своего соседа и вызвать путаницу.
Однако решение есть и оно основано на технологиях из названия статьи - вариант 82 И динамическая проверка ARP Если кого-то заинтересует решение, смотрите ниже.
Решение
DHCP-сервер для выдачи адресов будет опираться на опцию 82, которая определяет, с какого физического порта свитча пришел запрос на получение адреса.Таким образом мы обеспечиваем, чтобы Вася Пупкин из квартиры 14, кабель которого подключен к 7-му порту нашего коммутатора SW-01, всегда получал адрес, например, 10.10.1.7, независимо от того, какое устройство он подключил к своему кабелю.
Такой подход позволяет идентифицировать Васю Пупкина только по IP-адресу, но есть проблема.
Сосед Жора, не желающий платить за Интернет, установит себе адрес Васи Пупкина, создаст конфликт IP-адресов в сети и будет пользоваться Интернетом за Васиный счёт. Чтобы этого не произошло, существует технология Dynamic ARP Inspection. Суть технологии сводится к проверке полученной от DHCP-сервера комбинации mac+ip и сравнению ее с ARP-запросами, поступающими на порт. Таким образом, даже если сосед Жоры выставит себе тот же mac и IP, что и у Васи, свитч проверит, выдал ли DHCP такой IP этому маку на этом порту.
Если пакет не выдан, он будет отброшен.
Фактическая установка
В нашем распоряжении есть два переключателя: Сиско 2950-24 И Сиско 2960-24-ТТ-Л Коммутатор 2950 будет использоваться для подключения абонентов.На нем настроен управляющий vlan 254 для управления.
Переключить IP- 10.0.254.10 , Мак - 00:11:92:1Б:3А:00 Коммутатор 2960 будет действовать как DHCP-сервер и выполнять задачу проверки ARP. Переключить IP - 10.0.254.2 , Мак - 00:16:C8:D7:D2:80 MAC можно посмотреть командой показать версию
Коммутатор 2950 не поддерживает динамическую проверку ARP, но мы можем решить эту проблему на вышестоящем коммутаторе.cisco WS-C2950-24 (RC32300) processor (revision P0) with 19911K bytes of memory. Processor board ID FOC0825Z1GD Last reset from system-reset Running Standard Image 24 FastEthernet/IEEE 802.3 interface(s) 32K bytes of flash-simulated non-volatile configuration memory. Base ethernet MAC Address: 00:11:92:1B:3A:00
В примере используется такой переключатель Сиско 2960-24-ТТ-Л , хотя правильнее использовать переключатель L3, например, 3550-12Т или 3550-12Г , то он сможет решить и проблему маршрутизации между VLAN. И так, на С2950 настраиваем следующее:
- В режиме глобальной настройки указываем необходимость добавления опций в сообщение dhcp-relay:
ip dhcp relay information option
- В настройках интерфейса управления укажите, что DHCP-запросы должны перенаправляться на 2960-й свитч по адресу 10.0.254.2.
interface Vlan254 ip address 10.0.254.10 255.255.255.0 ip helper-address 10.0.254.2
- В режиме глобальной конфигурации активируйте Отслеживание DHCP для всех наших vlan
ip dhcp snooping vlan 10 ip dhcp snooping vlan 20 ip dhcp snooping vlan 254 ip dhcp snooping
- Определите, что предложения DHCP разрешены только от порта 24, к которому подключен вышестоящий 2960 с DHCP-сервером.
interface FastEthernet0/24 ip dhcp snooping trust
- Вы должны создать запись для каждого пользователя IP-класс DHCP
ip dhcp class user01 remark SW2950-1 port 01 relay agent information relay-information hex 01060004000a0001020800060011921b3a00
В классе достаточно указать только реле-информация , но для удобства также рекомендуется использовать комментарий замечание , в который можно записать, например, данные об абоненте.Самое главное здесь — понять принцип формирования шестнадцатеричной строки.
Это 18 байт, содержащиеся в опции 82. Его содержимое состоит из двух полей: идентификатор цепи И удаленный идентификатор идентификатор цепи содержит номер vlan и номер физического порта, с которого пришел запрос DHCP. удаленный идентификатор содержит mac-адрес коммутатора, отправившего этот запрос.
Эту строку можно извлечь с помощью анализатора Wireshark, но делать это для каждого подписчика неудобно, поэтому давайте рассмотрим, как ее сгенерировать.
- После создания классов DHCP для абонентов настроим пулы адресов для каждого влана.
Время аренды адреса – 5 минут. Это необходимо для того, чтобы при подключении к его порту нового устройства с другим адресом абонент быстро получил для него адрес.
В противном случае будет ошибка, что этот пул исчерпан, так как в нем всего 1 адрес.
Кроме того, в примере опущены другие настройки пула DHCP, такие как шлюз, DNS и т. д.
ip dhcp pool vlan10 network 10.0.10.0 255.255.255.0 lease 0 0 5 class user01 address range 10.0.10.11 10.0.10.11 class user02 address range 10.0.10.12 10.0.10.12
- Необходимо настроить соответствующие IP-интерфейсы для каждого пула коммутатора.
Это делается через интерфейс vlan Несмотря на то, что C2960 является коммутатором второго уровня, он позволяет поддерживать активными несколько IP-интерфейсов, но не может маршрутизировать трафик между ними.
interface Vlan10 ip address 10.0.10.2 255.255.255.0 ! interface Vlan20 ip address 10.0.20.2 255.255.255.0 ! interface Vlan254 ip address 10.0.254.2 255.255.255.0
- Также нам необходимо настроить dhcp-snooping на этом коммутаторе, так как эта опция формирует основу для привязки выдаваемых IP-адресов к mac-адресам.
Команда база данных отслеживания IP DHCP определим место хранения базы данных; в примере он будет сохранен в файле DHCP мигать.
Вы также можете указать ftp, tftp, http, https, scp и другие URL-адреса в качестве места хранения.
Команда Опция отслеживания информации ip dhcpallow-untrusted позволяет принимать запросы с опцией 82 со всех портов коммутатора.
ip dhcp snooping vlan 10 ip dhcp snooping vlan 20 ip dhcp snooping information option allow-untrusted ip dhcp snooping database flash:dhcp ip dhcp snooping
- На данный момент мы работаем над привязкой IP-адреса к физическому порту свитча.
Остается только настроить Dynamic ARP Inspection. Это делается одной простой командой:
ip arp inspection vlan 10,20
Доказательство концепции
Проверим назначение адреса клиенту, подключенному к 9 порту свитча.Порт находится во влане 20, по нашей схеме клиент должен получить адрес 10.0.20.9 Сформируем шестнадцатеричное значение: 01060004 0014 0008 020800060011921b3a00 Где 0014 - 20-й влан, 0008 - 9-й порт коммутатора 0011921b3a00 — его мак.
ip dhcp class user09
remark SW2950-1 port 09
relay agent information
relay-information hex 0106000400140008020800060011921b3a00
ip dhcp pool vlan20
network 10.0.20.0 255.255.255.0
lease 0 0 5
class user09
address range 10.0.20.9 10.0.20.9
Вот как выглядит биржа в Wireshark:
Вот как выглядит вывод команды отладка событий IP DHCP-сервера 2d00h: DHCPD: Sending notification of DISCOVER:
2d00h: DHCPD: htype 1 chaddr 000a.e45b.dcc6
2d00h: DHCPD: remote id 00060011921b3a00
2d00h: DHCPD: circuit id 000400140008
2d00h: DHCPD: interface = Vlan20
2d00h: DHCPD: class id 4d53465420352e30
2d00h: DHCPD: out_vlan_id 0
2d00h: DHCPD: DHCPOFFER notify setup address 10.0.20.9 mask 255.255.255.0
2d00h: DHCPD: Sending notification of ASSIGNMENT:
2d00h: DHCPD: address 10.0.20.9 mask 255.255.255.0
2d00h: DHCPD: htype 1 chaddr 000a.e45b.dcc6
2d00h: DHCPD: lease time remaining (secs) = 300
2d00h: DHCPD: interface = Vlan20
2d00h: DHCPD: out_vlan_id 0
000a.e45b.dcc6 — mac-адрес клиента
Теперь подключаем к этому же порту другой ноутбук.
2d00h: DHCPD: Sending notification of DISCOVER:
2d00h: DHCPD: htype 1 chaddr 089e.012b.6ce1
2d00h: DHCPD: remote id 00060011921b3a00
2d00h: DHCPD: circuit id 000400140008
2d00h: DHCPD: interface = Vlan20
2d00h: DHCPD: class id 4d53465420352e30
2d00h: DHCPD: out_vlan_id 0
2d00h: DHCPD: no free address within the address range for class user09 in pool vlan20
2d00h: DHCPD: Sending notification of ASSIGNMENT FAILURE:
Сначала мы получаем сообщение о том, что в пуле нет свободных адресов (поскольку 5 минут, отведенные на аренду этого адреса другому Mac, еще не истекли).
Однако через некоторое время мы получаем нужный нам адрес, но для клиента с Mac 08-9e-01-2b-6c-e1 2d00h: DHCPD: Sending notification of DISCOVER:
2d00h: DHCPD: htype 1 chaddr 089e.012b.6ce1
2d00h: DHCPD: remote id 00060011921b3a00
2d00h: DHCPD: circuit id 000400140008
2d00h: DHCPD: interface = Vlan20
2d00h: DHCPD: class id 4d53465420352e30
2d00h: DHCPD: out_vlan_id 0
2d00h: DHCPD: Adding binding to radix tree (10.0.20.9)
2d00h: DHCPD: Adding binding to hash tree
2d00h: DHCPD: assigned IP address 10.0.20.9 to client 0108.9e01.2b6c.e1. (316 0)
2d00h: DHCPD: DHCPOFFER notify setup address 10.0.20.9 mask 255.255.255.0
2d00h: DHCPD: Sending notification of ASSIGNMENT:
Теперь проверим, может ли сосед нашего клиента, подключенный к 10 порту свитча, вручную выставить себе адрес 10.0.20.9
Поскольку Cisco 2950 не поддерживает динамическую проверку ARP, эту технологию необходимо настроить на вышестоящем коммутаторе Cisco 2960.
Команда показать привязку отслеживания IP DHCP на C2960 покажет привязку IP-адресов к Mac MacAddress IpAddress Lease(sec) Type VLAN Interface
------------------ --------------- ---------- ------------- ---- --------------------
08:9E:01:2B:6C:E1 10.0.20.9 288 dhcp-snooping 20 FastEthernet0/1
Total number of bindings: 1
FastEthernet0/1 — это интерфейс коммутатора 2960, который включает в себя нисходящий 2950.
Подключим компьютер с настроенным вручную адресом 10.0.20.9 к порту 10 С2950.
И сразу же мы увидим уведомление об ошибке, из которого видно, что она произошла в 20-м влане на 1-м порту свитча.
Кроме того, мы видим IP и MAC-адреса, вызвавшие ошибку.
000a.e45b.dcc6/10.0.20.9/ 2d01h: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Fa0/1, vlan 20.([000a.e45b.dcc6/10.0.20.9/0000.0000.0000/10.0.20.9/23:48:25 EEST Mon Sep 2 2013])
Узнать, кто именно пытался обмануть, можно, подойдя к коммутатору С2950 и посмотрев таблицу коммутации.
SW2950-1#show mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
20 000a.e45b.dcc6 DYNAMIC Fa0/10
20 089e.012b.6ce1 DYNAMIC Fa0/9
Видим, что интересующий нас mac завис на 10 порту.
Вот пожалуй и всё, дополнительную информацию можно найти в этих статьях: Особенности работы и настройки DHCP на маршрутизаторах Cisco Особенности работы и настройки DHCP на маршрутизаторах Cisco (Часть 2) IPoE, а также Client-VLAN и DHCP Option 82 проблема с IPoE — От себя добавлю, что здесь нет никаких проблем, если все правильно настроить.
Атака ARP-спуфинга на канальном уровне и как защитить коммутатор Cisco — хорошая статья, показывающая еще одно преимущество Dynamic ARP Inspection — повышение безопасности сети в целом.
Теги: #cisco #cisco #Сетевые технологии #it-инфраструктура #dhcp #отслеживание DHCP #подмена Arp #dhcp-relay #cisco 2960 #option 82 #динамическая проверка arp #cisco 2950
-
Впечатляющие Примеры Webgl
19 Oct, 24 -
Вышла Публичная Бета-Версия Photoshop Cs 3
19 Oct, 24