Предыдущие статьи серии:
О построении провайдерской сети в небольшом городе. Часть 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, я приведу в третьей части статьи.
Автор: Mario_Z