Accton Edge Core ES 3526XA

Материал из Wiki
Перейти к: навигация, поиск


Accton Edge-Core ES-3526XA

Цель статьи - описатьпроцедуру тестирования коммутатора Accton Edge-Core ES-3526XA. Планируется как замена Dlink DES-3526.
Необходимый функционал

  1. IP source Guard + DHCP Snooping + Otion 82 (Выдавать IP на основании порта коммутатора и запретить все IP кроме полученных по DHCP)
  2. ACL (Разрешить для неавторизованных IP только доступ на портал абонента)
  3. VLAN, SNMP - более менее стандартный функционал L2-коммутаторов.

Загрузка

Наблюдаю загрузку (9600 8N1) с консоли.

Image Loader 1.0.0.2
Loading Diagnostic Image File : ES3526XA-V2_DIAG_1005.bix
Diagnostic 1.0.0.5


--- Performing Power-On Self Tests (POST) ---
DUMMY Test 1 ................. PASS
UART Loopback Test ........... PASS
DRAM Test .................... PASS
I2C Bus Initialization ....... PASS
Done All Pass.
------------------ DONE ---------------------

Loading Runtime Image File : ES3526XA_ES3510_V11022.bix
Runtime 1.1.0.22
root init done

[get stackingMac done ret_val] = 1
Assigned Unit ID:[1]
stacking DB: unit = 0, module type = 0

Set Transition mode ...
Finish Set Transition mode ...
Enter Transition mode ...
Finish Transition mode ...
Enter Master mode ...
Load certificate files : Starting
Load certificate files : Finished

Finish Master mode ...

Performing startup provision ...

.............................................................................................................................................................................................................
Notify provision complete

CLI provision has been completed


Provision Complete ...
Finish Provision Complete ...
[get stackingMac done ret_val] = 1
***************************************************************

WARNING - MONITORED ACTIONS AND ACCESSES



Station's information:


Floor / Row / Rack / Sub-Rack
 /  /  /
DC power supply:
Power Source A: Floor / Row / Rack / Electrical circuit
 /  /  /

Number of LP:
Position MUX:
IP LAN:
Note:
**********************************



User Access Verification

Username:

Обновление Firmware

Сразу же обновляю firmware:

Console#dir
          File name                        File type       Startup Size (byte)
 -------------------------------------     --------------  ------- -----------
 Unit1:
          ES3526XA-V2_DIAG_1005.bix        Boot-Rom Image  Y           305512
          ES3526XA_ES3510_V11022.bix       Operation Code  Y          3076624
          Factory_Default_Config.cfg       Config File     N              542
          startup1.cfg                     Config File     Y             5572
          y                                Config File     N             5437
 ---------------------------------------------------------------------------
                                                  Total free space:   3276800
Console#copy tftp file
TFTP server IP address: 192.168.95.22
Choose file type:
 1. config:  2. opcode: <1-2>: 2
Source file name: ES3526XA_ES3510_V11023.bix
Destination file name: ES3526XA_ES3510_V11023.bix
Write to FLASH Programming.
Write to FLASH finish.
Success.

Выбираю новый софт как загружаемый по-умолчанию

Console(config)#boot system opcode:ES3526XA_ES3510_V11023.bix
Success.

Наблюдаю загрузку нового софта:

Loading Runtime Image File : ES3526XA_ES3510_V11023.bix

Настройка

CLI вцелом cisco-like, но это пожалуй самый неудобный в настройке коммутатор из тех с которыми мне приходилось иметь дело. Возможно, дело привычки.

DHCP Relay

Настройка коммутатора

Настройка достаточно простоа и аналогична другим коммутаторам (AT-8000S, Lucent LS-62..., DES- ...)

ip dhcp relay information option
ip dhcp relay information option remote-id ip-address
ip dhcp relay information policy replace
 IP DHCP relay server 172.16.251.1

Однако, отмечу что в пакете в качестве Remote-ID содержиться не ip а какой-то мусор. На данный момент у меня нет ответа от поставщика как расшифровать remote-id.


