пятница, 16 мая 2014 г.

IPSec более подробно



Концепция site-to-site VPN и Remote Vpn

Так выглядят 2 основных концепта построения  IPSec

 2 обобщённые комбинации

Подробное рассмотрение составлящих IPSec







Две разновидности IPSec: AH и ESP. AH не шифрует трафик, потому сразу на помойку, приведено только для общей информации

 AH

И, наконец, самое вкусное, ESP



Security Associations

An SA is a basic building block of IPsec. Security associations are maintained within a SA database (SADB), which is established by each device. A VPN has SA entries defining the IPsec encryption parameters as well as SA entries defining the key exchange parameters.

All cryptographic systems, including the Caesar cipher, Vigenere cipher, Enigma machine, to modern encryption algorithms, must deal with key management issues. Diffie-Hellman (DH) is used to create the shared secret key. However, IPsec uses the Internet Key Exchange (IKE) protocol to establish the key exchange process.

Instead of transmitting keys directly across a network, IKE calculates shared keys based on the exchange of a series of data packets. This disables a third party from decrypting the keys even if the third party captured all exchanged data that is used to calculate the keys.

IKE is layered on UDP and uses UDP port 500 to exchange IKE information between the security gateways. UDP port 500 packets must be permitted on any IP interface involved in connecting a security gateway peer.

IKE is defined in RFC 2409. It is a hybrid protocol, combining the Internet Security Association and Key Management Protocol (ISAKMP) and the Oakley and Skeme key exchange methods. ISAKMP defines the message format, the mechanics of a key-exchange protocol, and the negotiation process to build an SA for IPsec. ISAKMP does not define how keys are managed or shared between the two IPsec peers. Oakley and Skeme have five defined key groups. Of these groups, Cisco routers support Group 1 (768-bit key), Group 2 (1024-bit key), and Group 5 (1536-bit key).

IKE combines these protocols to build secure IPsec connections between devices. It establishes SAs that are mutually agreeable to each peer. Each peer must have identical ISAKMP and IPsec parameters to establish an operational and secure VPN. Note that the terms ISAKMP and IKE are commonly used by industry people to refer to IKE.

An alternative to using IKE is to manually configure all parameters required to establish a secure IPsec connection. This process is impractical because it does not scale.


Phase 1 - Two IPsec peers perform the initial negotiation of SAs. The basic purpose of Phase 1 is to negotiate IKE policy sets, authenticate the peers, and set up a secure channel between the peers. It can be implemented in main mode (longer, initial contact) or aggressive mode (after initial contact).
Phase 2 - SAs are negotiated by the IKE process ISAKMP on behalf of IPsec. It can be negotiated in quick mode.





Общая схема выглядит вот так, но ОНА ТУПАЯ






-------------------------------------------------------------------------------------------
Непосредственно конфигурация по делу


























понедельник, 12 мая 2014 г.

PAT




PPPoE





Mikrotik

Вчера за 20 минут соединил два офиса с помощью SOHO микротиков. Трафик бодро побежал от офиса к офису по L2TP туннелю.
Дешёвые и очень умные девайсы (не без огрехов конечно).
Опять же, люблю, как cisco излагает знания, с любыми дейвайсами можно быстро подружиться и получить желаемое, благодаря правильному изложения материала в 80% теории и лишь 20% работой с, конкретно, cisco. Универсальность и кроссвендорность -- мой выбор два в одном :)

суббота, 10 мая 2014 г.

MSTP Global Topology


В текущей топологии поставлены следующие цели:
1) Вручную назначить CIST Root свитч 
2) Вручную назначить CIST Regional Root свитчи для каждого региона
3) Вручную назначим Root для каждого инстанса

SW1 - regional root, раздаёт вланы и инстансы по vtp

Вначале базово сконфигурируем свитчи и инстансы, потом возьмёмся за сладкое


SW1 раздаёт вланы и инстансы по vtp на первый регион

1) Создаём vlan

SW1(config)# vlan 11
SW1(config-vlan)# name stimvlan11
SW1(config-vlan)# exit
SW1(config)# vlan 12
SW1(config-vlan)# name stimvlan12
SW1(config-vlan)# exit
SW1(config)# vlan 13
SW1(config-vlan)# name stimvlan13
SW1(config-vlan)# exit
SW1(config)# vlan 21
SW1(config-vlan)# name stimvlan21
SW1(config-vlan)# exit
SW1(config)# vlan 22
SW1(config-vlan)# name stimvlan22
SW1(config-vlan)# exit
SW1(config)# vlan 23
SW1(config-vlan)# name stimvlan23
SW1(config-vlan)# exit
SW1(config)# vlan 99
SW1(config-vlan)# name stimnativevlan99
SW1(config-vlan)# exit


2) Конфигурируем интерфейсы
SW1(config)# interface range ethernet 0/0 - 3
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk native vlan 99
SW1(config-if)# exit


SW1(config)# interface range ethernet 1/0 - 3
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk native vlan 99
SW1(config-if)# exit


3) Включаем spanning-tree режим mst


SW1(config)# spanning-tree mode mst
SW1(config)# spanning-tree mst configuration
SW1(config-mst)# name stimregion1
SW1(config-mst)# revision 4
SW1(config-mst)# instance 10 vlan 11, 12, 13
SW1(config-mst)# instance 20 vlan 21, 22, 23
SW1(config-mst)# exit




4) Конфигурируем vtp для редистрибьюции vlan и instance

SW1(config)# vtp mode server
Device mode already VTP Server for VLANS.
SW1(config)# vtp domain stimvtpdomain
Changing VTP domain name from NULL to stimvtpdomain
SW1(config)# vtp password 123456
Setting device VTP password to 123456
SW1(config)# vtp version 3
SW1(config)#exit

SW1# vtp primary vlan 
SW1# conf t
SW1(config)# vtp mode server mst
SW1(config)#exit
SW1# vtp primary mst


SW2 - SW4


1) Конфигурируем интерфейсы
SW2(config)# interface range ethernet 0/0 - 3
SW2(config-if)# switchport trunk encapsulation dot1q
SW2(config-if)# switchport mode trunk
SW2(config-if)# switchport trunk native vlan 99
SW2(config-if)# exit


SW2(config)# interface range ethernet 1/0 - 3
SW2(config-if)# switchport trunk encapsulation dot1q
SW2(config-if)# switchport mode trunk
SW2(config-if)# switchport trunk native vlan 99
SW2(config-if)# exit


2) Переводим в режим клиента vtp для получения вланов и инстансов
SW2(config)# vtp mode server
SW2(config)# vtp domain stimvtpdomain
SW2(config)# vtp password 123456
SW2(config)# vtp version 3
 
SW2(config)# vtp mode client

В этот момент свитч поймает вланы от SW1

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active
11   stimvlan11                       active
12   stimvlan12                       active
13   stimvlan13                       active
21   stimvlan21                       active
22   stimvlan22                       active
23   stimvlan23                       active
77   test77new                        active
99   stimnativevlan99                 active
1002 fddi-default                     act/unsup
1003 trcrf-default                    act/unsup
1004 fddinet-default                  act/unsup
1005 trbrf-default                    act/unsup

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Включаем режим mst и переводим в режим клиента
Switch(config)#spanning-tree mode mst
Switch(config)#vtp mode client mst


Впихивать картинку развёртки инстансов влом(будет позже), приведу только краткий статус
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

SW3(config)#do show vtp status
VTP Version capable             : 1 to 3
VTP version running             : 3
VTP Domain Name                 : stimvtpdomain
VTP Pruning Mode                : Disabled
VTP Traps Generation            : Disabled
Device ID                       : aabb.cc00.0300

Feature VLAN:
--------------
VTP Operating Mode                : Client
Number of existing VLANs          : 13
Number of existing extended VLANs : 0
Maximum VLANs supported locally   : 4096
Configuration Revision            : 2
Primary ID                        : aabb.cc00.0100
Primary Description               : SW1
MD5 digest                        : 0x9B 0x2B 0x76 0x19 0x86 0x72 0xE5 0xC7
                                    0xF1 0x35 0x2B 0xE7 0x49 0xFB 0xAB 0xB9


Feature MST:
--------------
VTP Operating Mode                : Client
Configuration Revision            : 2
Primary ID                        : aabb.cc00.0100
Primary Description               : SW1
MD5 digest                        : 0x93 0x9C 0x0F 0x38 0x73 0xD2 0x42 0xCC
                                    0xD0 0xD6 0xC2 0xEE 0xE2 0x55 0xCA 0xD4


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



SW6 раздаёт вланы и инстансы по vtp на второй регион

1) Создаём vlan
Обратим внимание что native vlan остаётся 99, иначе транки не будут работать правильно
SW6(config)# vlan 211
SW6(config-vlan)# name stimvlan211
SW6(config-vlan)# exit
SW6(config)# vlan 212
SW6(config-vlan)# name stimvlan212
SW6(config-vlan)# exit
SW6(config)# vlan 213
SW6(config-vlan)# name stimvlan213
SW6(config-vlan)# exit
SW6(config)# vlan 221
SW6(config-vlan)# name stimvlan221
SW6(config-vlan)# exit
SW6(config)# vlan 222
SW6(config-vlan)# name stimvlan222
SW6(config-vlan)# exit
SW6(config)# vlan 223
SW6(config-vlan)# name stimvlan223
SW6(config-vlan)# exit
SW6(config)# vlan 99
SW6(config-vlan)# name stimnativevlan99
SW6(config-vlan)# exit


2) Конфигурируем интерфейсы
SW6(config)# interface range ethernet 0/0 - 3
SW6(config-if)# switchport trunk encapsulation dot1q
SW6(config-if)# switchport mode trunk
SW6(config-if)# switchport trunk native vlan 99
SW6(config-if)# exit


SW6(config)# interface range ethernet 1/0 - 3
SW6(config-if)# switchport trunk encapsulation dot1q
SW6(config-if)# switchport mode trunk
SW6(config-if)# switchport trunk native vlan 99
SW6(config-if)# exit

 3) Включаем spanning-tree режим mst

SW6(config)# spanning-tree mode mst
SW6(config)# spanning-tree mst configuration
SW6(config-mst)# name stimregion2
SW6(config-mst)# revision 22
SW6(config-mst)# instance 210 vlan 211, 212, 213
SW6(config-mst)# instance 220 vlan 221, 222, 223
SW6(config-mst)# exit




4) Конфигурируем vtp для редистрибьюции vlan и instance

SW6(config)# vtp mode server
Device mode already VTP Server for VLANS.
SW6(config)# vtp domain stimvtpdomaintwo
Changing VTP domain name from NULL to stimvtpdomain
SW6(config)# vtp password 1223456
Setting device VTP password to 1223456
SW6(config)# vtp version 3
SW6(config)#exit

SW6# vtp primary vlan 
SW6# conf t
SW6(config)# vtp mode server mst
SW6(config)#exit
SW6# vtp primary mst



SW5,7,8


1) Конфигурируем интерфейсы
SW(config)# interface range ethernet 0/0 - 3
SW(config-if)# switchport trunk encapsulation dot1q
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk native vlan 99
SW(config-if)# exit


SW(config)# interface range ethernet 1/0 - 3
SW(config-if)# switchport trunk encapsulation dot1q
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk native vlan 99
SW(config-if)# exit


2) Переводим в режим клиента vtp для получения вланов и инстансов
SW(config)# vtp mode server
SW(config)# vtp domain stimvtpdomaintwo
SW(config)# vtp password 1223456
SW(config)# vtp version 3
 
SW(config)# vtp mode client
SW(config)# spanning-tree mode mst
SW(config)# vtp mode client mst



W10 раздаёт вланы и инстансы по vtp на второй регион

1) Создаём vlan
Обратим внимание что native vlan остаётся 99, иначе транки не будут работать правильно
SW6(config)# vlan 311
SW6(config-vlan)# name stimvlan211
SW6(config-vlan)# exit
SW6(config)# vlan 312
SW6(config-vlan)# name stimvlan212
SW6(config-vlan)# exit
SW6(config)# vlan 313
SW6(config-vlan)# name stimvlan213
SW6(config-vlan)# exit
SW6(config)# vlan 321
SW6(config-vlan)# name stimvlan221
SW6(config-vlan)# exit
SW6(config)# vlan 322
SW6(config-vlan)# name stimvlan222
SW6(config-vlan)# exit
SW6(config)# vlan 323
SW6(config-vlan)# name stimvlan223
SW6(config-vlan)# exit
SW6(config)# vlan 99
SW6(config-vlan)# name stimnativevlan99
SW6(config-vlan)# exit


2) Конфигурируем интерфейсы
SW6(config)# interface range ethernet 0/0 - 3
SW6(config-if)# switchport trunk encapsulation dot1q
SW6(config-if)# switchport mode trunk
SW6(config-if)# switchport trunk native vlan 99
SW6(config-if)# exit


SW6(config)# interface range ethernet 1/0 - 3
SW6(config-if)# switchport trunk encapsulation dot1q
SW6(config-if)# switchport mode trunk
SW6(config-if)# switchport trunk native vlan 99
SW6(config-if)# exit


3) Включаем spanning-tree режим mst

SW6(config)# spanning-tree mode mst
SW6(config)# spanning-tree mst configuration
SW6(config-mst)# name stimregion3
SW6(config-mst)# revision 33
SW6(config-mst)# instance 310 vlan 311, 312, 313
SW6(config-mst)# instance 320 vlan 321, 322, 323
SW6(config-mst)# exit




4) Конфигурируем vtp для редистрибьюции vlan и instance

SW6(config)# vtp mode server
Device mode already VTP Server for VLANS.
SW6(config)# vtp domain stimvtpdomainthree
Changing VTP domain name from NULL to stimvtpdomainthree
SW6(config)# vtp password 1233456
Setting device VTP password to 1233456
SW6(config)# vtp version 3
SW6(config)#exit

SW6# vtp primary vlan 
SW6# conf t
SW6(config)# vtp mode server mst
SW6(config)#exit
SW6# vtp primary mst

SW9,11,12


1) Конфигурируем интерфейсы
SW(config)# interface range ethernet 0/0 - 3
SW(config-if)# switchport trunk encapsulation dot1q
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk native vlan 99
SW(config-if)# exit


SW(config)# interface range ethernet 1/0 - 3
SW(config-if)# switchport trunk encapsulation dot1q
SW(config-if)# switchport mode trunk
SW(config-if)# switchport trunk native vlan 99
SW(config-if)# exit


2) Переводим в режим клиента vtp для получения вланов и инстансов
SW(config)# vtp mode server
SW(config)# vtp domain stimvtpdomainthree
SW(config)# vtp password 1233456
SW(config)# vtp version 3
 
SW(config)# vtp mode client
SW(config)# spanning-tree mode mst
SW(config)# vtp mode client mst


Итак, базовая настройка топологии закончена и схема теперь функционирует (особо желающим могу дать полный снимок лабы на этом моменте, хотя точно знаю, что таких желающих не будет).

========================================================================
========================================================================
========================================================================

Теперь о практических тонкостях, которые в теории кажутся лёгкими и гладкими:
1) BridgeID состоит из приоритета и MAC-адреса уcтройства

а) Приоритет задаётся для каждого определённого инстанса свой собственный, а не для физического порта, командой Switch(config)# spanning-tree mst X priority   (по-умолчанию 32768). Тут опять же надо отметить, что никакой магии не существует, и главное управление у нас ползает по нулевому инстансу между регионами.


б) МАС-адрес устройства берётся из MAC-адресов физических интерфейсов, по принципу: самый старый мак должен оставаться рутом, чтобы не падала топология на каждом включении нового девайса, и не иницировались глобальные перевыборы.
Например, если у свитча имеются MAC адреса на интерфейсах:
aabb.cc00.0100
aabb.cc00.0110
...
aabb.cc00.0180
то в Bridge ID пойдёт MAC адрес  aabb.cc00.0100


Дефолтные значения
SW1#sh sp m
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
##### MST0    vlans mapped:   1-10,14-20,24-76,78-4094
Bridge        address aabb.cc00.0100   priority 32768 (32768 sysid 0)
Root          this switch for the CIST
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


После выполнения команды
SW1(config)# spanning-tree mst 0 priority  20480 
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
##### MST0    vlans mapped:   1-10,14-20,24-76,78-4094
Bridge        address aabb.cc00.0100  priority      20480 (20480 sysid 0)
Root          this switch for the CIST
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Основное блюдо

На основании моих заметок теоретического курса по MSTP приступим

1) Вручную назначить CIST Root свитч

Способ номер 1:  
SW6(config)# spanning-tree mst 0 priority  20480 

Способ номер 2:  
SW6(config)# spanning-tree mst 0 root primary 

Результат альтернативен для обоих случаев: 
SW6#show spanning-tree mst -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
##### MST0    vlans mapped:   1-10,14-20,24-76,78-4094
Bridge        address aabb.cc00.0600   priority 32768 (32768 sysid 0)
Root          this switch for the CIST
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


2) Вручную назначить CIST Regional Root свитчи для каждого региона

По-умолчанию, вне региона, где расположен CIST Root, кандидатами на Regional Root будут только boundary свитчи (т.е. имеющие порты смотрящие в другие регионы) 
Цепочка выбора предпочтительного кандидата выглядит так:
1) наименьший путь от кандидата до региона CIST Root включая путь путь внутри региона от кандидата
2) если пути равны, сравнивается Bridge ID. Вначале приоритет, если приоритеты равны, то MAC. Меньшее число более приоритетно.

Способы:
1) Изменение скорости линков
SW(config)#int ethernet 0/0
SW(config-if)#spanning-tree mst 0 cost ?
  <1-200000000>  Change the interface spanning tree path cost for an instance
SW(config-if)#spanning-tree mst 0 cost 2000000
 

2) Изменение приоритетов
SW(config)# spanning-tree mst <номер_инстанса>  priority <цифра>

3) Изменение MAC ( это для особо извращенцев )
4) Выкинуть всё нафиг и перепланировать сетку заново.

Результат:
SW#show spanning-tree mst ( лог не привожу, тут всё несложно, но указание на Regional Root можно увидеть, и даже желательно, с соседних свитчей, вдобавок, это позволит выявить ошибки в топологии, если такие есть )

3) Вручную назначим Root для каждого инстанса


Назначение рута возможно двумя способами

1) Через приоритет
SW(config)# spanning-tree mst <номер_инстанса>  priority <цифра>

2) Напрямую root
SW(config)# spanning-tree mst <номер_инстанса>  root primary

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