Сравнение коммутаторов: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показано 65 промежуточных версий 2 участников)
Строка 1: Строка 1:
  +
[[Категория:Networking]]
  +
[[Категория:SNMP]]
  +
[[Категория:Switch]]
  +
[[Категория:DlinkSwitch]]
  +
[[Категория:EdgeCore]]
 
=Сравнение коммутаторов.=
 
=Сравнение коммутаторов.=
   
   
 
В связи с тем, что у меня закончились запасы DES-35{26|50}, остро встал вопрос о замене.
 
В связи с тем, что у меня закончились запасы DES-35{26|50}, остро встал вопрос о замене.
Из кандидатов на замену
+
Из кандидатов на замену:
  +
Dlink DES -3028 (у меня его нет в наличии, вместо него вцелом аналогичный DES-3526)
 
  +
* Alcatel-Lucent LS-6224
Alied Telesyn AT-8000S
 
  +
* Dlink DES -3028 (у меня его нет в наличии, вместо него вцелом аналогичный DES-3526 - тесты делались много раз.)
Accton Edge-Core ES-3528XA-v2
 
  +
* Alied Telesyn AT-8000S
Alcatel-Lucent LS-6224
 
  +
* Accton Edge-Core ES-3528XA-v2
  +
  +
  +
К сожалению, я не имею информации о закупочных ценах, но по моим данным самый дешевый и коммутаторов - Accton Edge-Core ES-3528XA-v2 <BR>
  +
Все коммутаторы имеют 24 порта 10/100 и 2-4 порта combo.
  +
   
К сожалению, я не имеюинформации о закупочных ценах, но по моим данным самый дешевый и коммутаторов - Accton Edge-Core ES-3528A
 
   
 
==Необходимый функционал==
 
==Необходимый функционал==
Строка 19: Строка 29:
 
# IP Source Guard (ф-я может называться по разному в зависимости от вендора)
 
# IP Source Guard (ф-я может называться по разному в зависимости от вендора)
 
# Loopback detect
 
# Loopback detect
  +
# Port Security
  +
# Storm Control
  +
# MSTP с возможностью полной блокировки любых STP-пакетов на клиентских портах. (этот момент сомнителен, коммутаторы на доме почти всегда имеют только один аплинк)
   
 
Описанный функционал вытекает из того факта, что используется схема влан-на-группу-домов. Это с одной стороны, позволяет разгрузить агрегатоы (недешевые), с другой - налагает повышенные требования на коммутаторы досупа. Дискуссия о достоинствах или недостатоках этой схемы перед схемой влан-на-абонента выходит за пределы этой статьи.
 
Описанный функционал вытекает из того факта, что используется схема влан-на-группу-домов. Это с одной стороны, позволяет разгрузить агрегатоы (недешевые), с другой - налагает повышенные требования на коммутаторы досупа. Дискуссия о достоинствах или недостатоках этой схемы перед схемой влан-на-абонента выходит за пределы этой статьи.
   
Функционал, который желателен но обязаткльным не является
+
Функционал, который желателен но обязательным не является
 
# Авторизация доступа на коммутатор с использованием RADIUS-сервера. С разграничением полномочий для предоставления досупа низкоквалифицированному персоналу без возможности внесения изменений в конфигурацию.
 
# Авторизация доступа на коммутатор с использованием RADIUS-сервера. С разграничением полномочий для предоставления досупа низкоквалифицированному персоналу без возможности внесения изменений в конфигурацию.
 
# Кабельный тестер
 
# Кабельный тестер
 
# Возможность снимать информацию о маках коммутатора и о состояни DHCP Snooping database по SNMP
 
# Возможность снимать информацию о маках коммутатора и о состояни DHCP Snooping database по SNMP
  +
# SNMP v3, ssh (вместо телнета), ACL на интерфейс управления коммутатором, получение времени по ntp, пересылка сообщений на удаленный syslog.
#
 
  +
# Поддержка "китайских" SFP. (Возиться с программатором безплатно не хочется.)
#
 
  +
#
 
  +
Отдельно отмечу, что на данный момент работа с мультикастом не требуется, и в связи с полным отсутвием опыта у меня в этой области, от тестирования пока отказался.
#
 
  +
  +
==Тесты==
  +
Определяю базовый набор тестов.
  +
  +
* Получения ip адреса тестовым компьютером на основе данных коммутатор-влан-порт.
  +
* Проверка работы IP Source Guard.
  +
* Проверка работы ACL
  +
* Атака Arppoison на коммутатор с "клиентского" порта.
  +
* Проверка работы Loopback Detect
  +
* Проверка работы Broadcast Storm Control (как?)
  +
  +
==ALcatel-Lucent LS-6224==
  +
у меня для теста достался следующий коммутатор:
  +
<PRE>
  +
test# sh ver
  +
SW version 1.5.1.7 ( date 26-Feb-2008 time 17:04:09 )
  +
Boot version 1.0.0.12 ( date 19-Oct-2006 time 09:07:37 )
  +
HW version 00.00.01
  +
</PRE>
  +
===DHCP Snooping + Opt. 82 + ip source guard===
  +
====Конфиг DHCPd====
  +
Кофигурирую DHCPd (максимально простой конфиг):
  +
<PRE>
  +
...
  +
class "port-1"
  +
{
  +
match if (
  +
binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 2, 2)) = "201"
  +
and
  +
binary-to-ascii(10, 8, "/", suffix(option agent.circuit-id, 1)) = "1"
  +
);
  +
  +
}
  +
...
  +
  +
  +
  +