Настойка DHCPd

tshark -V -n  ...
Вот пример пакета (только option 82)
Bootstrap Protocol
    Message type: Boot Reply (2)
    Hardware type: Ethernet
    Hardware address length: 6
    Hops: 1
    Transaction ID: 0xa5ee3a70
    Seconds elapsed: 0
    Bootp flags: 0x8000 (Broadcast)
        1... .... .... .... = Broadcast flag: Broadcast
        .000 0000 0000 0000 = Reserved flags: 0x0000
    Client IP address: 0.0.0.0 (0.0.0.0)
    Your (client) IP address: 192.168.199.2 (192.168.199.2)
    Next server IP address: 0.0.0.0 (0.0.0.0)
    Relay agent IP address: 172.16.251.2 (172.16.251.2)
    Client MAC address: 00:1c:23:95:8d:8b (00:1c:23:95:8d:8b)
    Server host name not given
    Boot file name not given
    Magic cookie: (OK)
    Option: (t=53,l=1) DHCP Message Type = DHCP Offer
        Option: (53) DHCP Message Type
        Length: 1
        Value: 02
    Option: (t=54,l=4) Server Identifier = 172.16.251.1
        Option: (54) Server Identifier
        Length: 4
        Value: AC10FB01
    Option: (t=51,l=4) IP Address Lease Time = 8 hours, 36 minutes, 40 seconds
        Option: (51) IP Address Lease Time
        Length: 4
        Value: 00007918
    Option: (t=1,l=4) Subnet Mask = 255.255.255.0
        Option: (1) Subnet Mask
        Length: 4
        Value: FFFFFF00
    Option: (t=3,l=4) Router = 192.168.199.254
        Option: (3) Router
        Length: 4
        Value: C0A8C7FE
    Option: (t=6,l=8) Domain Name Server
        Option: (6) Domain Name Server
        Length: 8
        Value: C1213021C12130A0
        IP Address: 193.33.48.33
        IP Address: 193.33.48.160
    Option: (t=82,l=16) Agent Information Option
        Option: (82) Agent Information Option
        Length: 16
        Value: 01060004006501010206010400000000
        Agent Circuit ID: 000400650101
        Agent Remote ID: 010400000000
    End Option
    Padding

Первое впечатление, что формат Circuit ID анлогичен Dlink DES-3526 и другим коммутаторам (Если есть стандарт то хорошо бы найти докумнтацию)

Значение Circuit ID побайтно:00 04 0065 01 01

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


Конфиг сервера аналогичен.
Простой пример:

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


Для логов использую следующюю конструкцию:

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)), " , 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))));

    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-i

В логах наблюдаю успешную выдачу IP

anarxist dhcpd: DHCPDISCOVER from 00:1c:ХХ:ХХ:ХХ:ХХ (tester) via 172.16.251.2
anarxist dhcpd: DHCPOFFER on 192.168.199.2 to 00:1c:ХХ:ХХ:ХХ:ХХ (tester) via 172.16.251.2
anarxist dhcpd: Lease for 192.168.199.2 is connected to interface 1/1 , VLAN 101 on switch 0:0:0:0
anarxist dhcpd: Lease for 192.168.199.2 raw option-82 info is CID: 0.4.0.101.1.1 AID: 1.4.0.0.0.0

DHCP Snooping

При настройке DHCP Snopping мне удалось вызвать зависание коммутатора.
Пробую настроить согласно инструкции Монблана

ip dhcp snooping
ip dhcp snooping vlan 101
ip dhcp snooping information option
ip dhcp snooping information policy replace
Note: Предварительно отключить dhcp-relay, иначе - не работает


Настраиваю trusted-порты:

interface ethernet 1/25
 ip dhcp snooping trust
exit

interface ethernet 1/26
ip dhcp snooping trust
exit

Смотрю статус:

