Приветствую!
Было дело поторопился я, сказав здесь
http://forum.dlink.ru/viewtopic.php?f=2&t=147707, что DGS3200 с MBAC справляется на отлично...
Есть свитчи DGS3200-10 (Firmware Version : Build 2.20.B003), которые используются для аутентификации пользователей по МАСу в режиме Host-Based. Данные аутентификации свитчи берут с Radiusa. От туда же берутся и номера VLAN, в который нужно засунуть МАС, если он прошел авторизацию. Если МАС не прошел авторизацию, он попадает в гостевой влан с номером 999.
Стали замечать, что время от времени люди стали жаловаться на неработоспособность сети. Проверили и выяснилось, что свитч при авторизации номер VLAN не назначает. Вот вывод таблицы(отредактировано мной, убрано большинство нормально прошедших авторизацию МАСов, чтобы не засорять...). Все, кроме 999 - это пользовательские VLAN.
Port MAC Address Original State VID Prio Aging Time/
RX VID Block Time
------ -------------------- ---- -------------- ---- ---- -----------
1 00-22-15-B1-F0-E2 999 Blocked - - 267
1 00-23-54-55-F4-F1 999 Authenticated 1232 - 467
1 00-25-D3-5C-D0-72 1232 Authenticated - - 720
2 1C-75-08-02-50-61 1233 Authenticated - - 589
2 84-C9-B2-5A-05-F1 1233 Authenticated - - 589
5 90-E6-BA-07-1A-85 1236 Authenticated - - 589
7 00-1F-C6-B9-EA-30 1238 Authenticated - - 589 Т.е. видим такую вещь, что свитч не назначает VID МАСу, а ставит этот вид в поле Original VID, хотя там должно быть число 999. И не помогает удаление МАСа из таблицы авторизованных МАСов. Он там появляется снова и снова у него VID пустой. Грешил на Radius, но проверка показала, что он честно выдает ответ вида:
Sending Access-Accept of id 58 to 10.255.0.50 port 8021
Tunnel-Private-Group-Id:0 = "1238"
Tunnel-Medium-Type:0 = IEEE-802
Tunnel-Type:0 = VLANПосмотрел лог свитча, там он клянётся, что назначил VID:
1579 2012-02-12 08:43:41 MAC-AC login successful (MAC: 00-1F-C6-B9-EA-30, port:
7, VID: 1238)
1578 2012-02-12 08:43:41 RADIUS server 10.255.255.253 assigned VID: 1238 to por
t 7 (account : 001FC6B9EA30 )Ещё бывает вывод таблицы
show mac_based_access_control auth_state ports содержит такие строки (взято с другого экземпляра)
5 20-6A-8A-17-CA-64 1347 Authenticated 1347 - 216Т.е. свитч ставит в Original VID вместо номера гостевого VLAN (999) VID, который ему присваивается по атрибутам аутентификации. В этом случает связь у абонента есть, но все равно как-то странно.
Спасает от этой напасти только выключение и вновь включение MBAC. После этого таблица выглядит правильно, как и должна выглядеть. Помогает не на долго.
Как предотвратить такое неправильное поведение?
Сразу спрошу про PCF:
Ниже в конфиге видно, что создается правило (см. config access_profile profile_id 10 add access_id 50)
Так вот. Это правило в гостевом VLAN работает не долго. Проходит несколько минут и запросить ARPом шлюз в гостевом становится невозможно. Я так понимаю, что правило такого вида распространяются на входящий пакет в независимости от VLAN, но свитч так думает не долго. Попытался создавать add access_id с меньшим номером (думал, мало ли, может свитч забывает про правило, потому что оно имеет номер слишком большой)- безрезультатно. Пришлось пока заткнуть дырку тем, что в гостевом VLAN разрешены все ARPы, что сами понимаете, не правильно. Смена прошивки на более ранние не даёт результата.
Почему свитч сам меняет решение, пропускать пакет или нет?
Кусок конфига под спойлером
# LOOP_DETECT
enable loopdetect
config loopdetect recover_timer 60 interval 10 mode port-based
config loopdetect log state enable
config loopdetect ports 1 state enable
config loopdetect ports 2 state enable
config loopdetect ports 3 state enable
config loopdetect ports 4 state enable
config loopdetect ports 5 state enable
config loopdetect ports 6 state enable
config loopdetect ports 7 state enable
config loopdetect ports 8 state enable
config loopdetect ports 9 state disable
config loopdetect ports 10 state disable
config loopdetect trap none
enable pvid auto_assign
config vlan default delete 1-10
config vlan default add tagged 10
config vlan default add untagged 9
config vlan default add forbidden 1-8
config vlan default advertisement enable
create vlan GuestVlan tag 999
config vlan GuestVlan add tagged 10 advertisement disable
create vlan VLAN1232 tag 1232
config vlan VLAN1232 add tagged 10
config vlan VLAN1232 add forbidden 2-8 advertisement disable
create vlan VLAN1233 tag 1233
config vlan VLAN1233 add tagged 10
config vlan VLAN1233 add forbidden 1,3-8 advertisement disable
create vlan VLAN1234 tag 1234
config vlan VLAN1234 add tagged 10
config vlan VLAN1234 add forbidden 1-2,4-8 advertisement disable
create vlan VLAN1235 tag 1235
config vlan VLAN1235 add tagged 10
config vlan VLAN1235 add forbidden 1-3,5-8 advertisement disable
create vlan VLAN1236 tag 1236
config vlan VLAN1236 add tagged 10
config vlan VLAN1236 add forbidden 1-4,6-8 advertisement disable
create vlan VLAN1237 tag 1237
config vlan VLAN1237 add tagged 10
config vlan VLAN1237 add forbidden 1-5,7-8 advertisement disable
create vlan VLAN1238 tag 1238
config vlan VLAN1238 add tagged 10
config vlan VLAN1238 add forbidden 1-6,8 advertisement disable
disable gvrp
disable vlan_trunk
config gvrp 1-10 state disable ingress_checking enable acceptable_frame admit_all pvid 1
# ACL
create access_profile profile_id 10 packet_content_mask offset_chunk_1 3 0xFFFF offset_chunk_2 10 0xFFFFFFFF
config access_profile profile_id 10 add access_id 1 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014C7E port 1 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 2 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014CBE port 2 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 3 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014CFE port 3 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 4 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014D3E port 4 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 5 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014D7E port 5 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 6 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014DBE port 6 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 7 packet_content offset_chunk_1 0x806 offset_chunk_2 0xA014DFE port 7 permit rx_rate no_limit
config access_profile profile_id 10 add access_id 50 packet_content offset_chunk_1 0x806 offset_chunk_2 0xAC12FFFE port 1-8 permit rx_rate no_limit
create access_profile profile_id 11 ethernet vlan ethernet_type
config access_profile profile_id 11 add access_id 1 ethernet vlan GuestVlan ethernet_type 0x806 port 1-8 permit rx_rate 1
create access_profile profile_id 20 ip udp src_port_mask 0xFFFF
config access_profile profile_id 20 add access_id 1 ip udp src_port 68 port 1-8 permit rx_rate no_limit
create access_profile profile_id 21 ip vlan destination_ip_mask 255.255.255.255
config access_profile profile_id 21 add access_id 1 ip vlan GuestVlan destination_ip 10.1.2.1 port 1-8 permit rx_rate no_limit
config access_profile profile_id 21 add access_id 2 ip vlan GuestVlan destination_ip 10.1.2.3 port 1-8 permit rx_rate no_limit
config access_profile profile_id 21 add access_id 3 ip vlan GuestVlan destination_ip 10.1.2.5 port 1-8 permit rx_rate no_limit
config access_profile profile_id 21 add access_id 4 ip vlan GuestVlan destination_ip 10.1.0.111 port 1-8 permit rx_rate no_limit
config access_profile profile_id 21 add access_id 5 ip vlan GuestVlan destination_ip 172.18.255.254 port 1-8 permit rx_rate no_limit
create access_profile profile_id 100 ethernet destination_mac FF-FF-FF-FF-FF-FF
config access_profile profile_id 100 add access_id 1 ethernet destination_mac FF-FF-FF-FF-FF-FF port 1-8 deny
create access_profile profile_id 101 ethernet vlan source_mac 00-00-00-00-00-00
config access_profile profile_id 101 add access_id 1 ethernet vlan GuestVlan source_mac 00-00-00-00-00-00 port 1-8 deny
# MAC-based_Access_Control
enable mac_based_access_control
config mac_based_access_control authorization attributes radius enable local enable
create mac_based_access_control guest_vlanid 999
config mac_based_access_control guest_vlan ports 1-7
config mac_based_access_control ports 1-7 state enable
config mac_based_access_control ports 8-10 state disable
config mac_based_access_control ports 1 max_users 128
config mac_based_access_control ports 1 aging_time 720
config mac_based_access_control ports 1 block_time 300
config mac_based_access_control ports 2 max_users 128
config mac_based_access_control ports 2 aging_time 720
config mac_based_access_control ports 2 block_time 300
config mac_based_access_control ports 3 max_users 128
config mac_based_access_control ports 3 aging_time 720
config mac_based_access_control ports 3 block_time 300
config mac_based_access_control ports 4 max_users 128
config mac_based_access_control ports 4 aging_time 720
config mac_based_access_control ports 4 block_time 300
config mac_based_access_control ports 5 max_users 128
config mac_based_access_control ports 5 aging_time 720
config mac_based_access_control ports 5 block_time 300
config mac_based_access_control ports 6 max_users 128
config mac_based_access_control ports 6 aging_time 720
config mac_based_access_control ports 6 block_time 300
config mac_based_access_control ports 7 max_users 128
config mac_based_access_control ports 7 aging_time 720
config mac_based_access_control ports 7 block_time 300
config mac_based_access_control ports 8 max_users 128
config mac_based_access_control ports 8 aging_time 720
config mac_based_access_control ports 8 block_time 300
config mac_based_access_control ports 9 max_users 128
config mac_based_access_control ports 9 aging_time 720
config mac_based_access_control ports 9 block_time 300
config mac_based_access_control ports 10 max_users 128
config mac_based_access_control ports 10 aging_time 720
config mac_based_access_control ports 10 block_time 300
config mac_based_access_control method radius
config mac_based_access_control password ххххх
config mac_based_access_control password_type manual_string
config mac_based_access_control max_users no_limit
config mac_based_access_control trap state enable
config mac_based_access_control log state enable
Пока писал пост, нашел способ решить проблему. Это назначать всем портам через
config gvrp 1-10 state disable ingress_checking enable acceptable_frame admit_all pvid 1
1й PVID по-умолчанию (собственно конфиг дан уже с вариантом лечения). Не могу пока сказать на сколько данное решение жизнеспособно. Посмотрим.
В любом случае, думаю, что поведение свитча некорректно. Может исправите в следующих прошивках?
Вопрос с PCF остается открытым: "почему свитч забывает о правиле?"