shared-network "clients" {
  +
subnet 172.16.253.0 netmask 255.255.255.252 { }
  +
  +
subnet 10.200.0.0 netmask 255.255.0.0 {
  +
option subnet-mask 255.255.0.0;
  +
option broadcast-address 10.200.255.255;
  +
option routers 10.200.0.1;
  +
  +
  +
pool {
  +
range 10.200.0.2;
  +
allow members of "port-1";
  +
}
  +
  +
pool {
  +
}
  +
  +
}
  +
</PRE>
  +
====Конфиг коммутатора====
  +
Наиболее важные моменты в конфигурации коммутатора:
  +
<PRE>
  +
interface range ethernet e(1-24)
  +
dot1x multiple-hosts
  +
security mode max-addresses
  +
port security max 10
  +
port security discard
  +
switchport access vlan 201
  +
loopback-detection enable
  +
service-acl input test2
  +
ip source-guard
  +
exit
  +
  +
  +
ip dhcp snooping
  +
ip dhcp snooping vlan 201
  +
  +
interface ethernet g1
  +
ip dhcp snooping trust
  +
exit
  +
  +
ip source-guard
  +
ip source-guard tcam retries-freq 600
  +
  +
interface vlan 1
  +
ip address 172.16.253.2 255.255.255.0
  +
exit
  +
  +
ip default-gateway 172.16.253.1
  +
  +
ip access-list test2
  +
permit any 10.200.0.0 0.0.255.255 10.200.0.1 0.0.0.0
  +
permit any 10.199.0.0 0.0.255.255 10.199.0.1 0.0.0.0
  +
deny any 10.200.0.0 0.0.255.255 any
  +
deny any 10.199.0.0 0.0.255.255 any
  +
permit any any any
  +
exit
  +
  +
hostname test
  +
ip ssh server
  +
</PRE>
  +
  +
====Проверка работы====
  +
При запросе DHCP от клиента в Vlan201 вижу:
  +
<PRE>
  +
... поскипано ...
  +
Option: (t=82,l=18) Agent Information Option
  +
Option: (82) Agent Information Option
  +
Length: 18
  +
Value: 0106000400C90101020800060012CF84D420
  +
Agent Circuit ID: 000400C90101
  +
Agent Remote ID: 00060012CFXXXXXX
  +
End Option
  +
</PRE>
  +
  +
Где
  +
Agent Circuit ID: 00C90101
  +
Значение Circuit ID побайтно:<FONT color=red>00</FONT> <FONT color=green>04</FONT> <FONT color=blue>00C9</FONT> <FONT color=PINK>01</FONT> <FONT color=GREY>01</FONT><BR>
  +
<BR>
  +
<FONT color=red>00 </FONT> - Тип Circit ID (Всегда 0?) (1 байт, смещение 0)<BR>
  +
<FONT color=green>04</FONT> - Длинна (констаната? почему такое значение?) (1 байт, смещение 1)<BR>
  +
<FONT color=blue>00C9</FONT> - VLAN ID (2 байта, смещение 2)<BR>
  +
<FONT color=PINK>01</FONT> - Stack/Module ID (0 или 1 у stand-alone switch) 1 байт, смещение 4<BR>
  +
<FONT color=GREY>01</FONT> - Port (1 байт, смещение 5)<BR>
  +
  +
Очевидно, что вставка Opt. 82 работает.
  +
Пробую переключь DHCP-сервер в другой порт (g2) и включаю его как не-доверительный.
  +
<PRE>
  +
interface ethernet g2
  +
no ip dhcp snooping trust
  +
exit
  +
</PRE>
  +
  +
После истечения времени аренды связь с тестовым хостом пропадает. При обратном переключении - восстанавливается.
  +
  +
<PRE>
  +
sh ip dhcp snooping binding
  +
Total number of binding: 1
  +
  +
MAC Adreess IP Address Lease (sec) Type VLAN Interface
  +
------------------ --------------- ------------ ---------- ---- ----------
  +
00:1c:23:95:8d:8b 10.200.0.2 46 learned 201 e1
  +
</PRE>
  +
  +
ip source guard и ACL работают так как и описано в документации без всяких "но". Попытка поставить ip адрес руками а не использовать автоматическое получение приводит к неработоспособности сети (что и требовалось).
  +
===Arppoison===
  +
Для атаки Arppoison использую одноименную утилиту из пакета arptools
  +
Т.к. коммутатор поддерживает port-security то во избежание переполнения таблицы коммутации ограниваю число маков на порту до 10
  +
<PRE>
  +
interface range ethernet e(1-24)
  +
dot1x multiple-hosts
  +
security mode max-addresses
  +
port security max 10
  +
port security discard
  +
exit
  +
</PRE>
  +
Запускаю arppoison (собрано на ноутбуке Dell, ASP linux неважно-какой-версии). Судя по tcpdump на порт коммутатора приходят пакеты со слчайными маками ...
  +
<PRE>
  +
#tcpdump -n arp -e
  +
...
  +
13:58:21.583911 00:2a:d4:74:c6:2e > Broadcast, ethertype ARP (0x0806), length 42: arp reply 223.134.179.92 is-at 00:2a:d4:74:c6:2e
  +
13:58:21.587912 00:00:97:f6:a6:e6 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 206.27.51.62 is-at 00:00:97:f6:a6:e6
  +
13:58:21.591910 00:4d:8b:2a:b9:a4 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 146.94.241.33 is-at 00:4d:8b:2a:b9:a4
  +
13:58:21.595914 00:31:c4:b3:a7:29 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 100.146.34.25 is-at 00:31:c4:b3:a7:29
  +
13:58:21.599913 00:03:70:44:8e:54 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 111.35.176.20 is-at 00:03:70:44:8e:54
  +
13:58:21.603909 00:16:db:ec:bd:a3 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 111.213.245.11 is-at 00:16:db:ec:bd:a3
  +
13:58:21.607911 00:12:a5:b2:31:4d > Broadcast, ethertype ARP (0x0806), length 42: arp reply 228.37.251.13 is-at 00:12:a5:b2:31:4d
  +
13:58:21.611910 00:24:44:26:9f:fe > Broadcast, ethertype ARP (0x0806), length 42: arp reply 172.232.93.77 is-at 00:24:44:26:9f:fe
  +
13:58:21.615914 00:41:9b:91:86:43 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 84.20.17.102 is-at 00:41:9b:91:86:43
  +
13:58:21.619912 00:37:4f:2b:f4:de > Broadcast, ethertype ARP (0x0806), length 42: arp reply 40.170.168.93 is-at 00:37:4f:2b:f4:de
  +
13:58:21.624664 00:04:27:5c:f9:e4 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 210.39.51.64 is-at 00:04:27:5c:f9:e4
  +
13:58:21.627957 00:06:20:a6:c9:52 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 205.37.44.0 is-at 00:06:20:a6:c9:52
  +
</PRE>
  +
  +
На коммутаторе наблюдаю:
  +
<PRE>
  +
test# sh bridge address-table
  +
Aging time is 300 sec
  +
  +
Vlan Mac Address Port Type
  +
-------- --------------------- ------ ----------
  +
1 00:15:17:2c:a8:42 g1 dynamic
  +
201 00:04:2f:1c:e0:52 e1 dynamic
  +
201 00:04:e5:0f:e9:ee e1 dynamic
  +
201 00:0c:13:1b:38:9f e1 dynamic
  +
201 00:15:17:2c:a8:42 g1 dynamic
  +
201 00:15:3f:db:08:c7 e1 dynamic
  +
201 00:16:cc:0e:84:f7 e1 dynamic
  +
201 00:1c:23:95:8d:8b e1 dynamic
  +
201 00:20:0b:d3:22:88 e1 dynamic
  +
201 00:3a:37:a5:ca:bb e1 dynamic
  +
201 00:3c:76:0f:8c:b3 e1 dynamic
  +
201 00:3f:98:e9:98:c8 e1 dynamic
  +
</PRE>
  +
  +
При этом этот ноутбук (проводящий атаку) продолжает нормально работать до истечения времени аренды адреса. При переполучении адреса иногда возникают пролемы, что вполне естесвенно при активном arppoison с порта.
  +
  +
Считаю, что коммутатор вполне справляется с таким видом атаки.
  +
  +
===ACL===
  +
Дописать!
  +
  +
===Loopback detection===
  +
В качестве имитации петли использую коммутатор DEs-3010G в конфигурации по-умолчанию, где между портами 1 и 2 сделана петля патч-кордом.
  +
К порту 3 подключен тестовый ноутбук, порт 4 подключен к коммутатору (порт e1)
  +
<BR>
  +
На коммутаторе:
  +
<PRE>
  +
loopback-detection enable
  +
errdisable recovery interval 30
  +
errdisable recovery cause loopback-detection
  +
</PRE>
  +
  +
<PRE>
  +
interface ethernet e1
  +
loopback-detection enable
  +
exit
  +
</PRE>
  +
  +
На консоли (и в логах, соответвенно)
  +
<PRE>
  +
03-Jan-2000 16:57:03 %LINK-W-Down: e1
  +
03-Jan-2000 16:57:33 %LINK-I-Up: e1
  +
03-Jan-2000 16:57:33 %LINK-W-Down: e1
  +
03-Jan-2000 16:57:35 %LINK-I-Up: e1
  +
03-Jan-2000 16:57:35 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.
  +
  +
03-Jan-2000 16:57:35 %LINK-W-Down: e1
  +
03-Jan-2000 16:58:05 %LINK-I-Up: e1
  +
03-Jan-2000 16:58:05 %LINK-W-Down: e1
  +
03-Jan-2000 16:58:06 %LINK-I-Up: e1
  +
03-Jan-2000 16:58:06 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.
  +
  +
03-Jan-2000 16:58:06 %LINK-W-Down: e1
  +
03-Jan-2000 16:58:36 %LINK-I-Up: e1
  +
03-Jan-2000 16:58:36 %LINK-W-Down: e1
  +
03-Jan-2000 16:58:38 %LINK-I-Up: e1
  +
03-Jan-2000 16:58:38 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.
  +
</PRE>
  +
  +
===Дополнительный функционнал===
  +
  +
Не останавливаясь подробно на настройке, отмечу только что на коммутаторе полностью работоспособны:
  +
* ssh (процессора достаточно для комфортной работы)
  +
* snmp (v2 и v3)
  +
* syslog (на удаленный хост)
  +
* авторизация через radius доступа на коммутатор.
  +
* кабельный тестер (серьезным минусом считаю что требуются привилегии уровня 15 для запуска теста)
  +
<PRE>
  +
# test copper-port tdr e1
  +
03-Jan-2000 17:05:30 %LINK-W-Down: e1
  +
..
  +
Cable on port e1 is good
  +
test# 03-Jan-2000 17:05:33 %LINK-I-Up: e1
  +
</PRE>
  +
* "Китайской" SFP под рукой не оказалось, но dlink-овская работает
  +
<PRE>
  +
# 03-Jan-2000 17:05:33 %LINK-I-Up: e1
  +
03-Jan-2000 17:07:18 %Box-I-SFP-PRESENT-CHNG: unit_id 1 SFP 1 status is present.
  +
</PRE>
  +
  +
==Alied Telesyn AT-8000s/24==
  +
===DHCP Snooping + Opt. 82 + ip source guard===
  +
<PRE>
  +
Option: (t=82,l=18) Agent Information Option
  +
Option: (82) Agent Information Option
  +
Length: 18
  +
Value: 0106000400C90101020800060015775F4D60
  +
Agent Circuit ID: 000400C90101
  +
Agent Remote ID: 00060015775F4D60
  +
End Option
  +
</PRE>
  +
  +
====Конфиг DHCPd====
  +
====Конфиг коммутатора====
  +
====Проверка работы====
  +
  +
===Arppoison===
  +
  +
===Loopback detection===
  +
  +
===Дополнительный функционна===
  +
  +
==Accton Edge-Core ES-3526XA-v2==
  +
<PRE>
  +
#sh ver
  +
Serial Number: A8340XXXXX
  +
Service Tag:
  +
Hardware Version: R01
  +
EPLD Version: 0.00
  +
Number of Ports: 26
  +
Main Power Status: Up
  +
Loader Version: 1.0.0.2
  +
Boot ROM Version: 1.0.0.5
  +
Operation Code Version: 1.1.0.23
  +
</PRE>
  +
  +
  +
===DHCP Snooping + Opt. 82 + ip source guard===
  +
====Конфиг DHCPd====
  +
Конфигурация DHCPd одинаковая для всех коммутаторов.
  +
  +
====Конфиг коммутатора====
  +
Выделю только наиболее важные моменты:
  +
<PRE>
  +
ip dhcp snooping
  +
ip dhcp snooping vlan 101
  +
ip dhcp snooping vlan 102
  +
ip dhcp snooping information option
  +
  +
interface ethernet 1/1
  +
ip source-guard sip-mac
  +
switchport allowed vlan add 101 untagged
  +
switchport mode access
  +
switchport native vlan 101
  +
switchport allowed vlan remove 1
  +
switchport allowed vlan remove 4093
  +
!
  +
  +
interface ethernet 1/26
  +
ip dhcp snooping trust
  +
switchport mode trunk
  +
switchport allowed vlan add 1,101-102,4093 tagged
  +
switchport native vlan 1
  +
  +
</PRE>
  +
  +
====Проверка работы====
  +
<PRE>
  +
tshark -V ...
  +
  +
Option: (t=82,l=18) Agent Information Option
  +
Option: (82) Agent Information Option
  +
Length: 18
  +
Value: 0106000400650101020800060012CFAE2FC0
  +
Agent Circuit ID: 000400650101
  +
Agent Remote ID: 00060012CFXXXXXX
  +
End Option
  +
</PRE>
  +
В качестве Agent Remote ID выступает MAC коммутатора, что не очень удобно (удобнее использовать IP). Но в текущих версиях использование (несмотря на заявленую поддержку) пока не работает.
  +
  +
При
  +
<PRE>
  +
ip dhcp snooping information option remote-id ip-address
  +
</PRE>
  +
В пакете наблюдаем:
  +
<PRE>
  +
Agent Circuit ID: 000400650101
  +
Agent Remote ID: 010400000000
  +
</PRE>
  +
  +
===Arppoison===
  +
  +
На коммутаторе вполне работоспасобна ф-я port-security
  +
  +
<PRE>
  +
interface ethernet 1/2
  +
port security max-mac-count 10
  +
port security action trap-and-shutdown
  +
ip source-guard sip-mac
  +
switchport allowed vlan add 101 untagged
  +
switchport mode access
  +
switchport native vlan 101
  +
switchport allowed vlan remove 1
  +
switchport allowed vlan remove 4093
  +
</PRE>
  +
При попытке атаковать коммутатор arppoison ф-я security отрабатывает верно, и коммутатор перестает изучать маки на атакованом порту.
  +
  +
<PRE>
  +
Console# sh mac-address-table
  +
Interface MAC Address VLAN Type
  +
--------- ----------------- ---- -----------------
  +
Eth 1/ 2 00-01-E5-E5-E1-97 101 Learned-PSEC
  +
Eth 1/ 2 00-02-CD-15-A8-EE 101 Learned-PSEC
  +
Eth 1/ 2 00-16-EF-72-56-36 101 Learned-PSEC
  +
Eth 1/ 2 00-18-B8-9B-C2-BE 101 Learned-PSEC
  +
Eth 1/ 2 00-2D-AF-F7-7E-CC 101 Learned-PSEC
  +
Eth 1/ 2 00-30-F9-DF-12-61 101 Learned-PSEC
  +
Eth 1/ 2 00-35-F2-76-37-D3 101 Learned-PSEC
  +
Eth 1/ 2 00-37-36-27-47-2F 101 Learned-PSEC
  +
Eth 1/ 2 00-4B-19-DF-10-4F 101 Learned-PSEC
  +
Eth 1/ 2 00-4C-D8-DF-1F-6D 101 Learned-PSEC
  +
Eth 1/26 00-30-48-35-9A-11 1 Learned
  +
Eth 1/26 00-30-48-35-9A-11 101 Learned
  +
</PRE>
  +
  +
Т.е. атака arp poison не работает.
  +
{{Note|Однако, в бочке меда есть немаленькая ложка дегтя - маки, имеющие статус Learned-PSEC не очищаются до перезагрузки. Ожидается исправлеие в ближайшее время.}}
  +
  +
===ACL===
  +
ACL невозможно использовать совместно с ip source guard, т.к. на порту траффик обработаный source guard ACL уже не обрабатывается. Из этой ситуации есть 2 выхода.
  +
# Применять ACL на аплинк-портах. смирившись с тем что траффик в пределах коммутатора не контролируется полностью. Это достаточно серьезный недостаток (кроме схемы влан-на-клиента, но при использовании этой схемы нет нужды в таком дорогом коммутаторе.)
  +
# Использовать policy-map и "шейпить" нежелательный траффик до скорости 1 байт в секунду.
  +
Описание рещения с policy-map я решил в статью не включать, подробнее [http://wiki.sirmax.noname.com.ua/index.php/Accton_Edge_Core_ES_3526XA#ACL здесь]
  +
  +
Кроме как "черезжопным" такое решение я назвать не могу.
  +
  +
===Loopback detection===
  +
Данный функционал в коммутаторе отсутвует.
  +
  +
===Дополнительный функционал===
  +
На коммутаторе работоспособны:
  +
* ssh (работа не очень комфортная, но заметно лучше чем у DES-3526)
  +
* snmp (v2) При настройке snmp v3 у меня возникли проблемы, я не смог добиться шифрования всего траффика.
  +
* syslog (на удаленный хост)
  +
* авторизация через radius доступа на коммутатор. (в текущей ыерсии не полнофункционально, не удалось настроить доступ с разным уровнем привилегий)
  +
  +
==Dlink DES-3526==
  +
===DHCP Snooping + Opt. 82 + ip source guard===
  +
Не вижу смысла подробно останавливаться на этом коммутаторе. Весь заявленный функционал на нем работает. Некоторые шероховатости прошивок исправляются. Большая часть уже исправлена.<BR>
  +
Из особенностй отмечу
  +
* Возможность задать произвольную строку в качестве Remote ID. Очень удобно, но не критично.
  +
* При использовании нужно выставлять небольшой Lease-Time т.к. при значениях от 20 минут и выше, записи в таблице ip-mac-port могут удаляться до истечения Lease-Time. По опыту использования, Lease-Time=5 минут полностью решает эту проблему.
  +
* Иногода возникает "размножение" DHCP-пакетов. Фактически, пакет перехватывается коммутатором, и отправляется на DHCP-Relay, при этом оригинальный пакет коммутируется без изменений. Это приводит к тому, что на DHCP-сервер приходят несколько пакетов (Relay сработает и на других коммутаторах сегмента на uplink-портах). Это может привести к тому, что клиент не сможет получит адрес. Проблема носит "плавающий" характер, и производитель работает над исправленим. (информация о работах получена от Ивана Демина)
  +
* dhcp-relay включается глобально на коммутаторе для всех портов и вланов, что является серьезным минусом при наличии, например, транзитных вланов.
  +
* При большом числе абонентов (10+) на одном порту (например, неуправляемый сегмент) большая нагрузка на CPU не позволяет использовать этот функционал.
  +
  +
===Arppoison===
  +
В новых версиях прошивки (6-я ветка) есть средсва защиты.
  +
<PRE>
  +
config address_binding ip_mac ports 1 stop_learning_threshlod 10
  +
</PRE>
  +
Однако это требует ручной очистки в случае переполнения.
  +
<PRE>
  +
config address_binding recover_learning ports 1
  +
</PRE>
  +
  +
Учитывая, что комутатор делает соответвующюю запись в лог, я не считаю это необходимость очистки проблемой, т.к. можно использовать триггер на событие сислога.
  +
===ACL===
  +
Наиболее качественная реализация ACL. Возможность создавать правила по содержимому пакету позволяет создавать фильтры любой сложности.
  +
Из минусов могу отметить, что часть функционала использует ACL и иногда числа правил может оказаться недостаточно. Я с таким не сталкивался, правда.
  +
  +
===Loopback detection===
  +
Работатет отлично,проверено длительным использованием в сети из 15000 абонентов.
  +
  +
===Дополнительный функционнал===
  +
  +
Не останавливаясь подробно на настройке, отмечу только что на коммутаторе полностью работоспособны:
  +
* ssh (но работа некомфортная)
  +
* snmp (v2 и v3)
  +
* syslog (на удаленный хост)
  +
* авторизация через radius доступа на коммутатор.
  +
* кабельный тестер. С определением длинны кабеля. Не требует привилегий администратора.
  +
* Официально поддерживаются любые SFP
  +
==Cisco (Linksys) SPS 224G4==
  +
Судя по конфигу и процессу загрузки, коммутатор очень похож на Lucent и AT, с точностью до некоторго функционала. Останавливаться на настройке подробно смысла нет.
  +
===DHCP Snooping + Opt. 82 + ip source guard===
  +
Конфигурация полностью аналогична.
  +
===Arppoison===
  +
Port-Security работает нормально, переполнения таблицы коммутации не происходит
  +
порт-секюрити отрабатывает
  +
===Loopback detection===
  +
Отсутвует.
  +
===Дополнительный функционна===
  +
Полностью аналогично AT и Люцентам.
  +
Откабельного тестера мне не удалось добиться длинны кабеля.
  +
Однако, в процессе тестирования коммутатор перезагрузился с сообщением
  +
<PRE>
  +
sps224g4# 21-Nov-2008 12:11:51 %3SWCOS-F-PCLADDPCEBLOCK: Function SW3C_pcl_common_del_pce: TAPI error - failed to add PCE block, code Illegal parameter in function called
  +
</PRE>

Текущая версия на 09:04, 7 октября 2020

Сравнение коммутаторов.

В связи с тем, что у меня закончились запасы DES-35{26|50}, остро встал вопрос о замене. Из кандидатов на замену:

  • Alcatel-Lucent LS-6224
  • Dlink DES -3028 (у меня его нет в наличии, вместо него вцелом аналогичный DES-3526 - тесты делались много раз.)
  • Alied Telesyn AT-8000S
  • Accton Edge-Core ES-3528XA-v2


К сожалению, я не имею информации о закупочных ценах, но по моим данным самый дешевый и коммутаторов - Accton Edge-Core ES-3528XA-v2
Все коммутаторы имеют 24 порта 10/100 и 2-4 порта combo.


Необходимый функционал

Совершенно необходимым для коммутатора уровня доступа я считаю:

  1. DHCP Snooping
  2. Option 82 Insertion
  3. ACL (фильтрация на уровне номера порта tcp/udp и номеров протоколов ip считаю вполне достаточной)
  4. VLAN (число 64 считаю вполне достаточно для коммуттатора который не планируется как транзитный)
  5. IP Source Guard (ф-я может называться по разному в зависимости от вендора)
  6. Loopback detect
  7. Port Security
  8. Storm Control
  9. MSTP с возможностью полной блокировки любых STP-пакетов на клиентских портах. (этот момент сомнителен, коммутаторы на доме почти всегда имеют только один аплинк)

Описанный функционал вытекает из того факта, что используется схема влан-на-группу-домов. Это с одной стороны, позволяет разгрузить агрегатоы (недешевые), с другой - налагает повышенные требования на коммутаторы досупа. Дискуссия о достоинствах или недостатоках этой схемы перед схемой влан-на-абонента выходит за пределы этой статьи.

Функционал, который желателен но обязательным не является

  1. Авторизация доступа на коммутатор с использованием RADIUS-сервера. С разграничением полномочий для предоставления досупа низкоквалифицированному персоналу без возможности внесения изменений в конфигурацию.
  2. Кабельный тестер
  3. Возможность снимать информацию о маках коммутатора и о состояни DHCP Snooping database по SNMP
  4. SNMP v3, ssh (вместо телнета), ACL на интерфейс управления коммутатором, получение времени по ntp, пересылка сообщений на удаленный syslog.
  5. Поддержка "китайских" SFP. (Возиться с программатором безплатно не хочется.)

Отдельно отмечу, что на данный момент работа с мультикастом не требуется, и в связи с полным отсутвием опыта у меня в этой области, от тестирования пока отказался.

Тесты

Определяю базовый набор тестов.

  • Получения ip адреса тестовым компьютером на основе данных коммутатор-влан-порт.
  • Проверка работы IP Source Guard.
  • Проверка работы ACL
  • Атака Arppoison на коммутатор с "клиентского" порта.
  • Проверка работы Loopback Detect
  • Проверка работы Broadcast Storm Control (как?)

ALcatel-Lucent LS-6224

у меня для теста достался следующий коммутатор:

test#  sh ver
SW version    1.5.1.7 ( date  26-Feb-2008 time  17:04:09 )
Boot version    1.0.0.12 ( date  19-Oct-2006 time  09:07:37 )
HW version    00.00.01

DHCP Snooping + Opt. 82 + ip source guard

Конфиг DHCPd

Кофигурирую DHCPd (максимально простой конфиг):

...
class "port-1"
{
   match if (
        binary-to-ascii(10, 16, "",  substring(option agent.circuit-id, 2, 2)) = "201"
        and
        binary-to-ascii(10, 8, "/",  suffix(option agent.circuit-id, 1)) = "1"
    );

}
...



shared-network "clients" {
    subnet 172.16.253.0 netmask 255.255.255.252 { }

    subnet 10.200.0.0 netmask 255.255.0.0 {
        option subnet-mask 255.255.0.0;
        option broadcast-address 10.200.255.255;
        option routers 10.200.0.1;


        pool {
        range 10.200.0.2;
        allow members of "port-1";
        }

        pool {
    }

}

Конфиг коммутатора

Наиболее важные моменты в конфигурации коммутатора:

interface range ethernet e(1-24)
 dot1x multiple-hosts
 security mode max-addresses
 port security max 10
 port security discard
 switchport access vlan 201
 loopback-detection enable
 service-acl input test2
 ip source-guard
exit 


ip dhcp snooping
ip dhcp snooping vlan 201

interface ethernet g1
 ip dhcp snooping trust
exit

ip source-guard
ip source-guard tcam retries-freq 600

interface vlan 1
 ip address 172.16.253.2 255.255.255.0
exit

ip default-gateway 172.16.253.1

ip access-list test2
 permit any 10.200.0.0 0.0.255.255 10.200.0.1 0.0.0.0
 permit any 10.199.0.0 0.0.255.255 10.199.0.1 0.0.0.0
 deny any 10.200.0.0 0.0.255.255 any
 deny any 10.199.0.0 0.0.255.255 any
 permit any any any
exit

hostname test
ip ssh server

Проверка работы

При запросе DHCP от клиента в Vlan201 вижу:

... поскипано ...
    Option: (t=82,l=18) Agent Information Option
        Option: (82) Agent Information Option
        Length: 18
        Value: 0106000400C90101020800060012CF84D420
        Agent Circuit ID: 000400C90101
        Agent Remote ID: 00060012CFXXXXXX
    End Option

Где Agent Circuit ID: 00C90101 Значение Circuit ID побайтно:00 04 00C9 01 01

00 - Тип Circit ID (Всегда 0?) (1 байт, смещение 0)
04 - Длинна (констаната? почему такое значение?) (1 байт, смещение 1)
00C9 - VLAN ID (2 байта, смещение 2)
01 - Stack/Module ID (0 или 1 у stand-alone switch) 1 байт, смещение 4
01 - Port (1 байт, смещение 5)

Очевидно, что вставка Opt. 82 работает. Пробую переключь DHCP-сервер в другой порт (g2) и включаю его как не-доверительный.

interface ethernet g2
 no ip dhcp snooping trust
exit

После истечения времени аренды связь с тестовым хостом пропадает. При обратном переключении - восстанавливается.

sh ip dhcp snooping binding
Total number of binding: 1

   MAC Adreess       IP Address    Lease (sec)     Type    VLAN Interface
------------------ --------------- ------------ ---------- ---- ----------
00:1c:23:95:8d:8b  10.200.0.2      46           learned    201  e1

ip source guard и ACL работают так как и описано в документации без всяких "но". Попытка поставить ip адрес руками а не использовать автоматическое получение приводит к неработоспособности сети (что и требовалось).

Arppoison

Для атаки Arppoison использую одноименную утилиту из пакета arptools Т.к. коммутатор поддерживает port-security то во избежание переполнения таблицы коммутации ограниваю число маков на порту до 10

interface range ethernet e(1-24)
 dot1x multiple-hosts
 security mode max-addresses
 port security max 10
 port security discard
exit 

Запускаю arppoison (собрано на ноутбуке Dell, ASP linux неважно-какой-версии). Судя по tcpdump на порт коммутатора приходят пакеты со слчайными маками ...

#tcpdump -n arp -e
...
13:58:21.583911 00:2a:d4:74:c6:2e > Broadcast, ethertype ARP (0x0806), length 42: arp reply 223.134.179.92 is-at 00:2a:d4:74:c6:2e
13:58:21.587912 00:00:97:f6:a6:e6 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 206.27.51.62 is-at 00:00:97:f6:a6:e6
13:58:21.591910 00:4d:8b:2a:b9:a4 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 146.94.241.33 is-at 00:4d:8b:2a:b9:a4
13:58:21.595914 00:31:c4:b3:a7:29 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 100.146.34.25 is-at 00:31:c4:b3:a7:29
13:58:21.599913 00:03:70:44:8e:54 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 111.35.176.20 is-at 00:03:70:44:8e:54
13:58:21.603909 00:16:db:ec:bd:a3 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 111.213.245.11 is-at 00:16:db:ec:bd:a3
13:58:21.607911 00:12:a5:b2:31:4d > Broadcast, ethertype ARP (0x0806), length 42: arp reply 228.37.251.13 is-at 00:12:a5:b2:31:4d
13:58:21.611910 00:24:44:26:9f:fe > Broadcast, ethertype ARP (0x0806), length 42: arp reply 172.232.93.77 is-at 00:24:44:26:9f:fe
13:58:21.615914 00:41:9b:91:86:43 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 84.20.17.102 is-at 00:41:9b:91:86:43
13:58:21.619912 00:37:4f:2b:f4:de > Broadcast, ethertype ARP (0x0806), length 42: arp reply 40.170.168.93 is-at 00:37:4f:2b:f4:de
13:58:21.624664 00:04:27:5c:f9:e4 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 210.39.51.64 is-at 00:04:27:5c:f9:e4
13:58:21.627957 00:06:20:a6:c9:52 > Broadcast, ethertype ARP (0x0806), length 42: arp reply 205.37.44.0 is-at 00:06:20:a6:c9:52

На коммутаторе наблюдаю:

test# sh bridge address-table
Aging time is 300 sec

  Vlan        Mac Address       Port     Type
-------- --------------------- ------ ----------
   1       00:15:17:2c:a8:42     g1    dynamic
  201      00:04:2f:1c:e0:52     e1    dynamic
  201      00:04:e5:0f:e9:ee     e1    dynamic
  201      00:0c:13:1b:38:9f     e1    dynamic
  201      00:15:17:2c:a8:42     g1    dynamic
  201      00:15:3f:db:08:c7     e1    dynamic
  201      00:16:cc:0e:84:f7     e1    dynamic
  201      00:1c:23:95:8d:8b     e1    dynamic
  201      00:20:0b:d3:22:88     e1    dynamic
  201      00:3a:37:a5:ca:bb     e1    dynamic
  201      00:3c:76:0f:8c:b3     e1    dynamic
  201      00:3f:98:e9:98:c8     e1    dynamic

При этом этот ноутбук (проводящий атаку) продолжает нормально работать до истечения времени аренды адреса. При переполучении адреса иногда возникают пролемы, что вполне естесвенно при активном arppoison с порта.

Считаю, что коммутатор вполне справляется с таким видом атаки.

ACL

Дописать!

Loopback detection

В качестве имитации петли использую коммутатор DEs-3010G в конфигурации по-умолчанию, где между портами 1 и 2 сделана петля патч-кордом. К порту 3 подключен тестовый ноутбук, порт 4 подключен к коммутатору (порт e1)
На коммутаторе:

loopback-detection enable
errdisable recovery interval 30
errdisable recovery cause loopback-detection
interface ethernet e1
 loopback-detection enable
exit

На консоли (и в логах, соответвенно)

03-Jan-2000 16:57:03 %LINK-W-Down:  e1
03-Jan-2000 16:57:33 %LINK-I-Up:  e1
03-Jan-2000 16:57:33 %LINK-W-Down:  e1
03-Jan-2000 16:57:35 %LINK-I-Up:  e1
03-Jan-2000 16:57:35 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.

03-Jan-2000 16:57:35 %LINK-W-Down:  e1
03-Jan-2000 16:58:05 %LINK-I-Up:  e1
03-Jan-2000 16:58:05 %LINK-W-Down:  e1
03-Jan-2000 16:58:06 %LINK-I-Up:  e1
03-Jan-2000 16:58:06 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.

03-Jan-2000 16:58:06 %LINK-W-Down:  e1
03-Jan-2000 16:58:36 %LINK-I-Up:  e1
03-Jan-2000 16:58:36 %LINK-W-Down:  e1
03-Jan-2000 16:58:38 %LINK-I-Up:  e1
03-Jan-2000 16:58:38 %NT_LBD-I-PORT_SUSPENDED: Port e1 suspended by Loopback Detection.

Дополнительный функционнал

Не останавливаясь подробно на настройке, отмечу только что на коммутаторе полностью работоспособны:

  • ssh (процессора достаточно для комфортной работы)
  • snmp (v2 и v3)
  • syslog (на удаленный хост)
  • авторизация через radius доступа на коммутатор.
  • кабельный тестер (серьезным минусом считаю что требуются привилегии уровня 15 для запуска теста)
# test copper-port tdr e1
03-Jan-2000 17:05:30 %LINK-W-Down:  e1
..
Cable on port e1 is good
test# 03-Jan-2000 17:05:33 %LINK-I-Up:  e1
  • "Китайской" SFP под рукой не оказалось, но dlink-овская работает
# 03-Jan-2000 17:05:33 %LINK-I-Up:  e1
03-Jan-2000 17:07:18 %Box-I-SFP-PRESENT-CHNG: unit_id 1 SFP 1 status is present.

Alied Telesyn AT-8000s/24

DHCP Snooping + Opt. 82 + ip source guard

    Option: (t=82,l=18) Agent Information Option
        Option: (82) Agent Information Option
        Length: 18
        Value: 0106000400C90101020800060015775F4D60
        Agent Circuit ID: 000400C90101
        Agent Remote ID: 00060015775F4D60
    End Option

Конфиг DHCPd

Конфиг коммутатора

Проверка работы

Arppoison

Loopback detection

Дополнительный функционна

Accton Edge-Core ES-3526XA-v2

#sh ver
 Serial Number:           A8340XXXXX
 Service Tag:
 Hardware Version:        R01
 EPLD Version:            0.00
 Number of Ports:         26
 Main Power Status:       Up
 Loader Version:          1.0.0.2
 Boot ROM Version:        1.0.0.5
 Operation Code Version:  1.1.0.23


DHCP Snooping + Opt. 82 + ip source guard

Конфиг DHCPd

Конфигурация DHCPd одинаковая для всех коммутаторов.

Конфиг коммутатора

Выделю только наиболее важные моменты:

ip dhcp snooping
ip dhcp snooping vlan 101
ip dhcp snooping vlan 102
ip dhcp snooping information option

interface ethernet 1/1
 ip source-guard sip-mac
 switchport allowed vlan add 101 untagged
 switchport mode access
 switchport native vlan 101
 switchport allowed vlan remove 1
 switchport allowed vlan remove 4093
!

interface ethernet 1/26
 ip dhcp snooping trust
 switchport mode trunk
 switchport allowed vlan add 1,101-102,4093 tagged
 switchport native vlan 1

Проверка работы

tshark -V ...

    Option: (t=82,l=18) Agent Information Option
        Option: (82) Agent Information Option
        Length: 18
        Value: 0106000400650101020800060012CFAE2FC0
        Agent Circuit ID: 000400650101
        Agent Remote ID: 00060012CFXXXXXX
    End Option

В качестве Agent Remote ID выступает MAC коммутатора, что не очень удобно (удобнее использовать IP). Но в текущих версиях использование (несмотря на заявленую поддержку) пока не работает.

При

ip dhcp snooping information option remote-id ip-address

В пакете наблюдаем:

        Agent Circuit ID: 000400650101
        Agent Remote ID: 010400000000

Arppoison

На коммутаторе вполне работоспасобна ф-я port-security

interface ethernet 1/2
 port security max-mac-count 10
 port security action trap-and-shutdown
 ip source-guard sip-mac
 switchport allowed vlan add 101 untagged
 switchport mode access
 switchport native vlan 101
 switchport allowed vlan remove 1
 switchport allowed vlan remove 4093

При попытке атаковать коммутатор arppoison ф-я security отрабатывает верно, и коммутатор перестает изучать маки на атакованом порту.

Console# sh mac-address-table
 Interface MAC Address       VLAN Type
 --------- ----------------- ---- -----------------
  Eth 1/ 2 00-01-E5-E5-E1-97  101 Learned-PSEC
  Eth 1/ 2 00-02-CD-15-A8-EE  101 Learned-PSEC
  Eth 1/ 2 00-16-EF-72-56-36  101 Learned-PSEC
  Eth 1/ 2 00-18-B8-9B-C2-BE  101 Learned-PSEC
  Eth 1/ 2 00-2D-AF-F7-7E-CC  101 Learned-PSEC
  Eth 1/ 2 00-30-F9-DF-12-61  101 Learned-PSEC
  Eth 1/ 2 00-35-F2-76-37-D3  101 Learned-PSEC
  Eth 1/ 2 00-37-36-27-47-2F  101 Learned-PSEC
  Eth 1/ 2 00-4B-19-DF-10-4F  101 Learned-PSEC
  Eth 1/ 2 00-4C-D8-DF-1F-6D  101 Learned-PSEC
  Eth 1/26 00-30-48-35-9A-11    1 Learned
  Eth 1/26 00-30-48-35-9A-11  101 Learned

Т.е. атака arp poison не работает.

Note: Однако, в бочке меда есть немаленькая ложка дегтя - маки, имеющие статус Learned-PSEC не очищаются до перезагрузки. Ожидается исправлеие в ближайшее время.

ACL

ACL невозможно использовать совместно с ip source guard, т.к. на порту траффик обработаный source guard ACL уже не обрабатывается. Из этой ситуации есть 2 выхода.

  1. Применять ACL на аплинк-портах. смирившись с тем что траффик в пределах коммутатора не контролируется полностью. Это достаточно серьезный недостаток (кроме схемы влан-на-клиента, но при использовании этой схемы нет нужды в таком дорогом коммутаторе.)
  2. Использовать policy-map и "шейпить" нежелательный траффик до скорости 1 байт в секунду.

Описание рещения с policy-map я решил в статью не включать, подробнее здесь

Кроме как "черезжопным" такое решение я назвать не могу.

Loopback detection

Данный функционал в коммутаторе отсутвует.

Дополнительный функционал

На коммутаторе работоспособны:

  • ssh (работа не очень комфортная, но заметно лучше чем у DES-3526)
  • snmp (v2) При настройке snmp v3 у меня возникли проблемы, я не смог добиться шифрования всего траффика.
  • syslog (на удаленный хост)
  • авторизация через radius доступа на коммутатор. (в текущей ыерсии не полнофункционально, не удалось настроить доступ с разным уровнем привилегий)

Dlink DES-3526

DHCP Snooping + Opt. 82 + ip source guard

Не вижу смысла подробно останавливаться на этом коммутаторе. Весь заявленный функционал на нем работает. Некоторые шероховатости прошивок исправляются. Большая часть уже исправлена.
Из особенностй отмечу

  • Возможность задать произвольную строку в качестве Remote ID. Очень удобно, но не критично.
  • При использовании нужно выставлять небольшой Lease-Time т.к. при значениях от 20 минут и выше, записи в таблице ip-mac-port могут удаляться до истечения Lease-Time. По опыту использования, Lease-Time=5 минут полностью решает эту проблему.
  • Иногода возникает "размножение" DHCP-пакетов. Фактически, пакет перехватывается коммутатором, и отправляется на DHCP-Relay, при этом оригинальный пакет коммутируется без изменений. Это приводит к тому, что на DHCP-сервер приходят несколько пакетов (Relay сработает и на других коммутаторах сегмента на uplink-портах). Это может привести к тому, что клиент не сможет получит адрес. Проблема носит "плавающий" характер, и производитель работает над исправленим. (информация о работах получена от Ивана Демина)
  • dhcp-relay включается глобально на коммутаторе для всех портов и вланов, что является серьезным минусом при наличии, например, транзитных вланов.
  • При большом числе абонентов (10+) на одном порту (например, неуправляемый сегмент) большая нагрузка на CPU не позволяет использовать этот функционал.

Arppoison

В новых версиях прошивки (6-я ветка) есть средсва защиты.

config address_binding ip_mac ports 1 stop_learning_threshlod 10 

Однако это требует ручной очистки в случае переполнения.

config address_binding recover_learning ports 1

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

ACL

Наиболее качественная реализация ACL. Возможность создавать правила по содержимому пакету позволяет создавать фильтры любой сложности. Из минусов могу отметить, что часть функционала использует ACL и иногда числа правил может оказаться недостаточно. Я с таким не сталкивался, правда.

Loopback detection

Работатет отлично,проверено длительным использованием в сети из 15000 абонентов.

Дополнительный функционнал

Не останавливаясь подробно на настройке, отмечу только что на коммутаторе полностью работоспособны:

  • ssh (но работа некомфортная)
  • snmp (v2 и v3)
  • syslog (на удаленный хост)
  • авторизация через radius доступа на коммутатор.
  • кабельный тестер. С определением длинны кабеля. Не требует привилегий администратора.
  • Официально поддерживаются любые SFP

Cisco (Linksys) SPS 224G4

Судя по конфигу и процессу загрузки, коммутатор очень похож на Lucent и AT, с точностью до некоторго функционала. Останавливаться на настройке подробно смысла нет.

DHCP Snooping + Opt. 82 + ip source guard

Конфигурация полностью аналогична.

Arppoison

Port-Security работает нормально, переполнения таблицы коммутации не происходит порт-секюрити отрабатывает

Loopback detection

Отсутвует.

Дополнительный функционна

Полностью аналогично AT и Люцентам. Откабельного тестера мне не удалось добиться длинны кабеля. Однако, в процессе тестирования коммутатор перезагрузился с сообщением

sps224g4# 21-Nov-2008 12:11:51 %3SWCOS-F-PCLADDPCEBLOCK: Function SW3C_pcl_common_del_pce: TAPI error - failed to add PCE block, code Illegal parameter in function called