О построении провайдерской сети в небольшом городе. Часть 2

от автора

Предыдущие статьи серии:
О построении провайдерской сети в небольшом городе. Часть 1

Общая схема сети

image

Пояснения к схеме.
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

image

Я не буду в этой статье описывать пошаговое руководство по настройке маршрутизатора — это бессмысленное дублирование информации, поскольку статей по настройке Cisco много даже на Хабре:
Шаблон базовой настройки маршрутизатора Cisco
Курс молодого бойца cisco: искусство владения консолью
Учет трафика Cisco ASA с помощью NetFlow и nfdump на FreeBSD или Linux
NAT на Cisco. Часть 1
NAT на Cisco. Часть 2

Есть даже целый хаб Cisco

А также на сторонних ресурсах:
Маршрутизация в Cisco
VLAN в Cisco
Cisco NAT
NetFlow
Игры с железными кошками. Настраиваем боевой Cisco роутер

Я просто приведу конфиг, чтобы тем кто решит сделать подобную настройку, было проще ориентироваться. Мне бы лично готовый конфиг сэкономил массу времени в свое время, намного проще, когда известно в какую сторону нужно «копать»:

cisco3945 config

! ! 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 собирается и входящий и исходящий трафик абонентов.

Настройка управляемых коммутаторов

image

Несмотря на предвзятое отношение к коммутаторам 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.

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

Я приведу рабочий конфиг домового коммутатора.

des3200-10 config

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

image

Поскольку из всего зоопарка дистрибутивов 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 eth1

tc filter show dev eth0
tc filter show dev eth1

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

ссылка на оригинал статьи http://habrahabr.ru/post/188270/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *