О построении провайдерской сети в небольшом городе. Часть 1
Общая схема сети
Пояснения к схеме.
1) Присутствуют следующие Vlan сети:
vlan0 172.16.0.0/24
vlan1 10.1.0.0/16
vlan2 10.2.0.0/16
На предыдущем месте работы была реализована сеть на четыре vlan, не считая главного. Город маленький и я посчитал достаточным наличие двух сетей для пользователей. С задачей же подавления широковещательных штормов вполне справляется встроенное ПО управляемых коммутаторов.
2) Шейпер работает в режиме bridge. Контроль трафика осуществляется посредством пакета iproute2 и в частности утилиты tc, а еще точнее tc htb. Правила для обработки трафика заносятся скриптом, получающим входные параметры от биллинга UTM5.
3) На головной станции ведомые коммутаторы D-Link DGS-3627G соединены, через один главный D-Link DGS-3627G, чтобы уменьшить эффект каскадирования. Связь между главным коммутатором и ведомыми может быть как оптическая, так и коротким отрезком витой пары, для снижения затрат на SFP модули.
4) Авторизации при доступе в сеть нет в привычном понимании, встречающимся у других проводных провайдеров. Всем пользователям выдаются статические адреса, которые прописываются в оборудование клиента и в домовые коммутаторы прописывается связка IP+MAC. Контроль реализован через функцию IP-MAC Binding, которую я уже помянул в первой части статьи. Схема «дубовая», но рабочая. Коллектор биллинга UTM5 считает трафик по IP. Никаких логинов и паролей для доступа в сеть, никаких VPN и PPPoE. Незачем нагружать оборудование лишней нагрузкой и отапливать атмосферу. Логин и пароль клиенты используют лишь для доступа к личному кабинету, расположенному на сервере биллинга.
5) Статистика собирается по NetFolw, который Cisco 3945 предает в коллектор запущенный на сервере биллинга.
6) На сервере биллинга кроме UTM5, еще запущен кеширующий DNS сервер BIND и вэб-интерфейс личного кабинета пользователя. Хочется заметить, что многочисленные попытки установить кабинет от самих разработчиков UTM5 закончились провалом. Потому я взял и установил реализацию от сторонних разработчиков, которая заработала сразу и без танцев с бубном. Про биллинг UTM5 и его повадки я расскажу в следующей части статьи.
Настройка маршрутизатора Cisco
Я не буду в этой статье описывать пошаговое руководство по настройке маршрутизатора — это бессмысленное дублирование информации, поскольку статей по настройке Cisco много даже на Хабре:
Шаблон базовой настройки маршрутизатора Cisco
Курс молодого бойца cisco: искусство владения консолью
Учет трафика Cisco ASA с помощью NetFlow и nfdump на FreeBSD или Linux
NAT на Cisco. Часть 1
NAT на Cisco. Часть 2
Есть даже целый хаб Cisco
А также на сторонних ресурсах:
Маршрутизация в Cisco
VLAN в Cisco
Cisco NAT
NetFlow
Игры с железными кошками. Настраиваем боевой Cisco роутер
Я просто приведу конфиг, чтобы тем кто решит сделать подобную настройку, было проще ориентироваться. Мне бы лично готовый конфиг сэкономил массу времени в свое время, намного проще, когда известно в какую сторону нужно «копать»:
! ! Last configuration change at 13:56:38 MSK Mon Feb 11 2013 by admin ! NVRAM config last updated at 13:54:58 MSK Mon Feb 11 2013 by admin ! version 15.1 no service pad service timestamps debug datetime msec service timestamps log datetime msec service password-encryption ! hostname cisco3945 ! boot-start-marker boot-end-marker ! ! ! aaa new-model ! ! aaa authentication login default local ! ! ! ! ! aaa session-id common clock timezone MSK 3 0 ! no ipv6 cef no ip source-route ip cef ! ! ! ! ! no ip bootp server ip domain name cisco3945.domain ip name-server 4.2.2.2 ip name-server 8.8.8.8 multilink bundle-name authenticated ! ! crypto pki token default removal timeout 0 ! ! license udi pid C3900-SPE150/K9 sn XXXXXXXXXXXX ! ! archive log config logging enable hidekeys username admin privilege 15 secret 5 XXXXXXXXXXXXXXXXXXXXXXXXXXX ! ! ip ssh time-out 60 ip ssh version 2 ! ! ! ! interface GigabitEthernet0/0 description === LAN === ip address 172.16.0.10 255.255.255.0 ip flow ingress ip nat inside ip virtual-reassembly in duplex auto speed auto ! interface GigabitEthernet0/0.2 encapsulation dot1Q 2 ip address 10.1.0.10 255.255.0.0 ip flow ingress ip flow egress ip nat inside ip virtual-reassembly in ! interface GigabitEthernet0/0.3 encapsulation dot1Q 3 ip address 10.2.0.10 255.255.0.0 ip flow ingress ip flow egress ip nat inside ip virtual-reassembly in ! interface GigabitEthernet0/1 description === Internet === ip address XX.XX.XX.XX 255.255.255.252 no ip redirects no ip proxy-arp ip nat outside ip virtual-reassembly in duplex auto speed auto no cdp enable ! interface GigabitEthernet0/2 no ip address shutdown duplex auto speed auto ! ip forward-protocol nd ! no ip http server no ip http secure-server ip flow-export source GigabitEthernet0/0 ip flow-export version 5 ip flow-export destination 172.16.0.5 9996 ! ip dns server ip nat inside source list NAT interface GigabitEthernet0/1 overload ip route 0.0.0.0 0.0.0.0 XX.XX.XX.XX ! ip access-list extended FIREWALL permit tcp any any eq 22 ip access-list extended NAT permit ip 10.1.0.0 0.0.255.255 any permit ip 172.16.0.0 0.0.0.255 any permit ip 10.2.0.0 0.0.255.255 any ! ! ! ! ! control-plane ! ! line con 0 line aux 0 line vty 0 4 privilege level 15 transport input telnet ssh ! scheduler allocate 20000 1000 end
Сразу предупреждаю что в нескольких местах данные конфига «замазаны» символами X. Это конфиденциальные данные и я их не желаю делать достоянием общественности.
Больше всего мороки у меня возникло с опциями:
ip flow ingress
ip flow egress
Именно в таком виде, как прописано в конфиге, в моем случае через NetFlow собирается и входящий и исходящий трафик абонентов.
Настройка управляемых коммутаторов
Несмотря на предвзятое отношение к коммутаторам D-Link у некоторых специалистов на Хабре, коммутаторы достаточно стабильны в работе и с ними редко бывают проблемы. Да, изначально еще пару лет назад наблюдались проблемы и очевидно это могло сказаться на репутации. Однако если сравнивать с работой коммутаторов других дешевых фирм, то они работают хорошо. На предыдущем месте работы мне пришлось помучаться с коммутаторами Ruby, которые дохли летом в жару, от того, что у них заклинивало дешевый вентилятор. В тоже время D-Llink DES3200-10 имеют пассивное охлаждение и замечательно переносят как летнюю жару, так и зимний прохладный период. Проблемы наблюдаются лишь во время гроз и в основном из-за стабильности питания, так что сетевые фильтры Pilot или аналогичные весьма желательны. Экономия на фильтрах чревата частыми разъездами бригады монтажников, с целью перезапуска зависшего коммутатора. С установленными фильтрами проблем на два порядка меньше. Разумеется кроме зашиты по питанию весьма желательно иметь грозозащиту по витой паре, особенно если она используется для соединения двух соседних домов.
Настройка домовых коммутаторов D-Link DES-3200-10/C1, D-Link DES-3200-26/C1, D-Link DES-3200-28F в основном сводится к присвоению IP, включению контроля для IP+MAC на нужные порты, в основном на порты с витой парой. Разумеется, кроме совсем уж специфичных случаев, такой контроль не включается на оптические порты. Специфическим случаем в моей ситуации послужило использование D-Link DGS-1100-06/ME, который не имеет функции IP-MAC Binding, но может использоваться в качестве оптического удлинителя до соседнего дома, за счет подключения к домовому коммутатору, который таки имеет IP-MAC Binding. Напомню, что речь идет о малоэтажных домах (2-3 этажа) ставить на которые полноценные коммутаторы экономически не целесообразно, поскольку количество клиентов там минимально. Если же подключением заинтересуются больше жильцов, то всегда можно поменять на более полноценный управляемый коммутатор.
Для коммутаторов D-Link DGS-3627G, установленных на головной станции, нужно прописывать используемые vlan с определение портов им принадлежащих, а также IP для управления, шлюз и маршрут по умолчанию.
Как настроить vlan на коммутаторах D-Link достаточно достаточно подробно расписано в следующих ссылках.
Как настроить D-Link ISM VLAN?
VLAN в D-LINK
Для настройки коммутаторов я использую как терминал с telnet, так и веб-интерфейс. Последний для меня лично более нагляден.
Чтобы существенно уменьшить время настройки коммутатора я сохраняю и загружаю файл конфигурации с TFTP сервера. Делается это через терминал и командами upload и download соответственно.
Если у вас рабочая машина с Linux, то установить TFTP сервер через пакетный менеджер не составляет особого труда. Если же рабочая машина содержит OS Windows, то можно воспользоваться Tftpd32.
Смею заметить что терминальный клиент имеет достаточно развитую систему подсказок, достаточно набить знак вопроса "?" в любом месте, кроме пожалуй названия файлов и других аналогичных параметров, и вы получите подсказку по продолжению команды.
Я приведу рабочий конфиг домового коммутатора.
#------------------------------------------------------------------------------- # DES-3200-10 Fast Ethernet Switch # Configuration # # Firmware: Build 4.02.004 # Copyright(C) 2012 D-Link Corporation. All rights reserved. #------------------------------------------------------------------------------- # DEVICE config temperature threshold high 79 config temperature threshold low 11 config temperature trap state enable config temperature log state enable # BASIC # ACCOUNT LIST create account admin admin XXXXXXXXX XXXXXXXXX # ACCOUNT END # PASSWORD ENCRYPTION disable password encryption config serial_port baud_rate 115200 auto_logout 10_minutes enable web 80 enable clipaging config terminal width 80 disable command logging enable password_recovery # DEBUG debug config state enable debug config error_reboot enable # STORM config traffic control 1 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 2 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 3 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 4 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 5 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 6 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 7 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 8 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 9 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control 10 broadcast disable multicast disable unicast disable action drop threshold 131072 countdown 0 time_interval 5 config traffic control auto_recover_time 0 config traffic trap none config traffic control log state enable # LOOP_DETECT disable loopdetect config loopdetect recover_timer 60 interval 10 mode port-based config loopdetect log state enable config loopdetect ports 1 state disable config loopdetect ports 2 state disable config loopdetect ports 3 state disable config loopdetect ports 4 state disable config loopdetect ports 5 state disable config loopdetect ports 6 state disable config loopdetect ports 7 state disable config loopdetect ports 8 state disable config loopdetect ports 9 state disable config loopdetect ports 10 state disable config loopdetect trap none # GM disable sim config sim candidate config sim dp_interval 30 config sim hold_time 100 # GM_H # MIRROR disable mirror # QOS config 802.1p user_priority 0 2 config 802.1p user_priority 1 0 config 802.1p user_priority 2 1 config 802.1p user_priority 3 3 config 802.1p user_priority 4 4 config 802.1p user_priority 5 5 config 802.1p user_priority 6 6 config 802.1p user_priority 7 7 config 802.1p default_priority 1-10 0 config bandwidth_control 1-10 rx_rate no_limit tx_rate no_limit config per_queue bandwidth_control ports 1-10 0 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 1 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 2 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 3 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 4 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 5 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 6 min_rate no_limit max_rate no_limit config per_queue bandwidth_control ports 1-10 7 min_rate no_limit max_rate no_limit config scheduling_mechanism ports 1-10 strict config scheduling ports 1-10 0 weight 1 config scheduling ports 1-10 1 weight 2 config scheduling ports 1-10 2 weight 3 config scheduling ports 1-10 3 weight 4 config scheduling ports 1-10 4 weight 5 config scheduling ports 1-10 5 weight 6 config scheduling ports 1-10 6 weight 7 config scheduling ports 1-10 7 weight 8 # SYSLOG config log_save_timing on_demand disable syslog config system_severity trap information config system_severity log information # TRAF-SEGMENTATION config traffic_segmentation 1-10 forward_list all # SSL disable ssl enable ssl ciphersuite RSA_with_RC4_128_MD5 enable ssl ciphersuite RSA_with_3DES_EDE_CBC_SHA enable ssl ciphersuite DHE_DSS_with_3DES_EDE_CBC_SHA enable ssl ciphersuite RSA_EXPORT_with_RC4_40_MD5 config ssl cachetimeout 600 # PORT disable jumbo_frame config ports 1-8,10 speed auto flow_control disable learning enable state enable mdix auto config ports 9 medium_type copper speed auto flow_control disable learning enable state enable mdix auto config ports 9 medium_type fiber speed auto flow_control disable learning enable state enable # OAM config ethernet_oam ports 1-10 mode active config ethernet_oam ports 1-10 state disable config duld ports 1-10 state disable config duld ports 1-10 discovery_time 5 config duld ports 1-10 mode normal config ethernet_oam ports 1-10 link_monitor error_symbol threshold 1 window 1000 notify_state enable config ethernet_oam ports 1-10 link_monitor error_frame threshold 1 window 1000 notify_state enable config ethernet_oam ports 1-10 link_monitor error_frame_period threshold 1 window 1488100 notify_state enable config ethernet_oam ports 1-10 link_monitor error_frame_seconds threshold 1 window 60000 notify_state enable config ethernet_oam ports 1-10 critical_link_event dying_gasp notify_state enable config ethernet_oam ports 1-10 critical_link_event critical_event notify_state enable config ethernet_oam ports 1-10 received_remote_loopback ignore # DDM config ddm trap disable config ddm log enable config ddm ports 9-10 state enable shutdown none # MANAGEMENT enable snmp traps enable snmp authenticate_traps enable snmp linkchange_traps disable snmp config snmp linkchange_traps ports 1-10 enable # TRAP config snmp coldstart_traps enable config snmp warmstart_traps enable config rmon trap rising_alarm enable config rmon trap falling_alarm enable # TR # IGMP_MULTICAST_VLAN disable igmp_snooping multicast_vlan config igmp_snooping multicast_vlan forward_unmatched disable # VLAN enable pvid auto_assign config vlan default delete 1-10 config vlan default add untagged 1-10 config vlan default advertisement enable disable qinq disable gvrp config gvrp nni_bpdu_addr dot1d disable vlan_trunk config port_vlan 1-10 gvrp_state disable ingress_checking enable acceptable_frame admit_all pvid 1 # PORT_SECURITY config port_security system max_learning_addr no_limit disable port_security trap_log config port_security ports 1-10 admin_state disable max_learning_addr 32 lock_address_mode deleteonreset # ACL #CPU Interface Filter disable cpu_interface_filtering # PROTOCOL_VLAN # QINQ config qinq inner_tpid 0x8100 config qinq ports 1-10 missdrop disable outer_tpid 0x8100 config qinq ports 1-10 add_inner_tag disable # 8021X disable 802.1x config 802.1x auth_mode port_based config 802.1x auth_protocol radius_eap config 802.1x fwd_pdu system disable config 802.1x max_users no_limit config 802.1x authorization attributes radius enable config 802.1x capability ports 1-10 none config 802.1x auth_parameter ports 1-10 direction both port_control auto quiet_period 60 tx_period 30 supp_timeout 30 server_timeout 30 max_req 2 reauth_period 3600 enable_reauth disable config 802.1x auth_parameter ports 1-10 max_users 16 # GUEST_VLAN # NLB # FDB config fdb aging_time 300 # ADDRBIND config address_binding dhcp_snoop max_entry ports 1 limit no_limit config address_binding dhcp_snoop max_entry ports 2 limit no_limit config address_binding dhcp_snoop max_entry ports 3 limit no_limit config address_binding dhcp_snoop max_entry ports 4 limit no_limit config address_binding dhcp_snoop max_entry ports 5 limit no_limit config address_binding dhcp_snoop max_entry ports 6 limit no_limit config address_binding dhcp_snoop max_entry ports 7 limit no_limit config address_binding dhcp_snoop max_entry ports 8 limit no_limit config address_binding dhcp_snoop max_entry ports 9 limit no_limit config address_binding dhcp_snoop max_entry ports 10 limit no_limit config address_binding ip_mac ports 1-8 ip_inspection enable config address_binding ip_mac ports 1-8 arp_inspection strict disable address_binding dhcp_snoop disable address_binding trap_log create address_binding ip_mac ipaddr 10.2.1.100 mac_address XX-XX-XX-XX-XX-XX ports 1-10 # NetBiosFilter config filter netbios all state disable config filter extensive_netbios all state disable # DoS config dos_prevention dos_type land_attack action drop state disable config dos_prevention dos_type blat_attack action drop state disable config dos_prevention dos_type tcp_null_scan action drop state disable config dos_prevention dos_type tcp_xmasscan action drop state disable config dos_prevention dos_type tcp_synfin action drop state disable config dos_prevention dos_type tcp_syn_srcport_less_1024 action drop state disable config dos_prevention dos_type ping_death_attack action drop state disable config dos_prevention dos_type tcp_tiny_frag_attack action drop state disable config dos_prevention trap disable config dos_prevention log disable # RADIUS # DhcpServerScreening config filter dhcp_server ports all state disable config filter dhcp_server illegal_server_log_suppress_duration 5min config filter dhcp_server trap_log disable # PPPoE config pppoe circuit_id_insertion state disable config pppoe circuit_id_insertion ports 1-10 state enable circuit_id ip # sRED config dscp trust all state disable config 802.1p map all 1p_color 0-7 to green config dscp map all dscp_color 0-63 to green config dscp map all dscp_dscp 0 to 0 config dscp map all dscp_dscp 1 to 1 config dscp map all dscp_dscp 2 to 2 config dscp map all dscp_dscp 3 to 3 config dscp map all dscp_dscp 4 to 4 config dscp map all dscp_dscp 5 to 5 config dscp map all dscp_dscp 6 to 6 config dscp map all dscp_dscp 7 to 7 config dscp map all dscp_dscp 8 to 8 config dscp map all dscp_dscp 9 to 9 config dscp map all dscp_dscp 10 to 10 config dscp map all dscp_dscp 11 to 11 config dscp map all dscp_dscp 12 to 12 config dscp map all dscp_dscp 13 to 13 config dscp map all dscp_dscp 14 to 14 config dscp map all dscp_dscp 15 to 15 config dscp map all dscp_dscp 16 to 16 config dscp map all dscp_dscp 17 to 17 config dscp map all dscp_dscp 18 to 18 config dscp map all dscp_dscp 19 to 19 config dscp map all dscp_dscp 20 to 20 config dscp map all dscp_dscp 21 to 21 config dscp map all dscp_dscp 22 to 22 config dscp map all dscp_dscp 23 to 23 config dscp map all dscp_dscp 24 to 24 config dscp map all dscp_dscp 25 to 25 config dscp map all dscp_dscp 26 to 26 config dscp map all dscp_dscp 27 to 27 config dscp map all dscp_dscp 28 to 28 config dscp map all dscp_dscp 29 to 29 config dscp map all dscp_dscp 30 to 30 config dscp map all dscp_dscp 31 to 31 config dscp map all dscp_dscp 32 to 32 config dscp map all dscp_dscp 33 to 33 config dscp map all dscp_dscp 34 to 34 config dscp map all dscp_dscp 35 to 35 config dscp map all dscp_dscp 36 to 36 config dscp map all dscp_dscp 37 to 37 config dscp map all dscp_dscp 38 to 38 config dscp map all dscp_dscp 39 to 39 config dscp map all dscp_dscp 40 to 40 config dscp map all dscp_dscp 41 to 41 config dscp map all dscp_dscp 42 to 42 config dscp map all dscp_dscp 43 to 43 config dscp map all dscp_dscp 44 to 44 config dscp map all dscp_dscp 45 to 45 config dscp map all dscp_dscp 46 to 46 config dscp map all dscp_dscp 47 to 47 config dscp map all dscp_dscp 48 to 48 config dscp map all dscp_dscp 49 to 49 config dscp map all dscp_dscp 50 to 50 config dscp map all dscp_dscp 51 to 51 config dscp map all dscp_dscp 52 to 52 config dscp map all dscp_dscp 53 to 53 config dscp map all dscp_dscp 54 to 54 config dscp map all dscp_dscp 55 to 55 config dscp map all dscp_dscp 56 to 56 config dscp map all dscp_dscp 57 to 57 config dscp map all dscp_dscp 58 to 58 config dscp map all dscp_dscp 59 to 59 config dscp map all dscp_dscp 60 to 60 config dscp map all dscp_dscp 61 to 61 config dscp map all dscp_dscp 62 to 62 config dscp map all dscp_dscp 63 to 63 config dscp map all dscp_priority 0-7 to 0 config dscp map all dscp_priority 8-15 to 1 config dscp map all dscp_priority 16-23 to 2 config dscp map all dscp_priority 24-31 to 3 config dscp map all dscp_priority 32-39 to 4 config dscp map all dscp_priority 40-47 to 5 config dscp map all dscp_priority 48-55 to 6 config dscp map all dscp_priority 56-63 to 7 # ARPSpoofingPrevention # MAC_ADDRESS_TABLE_NOTIFICATION disable mac_notification config mac_notification interval 1 historysize 1 config mac_notification ports 1-10 disable # STP config stp version rstp config stp maxage 20 maxhops 20 forwarddelay 15 txholdcount 6 fbpdu disable hellotime 2 nni_bpdu_addr dot1d config stp priority 32768 instance_id 0 config stp ports 1-10 externalCost auto edge auto p2p auto state enable restricted_role false restricted_tcn false config stp mst_ports 1-10 instance_id 0 internalCost auto priority 128 config stp ports 1-10 fbpdu disable config stp mst_config_id name 90:94:E4:3F:72:40 revision_level 0 disable stp # L2PT disable l2protocol_tunnel config l2protocol_tunnel ports all type none # BPDU_PROTECTION disable bpdu_protection config bpdu_protection recovery_timer 60 config bpdu_protection trap none config bpdu_protection log both config bpdu_protection ports 1-10 mode shutdown # SAFEGUARD_ENGINE config safeguard_engine state disable utilization rising 30 falling 20 trap_log disable mode fuzzy # BANNER_PROMP config command_prompt default config greeting_message default # SSH config ssh algorithm 3DES enable config ssh algorithm AES128 enable config ssh algorithm AES192 enable config ssh algorithm AES256 enable config ssh algorithm arcfour enable config ssh algorithm blowfish enable config ssh algorithm cast128 enable config ssh algorithm twofish128 enable config ssh algorithm twofish192 enable config ssh algorithm twofish256 enable config ssh algorithm MD5 enable config ssh algorithm SHA1 enable config ssh algorithm RSA enable config ssh algorithm DSA enable config ssh authmode password enable config ssh authmode publickey enable config ssh authmode hostbased enable config ssh server maxsession 8 config ssh server contimeout 120 config ssh server authfail 2 config ssh server rekey never config ssh server port 22 config ssh user admin authmode password disable ssh # TELNETS enable telnet 23 # BCPING # SMTP disable smtp # SNTP disable sntp config time_zone operator + hour 0 min 0 config sntp primary 0.0.0.0 secondary 0.0.0.0 poll-interval 720 config dst disable # MULTICAST_FILTER # LACP config link_aggregation algorithm mac_source config lacp_port 1-10 mode passive # IP config ipif System ipaddress 10.2.0.53/16 config ipif System vlan default config ipif System dhcp_option12 state disable disable autoconfig config autoconfig timeout 50 # SNMPv3 delete snmp community public delete snmp community private delete snmp user initial delete snmp group initial delete snmp view restricted all delete snmp view CommunityView all config snmp engineID 800000ab039094e43f7240 create snmp view restricted 1.3.6.1.2.1.1 view_type included create snmp view restricted 1.3.6.1.2.1.11 view_type included create snmp view restricted 1.3.6.1.6.3.10.2.1 view_type included create snmp view restricted 1.3.6.1.6.3.11.2.1 view_type included create snmp view restricted 1.3.6.1.6.3.15.1.1 view_type included create snmp view CommunityView 1 view_type included create snmp view CommunityView 1.3.6.1.6.3 view_type excluded create snmp view CommunityView 1.3.6.1.6.3.1 view_type included create snmp group public v1 read_view CommunityView notify_view CommunityView create snmp group public v2c read_view CommunityView notify_view CommunityView create snmp group initial v3 noauth_nopriv read_view restricted notify_view restricted create snmp group private v1 read_view CommunityView write_view CommunityView notify_view CommunityView create snmp group private v2c read_view CommunityView write_view CommunityView notify_view CommunityView create snmp community private view CommunityView read_write create snmp community public view CommunityView read_only create snmp user initial initial # ERPS disable erps config erps log disable config erps trap disable # CFM disable cfm # LLDP disable lldp config lldp message_tx_interval 30 config lldp tx_delay 2 config lldp message_tx_hold_multiplier 4 config lldp reinit_delay 2 config lldp notification_interval 5 config lldp ports 1-10 notification disable config lldp ports 1-10 admin_status tx_and_rx # MAC-based_Access_Control disable mac_based_access_control config mac_based_access_control authorization attributes radius enable local enable config mac_based_access_control ports 1-10 state disable config mac_based_access_control ports 1 max_users 128 config mac_based_access_control ports 1 aging_time 1440 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 1440 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 1440 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 1440 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 1440 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 1440 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 1440 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 1440 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 1440 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 1440 config mac_based_access_control ports 10 block_time 300 config mac_based_access_control ports 1-10 mode host_based config mac_based_access_control method local config mac_based_access_control password default 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 # MCFILTER # COMPOUND_AUTHENTICATION enable authorization attributes config authentication server failover block # IGMP_SNOOPING disable igmp_snooping config igmp_snooping data_driven_learning max_learned_entry 128 config igmp_snooping vlan_name default fast_leave disable report_suppression enable state disable config igmp_snooping querier vlan_name default query_interval 125 max_response_time 10 robustness_variable 2 last_member_query_interval 1 state disable version 3 config igmp_snooping data_driven_learning vlan_name default expiry_time 260 state enable aged_out disable config cpu_filter l3_control_pkt 1-10 all state disable # MLDSNP disable mld_snooping config mld_snooping data_driven_learning max_learned_entry 128 config mld_snooping vlan_name default fast_done disable report_suppression enable state disable config mld_snooping querier vlan_name default query_interval 125 max_response_time 10 robustness_variable 2 last_listener_query_interval 1 state disable version 2 config mld_snooping data_driven_learning vlan_name default expiry_time 260 state enable aged_out disable # ACCESS_AUTHENTICATION_CONTROL config authen_login default method local config authen_enable default method local_enable config authen application console login default config authen application console enable default config authen application telnet login default config authen application telnet enable default config authen application ssh login default config authen application ssh enable default config authen application http login default config authen application http enable default config authen parameter response_timeout 30 config authen parameter attempt 3 disable authen_policy config accounting service network state disable config accounting service shell state disable config accounting service system state disable # DHCP_LOCAL_RELAY disable dhcp_local_relay config dhcp_local_relay option_82 remote_id default config dhcp_local_relay option_82 circuit_id default config dhcp_local_relay option_82 ports 1-10 policy keep # AAA_LOCAL_ENABLE_PASSWORD config admin local_enable # DHCP_RELAY disable dhcp_relay config dhcp_relay hops 4 time 0 config dhcp_relay option_82 state disable config dhcp_relay option_82 check disable config dhcp_relay option_82 policy replace config dhcp_relay option_82 remote_id default config dhcp_relay option_82 circuit_id default config dhcp_relay option_60 state disable config dhcp_relay option_61 state disable config dhcp_relay option_60 default mode drop config dhcp_relay option_61 default drop # Firm # NDP config ipv6 nd ns ipif System retrans_time 0 # ARP config arp_aging time 20 config gratuitous_arp send ipif_status_up enable config gratuitous_arp send dup_ip_detected enable config gratuitous_arp learning enable # SNP_AUTH config igmp access_authentication ports 1-10 state disable # ROUTE create iproute default 10.2.0.1 1 #------------------------------------------------------------------- # End of configuration file for DES-3200-10 #-------------------------------------------------------------------
Настройка шейпера на Linux
Поскольку из всего зоопарка дистрибутивов Linux мне более всего знаком ALT Linux, то именно его я и поставил более года назад. Конкретно дистрибутив ALT Linux Centaurus. Для любопытствующих вот пара ссылок с информацией:
Альт Линукс 6.0 Кентавр, link 1
Альт Линукс 6.0 Кентавр, link 2
Также я использовал встроенную в Linux поддержку поддержку программного RAID и для ALT Linux имеется вполне годное руководство — Создание и установка на RAID. На обоих серверах в моем случае установлен RAID1.
Разумеется использование данного дистрибутива не принципиально, более того он не заявлен как поддерживаемый для биллинга UTM5.
Как включить режим bridge для ALT Linux описано в статье Подсказки пользователю /etc/net в разделе Настройка Ethernet-моста
О возможности работы Linux в режиме bridge известно многим, но в сети я не нашел готового годного руководства, на русском языке, как управлять пакетами в режиме bridge. Пришлось изучать дополнительную литературу и ставить самостоятельные эксперименты.
Хорошая статья про настройки Linux Bridge
Для тех кто хочет досконально разобраться с функционированием Linux Bridge, есть еще одна статья, но уже на английском — ebtables/iptables interaction on a Linux-based bridge
Когда я изучал все это в первый месяц работы в предыдущем провайдере, но моя голова была готова лопнуть как перезрелый орех. Красноглазие, хроническое недосыпание, голод, но я таки порешил этот вопрос.
Для того чтобы управлять траффиком в режиме bridge на основе знакомых правил iptables (мощная, но плохо изученная система правил ebtables остается при этом как бы немного за бортом), нужно включить две опции:
sysctl net.bridge.bridge-nf-call-iptables=1
sysctl net.bridge.bridge-nf-filter-vlan-tagged=1
Собственно сам траффик режется при помощи утилиты tc с использованием дисциплины обработки очереди HTB (Hierarchical Token Bucket). Статей по этому вопросу немало:
Новичкам про управление шириной канала в Linux
Сага по Hierarchical Token Bucket.
дисциплина обработки очереди HTB: руководство по использованию
HTB Linux queuing discipline manual — user guide
Даже в руководстве поставляемом с UTM5 есть некоторая информация.
Я просто прописал две корневые дисциплины в /etc/rc.d/rc.local
В конечном виде получился вот такой вот файл:
#!/bin/sh # # eth0 shaper parameters tc qdisc add dev eth0 root handle 1: htb tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit ceil 1000mbit burst 200k tc class add dev eth0 parent 1:1 classid 1:2 htb rate 1kbit burst 20k tc filter add dev eth0 parent 1: protocol 802.1q prio 3 handle 2 fw classid 1:2 # eth1 shaper parameters tc qdisc add dev eth1 root handle 2: htb tc class add dev eth1 parent 2: classid 2:1 htb rate 1000mbit ceil 1000mbit burst 200k tc class add dev eth1 parent 2:1 classid 2:2 htb rate 1kbit burst 20k tc filter add dev eth1 parent 2: protocol ip prio 3 handle 2 fw classid 2:2 # bridge filtering sysctl net.bridge.bridge-nf-call-iptables=1 sysctl net.bridge.bridge-nf-filter-vlan-tagged=1
Теперь после каждой перезагрузки системы нужные данные будут автоматически внесены.
Собственно вот и вся настройка для шейпирования траффика. Корневых дисциплин установленных для eth0 и eth1 являются родительскими для дисциплин определяющих шейпирование трафика пользователей.
Текущая конфигурация утилиты TC может быть просмотрена командами:
tc class show dev eth0
tc class show dev eth1tc filter show dev eth0
tc filter show dev eth1
Скрипт, который был мной написан, для внесения дисциплин определяющих шейпирование пользовательского трафика, по командам биллинга UTM5, я приведу в третьей части статьи.
ссылка на оригинал статьи http://habrahabr.ru/post/188270/
Добавить комментарий