- PVSM.RU - https://www.pvsm.ru -
На хабре было довольно много топиков, описывающих те или иные варианты построения провайдерских сетей, в том числе и с использованием указанных в заголовке технологий. Отчасти они помогли мне в решении своей задачи, но многое пришлось копать самому. Хочу поделиться тем, что получилось и попытаться сэкономить время последователям.
Необходимо организовать сеть, максимально удобную для конечного пользователя, при этом также удобную (с точки зрения минимальной нагрузки на техподдержку) и безопасную (с точки зрения мошенничества) для оператора. К тому же сеть должна быть недорогой. Кто-то возразит, что Cisco и «недорого» — несовместимые понятия, однако для решения нашей задачи годятся и End of Life старички, которые можно приобрести по очень демократичным ценам.
Для обеспечения удобства пользователя были отброшены следующие варианты:
Из всех рассмотренных вариантов для пользователя наиболее удобен вариант с DHCP, но для провайдера есть ряд сложностей:
Привязка по mac неудобна, так как придется перерегистрировать новые mac-адреса. Аутентификация пользователя в биллинге только по ip-адресу тоже на первый взгляд кажется ненадежной, хитрый пользователь может поставить себе вручную ip-адрес соседа и внести смуту. Однако решение есть и строится оно на технологиях из заголовка статьи — option 82 и dynamic arp inspection
Кому интересно решение — прошу под кат
DHCP сервер для выдачи адресов будет ориентироваться на опцию 82, которая определяет, с какого физического порта коммутатора пришел запрос на получение адреса. Таким образом мы добиваемся того, что Вася Пупкин из 14-й квартиры, кабель которого подключен в 7-й порт нашего коммутатора SW-01 всегда получит адрес 10.10.1.7, например, вне зависимости от того, какое устройство он подключит к своему кабелю. Такой подход позволяет нам идентифицировать Васю Пупкина только по IP-адресу, но тут есть проблема. Сосед Жора, который не хочет платить за инет, поставит себе руками адрес Васи Пупкина, создаст в сети конфликт IP-адресов и будет пользоваться Интернетом за счет Васи.
Чтобы такого не произошло, существует технология Dynamic ARP Inspection. Суть технологии сводится к проверке связки mac+ip, полученных от DHCP-сервера и сравнении их с ARP-запросами, поступающими на порт. Таким образом, даже если сосед Жора поставит себе такой же mac и IP, как у Васи, коммутатор проверит, выдавал ли DHCP в этот порт такой IP такому mac-у. Если не выдавал, пакет будет отброшен.
В нашем распоряжении есть два коммутатора: Cisco 2950-24 и Cisco 2960-24-TT-L
Коммутатор 2950 будет использоваться для подключения абонентов. На нем сконфигурирован Management vlan 254 для управления.
IP коммутатора — 10.0.254.10, mac — 00:11:92:1B:3A:00
Коммутатор 2960 будет выступать в роли DHCP-сервера и решать задачу инспектирования ARP.
IP коммутатора — 10.0.254.2, mac — 00:16:C8:D7:D2:80
MAC можно посмотреть командой show version
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
Коммутатор 2950 не поддерживает Dynamic ARP Inspection, но мы можем решить эту задачу на вышестоящем коммутаторе. В примере в качестве такого коммутатора использован Cisco 2960-24-TT-L, хотя более правильно использовать L3 коммутатор, например, 3550-12T или 3550-12G, тогда он сможет решить и задачу Inter-VLAN Routing тоже.
И так, на С2950 конфигурируем следующее:
ip dhcp relay information option
interface Vlan254
ip address 10.0.254.10 255.255.255.0
ip helper-address 10.0.254.2
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20
ip dhcp snooping vlan 254
ip dhcp snooping
interface FastEthernet0/24
ip dhcp snooping trust
Конфигурация С2960 чуть более сложная:
ip dhcp class user01
remark SW2950-1 port 01
relay agent information
relay-information hex 01060004000a0001020800060011921b3a00
В классе достаточно указать только relay-information, но для удобства также рекомендуется использовать комментарий remark, в который можно записать, например, данные абонента.
Здесь самое важное — понять принцип формирования hex-строки. Это 18 байт, содержащиеся в option 82
Ее содержимое состоит из двух полей: circuit-id и remote-id
circuit-id содержит номер vlan и номер физического порта, с которого пришел dhcp запрос.
remote-id содержит mac-адрес коммутатора, который отправил этот запрос.
Данную строку можно извлечь анализатором wireshark, но делать это для каждого абонента неудобно, поэтому рассмотрим, как ее сгенерировать.
Время аренды адреса указано 5 минут. Это нужно для того, чтобы при подключении нового устройства с другим адресом в свой порт, абонент быстро получил на него адрес. В противном случае будет ошибка, что данный пул исчерпан, так как в нем всего 1 адрес. Кроме того, в примере опущены остальные настройки dhcp-пула, такие, как шлюз, днс и т.д.
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
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
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 arp inspection vlan 10,20
Проверим назначение адреса клиенту, подключенному в 9-й порт коммутатора. Порт находится в 20-м влане, согласно нашей схемы, клиент должен получить адрес 10.0.20.9
Сформируем значение hex: 0106000400140008020800060011921b3a00
где 0014 — 20-й влан,
0008 — 9-й порт коммутатора
0011921b3a00 — его mac.
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:
А так выглядит вывод команды debug ip dhcp server events
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 минут, выделенные на аренду этого адреса другому маку, еще не истекли).
Однако через некоторое время мы получаем нужный нам адрес, но уже для клиента с маком 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 не поддерживает Dynamic ARP Inspection, данную технологию нужно настраивать на вышестоящем коммутаторе Cisco 2960.
Команда show ip dhcp snooping binding на С2960 покажет привязку 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-й порт С2950 компьютер с настроенным вручную адресом 10.0.20.9
И тут же увидим уведомление об ошибке, из которого видно, что она произошла в 20-м влане на 1-м порту коммутатора. Кроме того, мы видим айпи и мак адреса, которые вызвали ошибку. 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 [1]
Особенности работы и настройки DHCP на маршрутизаторах Cisco (Часть 2) [2]
IPoE, а также Client-VLAN и DHCP Option 82 [3]
Проблема IPoE [4] — от себя добавлю, что тут как раз нет проблемы, если все правильно настроено.
Атака канального уровня ARP-spoofing и как защитить коммутатор Cisco [5] — хорошая статья, показывающая еще одну пользу от Dynamic ARP Inspection — повышение безопасности сети в целом.
Автор: alk0v
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/it-infrastruktura/42377
Ссылки в тексте:
[1] Особенности работы и настройки DHCP на маршрутизаторах Cisco: http://habrahabr.ru/post/87920/
[2] Особенности работы и настройки DHCP на маршрутизаторах Cisco (Часть 2): http://habrahabr.ru/post/89997/
[3] IPoE, а также Client-VLAN и DHCP Option 82: http://habrahabr.ru/post/108453/
[4] Проблема IPoE : http://habrahabr.ru/post/170371/
[5] Атака канального уровня ARP-spoofing и как защитить коммутатор Cisco: http://habrahabr.ru/post/192022/
[6] Источник: http://habrahabr.ru/post/192136/
Нажмите здесь для печати.