sh ip dhcp snooping
Global DHCP Snooping status: enable
DHCP Snooping Information Option Status: disable
DHCPSNP_MGR_GetInformationRidMode:3639
DHCPSNP_MGR_GetInformationRidMode:3646
DHCPSNP_MGR_GetInformationRidMode:3653
DHCPSNP_MGR_GetInformationRidMode:3655
DHCPSNP_MGR_GetInformationRidMode:3663
DHCPSNP_MGR_GetInformationRidMode:3666
DHCP Snooping Information Option Remote ID: mac address
DHCP Snooping Information Policy: replace
DHCP Snooping is configured on the following VLANs:
 102,
Verify Source Mac-Address: enable
Interface           Trusted
----------          ----------
Eth 1/1             No
...
Eth 1/25            Yes
Eth 1/26            Yes


Пробую посмотреть связки ip-мак-порт:

Console#sh ip dhcp snooping binding
MacAddress        IpAddress       Lease(sec) Type                 VLAN Interface
----------------- --------------- ---------- -------------------- ---- ---------
00-1c-23-95-8d-8b 192.168.199.2           35 dhcp-snooping         101 Eth 1/1

Удобно что при получении пакета коммутатор выдает сообщение на консоль. К сожалению, это сообщение не записывается в лог и не пересылаются на удаленный syslog-server, и они не слишком информативны. Но, в других коммутаторах нет и таких =)

#DHCPSNP_ENGINE_InsertOption82AndForward:2826

IP Source Guard

IP Source Guard - функционал который позволяет блокировать все src-ip (и мак?) кроме выданных по DHCP. Весьма полезный функционал совместно с Option 82 insertion и DHCP Snooping.

На коммутаторе:

interface ethernet 1/1
 ip source-guard sip-mac
exit

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

ACL

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

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

На втором способе остановлюсь чуть подробнее.

Для примера, рассмотрим следующюю ситуацию: Клиент может получать ip адрес из 3-х различных пулов в зависимости от состояния счета.
Пусть это будут пулы

  • 10.199.0.0 /24 для "неплатильщиков"
  • 10.200.0.0 /24 для "неавторизованных"

Для "неплатильщиков" нужно разрешить только хост 192.168.95.22 где запущен соответвующим образом настроенный ДНС и веб-сервер с сообщением о долге, а для "неавторизованных" разрешить хост 10.199.0.100 где, соответвенно, запущен сервис авторизации. Самбу запретить для всех.

Для этого пришлось применить следужщюю конструкцию:

access-list IP extended m4
 permit 10.199.0.0 255.255.0.0 host 10.199.0.100
 permit 10.200.0.0 255.255.0.0 host 192.168.95.22
 deny 10.199.0.0 255.255.0.0 any
 deny 10.200.0.0 255.255.0.0 any
 deny TCP any any destination-port 135 135
 deny TCP any any destination-port 137 137
 deny TCP any any destination-port 138 138
 deny TCP any any destination-port 139 139
 deny TCP any any destination-port 445 445
 deny UDP any any destination-port 135 135
 deny UDP any any destination-port 137 137
 deny UDP any any destination-port 138 138
 deny UDP any any destination-port 139 139
!
class-map m4 match-any
 match access-list m4
 exit
!
!
policy-map m4
 class m4
  set cos 0
  police 1 64 exceed-action drop
  exit
 exit
!
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
 service-policy input m4
!
Note: Особо отмечу, что policy-map заработали корректно только после перезагрузки коммутатора

Port Security

На коммутаторе вполне работоспасобна ф-я 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
 service-policy input m4

При попытке атаковать коммутатор (утилита arppoison из пакета arptools) ф-я 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 не очищаются до перезагрузки. Ожидается исправлеие в ближайшее время.

Выводы (+ToDo)

Плюсы:

  1. Рабочий DHCP-snooping с поддержкой Option 82 insertion.
  2. Рабочий IP Source-Guard


Минусы

  1. Нет способа очистки маков изученных при включении port-security

Выводы: