- PVSM.RU - https://www.pvsm.ru -

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

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

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

image [2]

Пояснения к схеме.
1) Присутствуют следующие Vlan сети:
vlan0 172.16.0.0/24
vlan1 10.1.0.0/16
vlan2 10.2.0.0/16

На предыдущем месте работы была реализована сеть на четыре vlan, не считая главного. Город маленький и я посчитал достаточным наличие двух сетей для пользователей. С задачей же подавления широковещательных штормов вполне справляется встроенное ПО управляемых коммутаторов.

2) Шейпер работает в режиме bridge. Контроль трафика осуществляется посредством пакета iproute2 [3] и в частности утилиты 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 [4], который Cisco 3945 предает в коллектор запущенный на сервере биллинга.

6) На сервере биллинга кроме UTM5, еще запущен кеширующий DNS сервер BIND [5] и вэб-интерфейс личного кабинета пользователя. Хочется заметить, что многочисленные попытки установить кабинет от самих разработчиков UTM5 закончились провалом. Потому я взял и установил реализацию от сторонних разработчиков, которая заработала сразу и без танцев с бубном. Про биллинг UTM5 и его повадки я расскажу в следующей части статьи.

Настройка маршрутизатора Cisco

image

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

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

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

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

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? [17]
VLAN в D-LINK [18]

Для настройки коммутаторов я использую как терминал с telnet, так и веб-интерфейс. Последний для меня лично более нагляден.

Чтобы существенно уменьшить время настройки коммутатора я сохраняю и загружаю файл конфигурации с TFTP сервера. Делается это через терминал и командами upload и download соответственно.

Если у вас рабочая машина с Linux, то установить TFTP сервер через пакетный менеджер не составляет особого труда. Если же рабочая машина содержит OS Windows, то можно воспользоваться Tftpd32 [19].

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

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

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 [20]
Альт Линукс 6.0 Кентавр, link 2 [21]

Также я использовал встроенную в Linux поддержку поддержку программного RAID и для ALT Linux имеется вполне годное руководство — Создание и установка на RAID [22]. На обоих серверах в моем случае установлен RAID1.

Разумеется использование данного дистрибутива не принципиально, более того он не заявлен как поддерживаемый для биллинга UTM5.

Как включить режим bridge для ALT Linux описано в статье Подсказки пользователю /etc/net [23] в разделе Настройка Ethernet-моста

О возможности работы Linux в режиме bridge известно многим, но в сети я не нашел готового годного руководства, на русском языке, как управлять пакетами в режиме bridge. Пришлось изучать дополнительную литературу и ставить самостоятельные эксперименты.

Хорошая статья про настройки Linux Bridge [24]
Для тех кто хочет досконально разобраться с функционированием Linux Bridge, есть еще одна статья, но уже на английском — ebtables/iptables interaction on a Linux-based bridge [25]

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

Для того чтобы управлять траффиком в режиме bridge на основе знакомых правил iptables [26] (мощная, но плохо изученная система правил ebtables [27] остается при этом как бы немного за бортом), нужно включить две опции:

sysctl net.bridge.bridge-nf-call-iptables=1
sysctl net.bridge.bridge-nf-filter-vlan-tagged=1

Собственно сам траффик режется при помощи утилиты tc с использованием дисциплины обработки очереди HTB (Hierarchical Token Bucket). Статей по этому вопросу немало:
Новичкам про управление шириной канала в Linux [28]
Сага по Hierarchical Token Bucket. [29]
дисциплина обработки очереди HTB: руководство по использованию [30]
HTB Linux queuing discipline manual — user guide [31]

Даже в руководстве поставляемом с 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, я приведу в третьей части статьи.

Автор: Mario_Z

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/40285

Ссылки в тексте:

[1] О построении провайдерской сети в небольшом городе. Часть 1: http://habrahabr.ru/post/188172/

[2] Image: http://i2.imageban.ru/out/2013/08/05/a57aa854355bb38ef84ba9b81ea52064.png

[3] iproute2: http://ru.wikipedia.org/wiki/Iproute2

[4] NetFolw: http://ru.wikipedia.org/wiki/Netflow

[5] кеширующий DNS сервер BIND: http://habrahabr.ru/post/137587/

[6] Шаблон базовой настройки маршрутизатора Cisco: http://habrahabr.ru/post/87680/

[7] Курс молодого бойца cisco: искусство владения консолью: http://habrahabr.ru/post/59019/

[8] Учет трафика Cisco ASA с помощью NetFlow и nfdump на FreeBSD или Linux: http://habrahabr.ru/post/127613/

[9] NAT на Cisco. Часть 1: http://habrahabr.ru/post/108931/

[10] NAT на Cisco. Часть 2: http://habrahabr.ru/post/108978/

[11] целый хаб Cisco: http://habrahabr.ru/hub/cisconetworks/

[12] Маршрутизация в Cisco: http://xgu.ru/wiki/Маршрутизация_в_Cisco

[13] VLAN в Cisco: http://xgu.ru/wiki/VLAN_в_Cisco

[14] Cisco NAT: http://xgu.ru/wiki/NAT_в_Cisco

[15] NetFlow: http://xgu.ru/wiki/NetFlow

[16] Игры с железными кошками. Настраиваем боевой Cisco роутер: http://www.xakep.ru/magazine/xa/125/134/1.asp

[17] Как настроить D-Link ISM VLAN?: http://www.dlink.ru/ru/faq/58/266.html

[18] VLAN в D-LINK: http://xgu.ru/wiki/VLAN_в_D-LINK

[19] Tftpd32: http://tftpd32.jounin.net/

[20] Альт Линукс 6.0 Кентавр, link 1: http://www.altlinux.org/Альт_Линукс_6.0_Кентавр

[21] Альт Линукс 6.0 Кентавр, link 2: http://docs.altlinux.org/archive/p6/centaurus/

[22] Создание и установка на RAID: http://www.altlinux.org/Создание_и_установка_на_RAID

[23] Подсказки пользователю /etc/net: http://www.altlinux.org/Etcnet

[24] Linux Bridge: http://xgu.ru/wiki/Linux_Bridge

[25] ebtables/iptables interaction on a Linux-based bridge: http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html

[26] iptables: http://ru.wikipedia.org/wiki/Iptables

[27] ebtables: http://ru.wikipedia.org/wiki/Ebtables

[28] Новичкам про управление шириной канала в Linux: http://habrahabr.ru/post/133076/

[29] Сага по Hierarchical Token Bucket.: http://www.opennet.ru/base/net/htb_saga.txt.html

[30] дисциплина обработки очереди HTB: руководство по использованию: http://www.nestor.minsk.by/sr/2006/05/sr60516.html

[31] HTB Linux queuing discipline manual — user guide: http://xgu.ru/wiki/QoS_в_Linux#HTB_Linux_queuing_discipline_manual_-_user_guide

[32] Источник: http://habrahabr.ru/post/188270/