Поиск на сайте: Расширенный поиск


Новые программы oszone.net Читать ленту новостей RSS
CheckBootSpeed - это диагностический пакет на основе скриптов PowerShell, создающий отчет о скорости загрузки Windows 7 ...
Вы когда-нибудь хотели создать установочный диск Windows, который бы автоматически установил систему, не задавая вопросо...
Если после установки Windows XP у вас перестала загружаться Windows Vista или Windows 7, вам необходимо восстановить заг...
Программа подготовки документов и ведения учетных и отчетных данных по командировкам. Используются формы, утвержденные п...
Red Button – это мощная утилита для оптимизации и очистки всех актуальных клиентских версий операционной системы Windows...
OSzone.net Microsoft Сети Сетевые протоколы и технологии Поговорим о VPN-ах? Типы VPN соединений. Масштабирование VPN RSS

Поговорим о VPN-ах? Типы VPN соединений. Масштабирование VPN

Текущий рейтинг: 5 (проголосовало 3)
 Посетителей: 5343 | Просмотров: 7689 (сегодня 0)  Шрифт: - +

PPTP


PPTP стал совместной разработкой консорциумов Microsoft, 3Com, Ascend Communication. Хорошо масштабируемый протокол. Может использоваться для соединения офисов по типу точка-точка, но, больше всего подходит для организации удаленного подключения по архитектуре клиент-сервер. Достаточно настроить центральный PPTP VPN HUB, а удаленные пользователи подключаются через PPTP клиент, который внедрен во всех OC Windows, в том числе MacOS и Linux-дистрибутивах.
Существуют криптографические проблемы в протоколе аутентификации MSCHAPv2 [https://technet.microsoft.com/ru-ru/library/security/2743314.aspx], поэтому в большинстве случаев рекомендовано использование даже на той же самой OC Windows протокола L2TP over IPSec вместо PPTP.
В качестве средств шифрования используется только один протокол шифрования Microsoft Point-to-Point Encryption (128битный ключ), в качестве аутентификации – MSCHAPv2, PEAP (рекомендовано).
PPTP в процессе своей работы устанавливает 2 сессии: PPP сессию с использованием GRE протокола и TCP соединение по порту 1723 для обслуживания PPTP сессии.
Установление TCP сессии перед установлением PPP соединения

*
Увеличить


Формат PPP пакета (рис.15)

*
Увеличить


PPTP_HUB #
Username cisco2 password cisco2
!
interface Loopback1
ip address 192.168.2.2 255.255.255.0
!
vpdn enable
!
vpdn-group 1
! Default PPTP VPDN group
accept-dialin
protocol pptp
virtual-template 1
!
interface Virtual-Template1
ip unnumbered Loopback1
ip mtu 1400
ip tcp adjust-mss 1360
peer default ip address pool PPTP-Pool
ppp encrypt mppe auto
ppp authentication ms-chap-v2 chap callin
!
ip local pool PPTP-Pool 192.168.2.5 192.168.2.50
!

Проверка установленных PPTP соединений.
Пользователь cisco2 авторизован и сессия установлена.
PPTP_HUB #sho vpdn session
%No active L2TP tunnels
PPTP Session Information Total tunnels 1 sessions 1
LocID RemID TunID Intf    Username      State   Last Chg Uniq ID
55592     0     17168 Vi3        cisco2        estabd  00:04:13      6


Пользователю выдан ip адрес из DHCP Pool-а и создан virtual-access
PPTP_HUB#sh ip int br
Interface                IP-Address   OK? Method            Status               Protocol
Ethernet0/0              unassigned    YES NVRAM     administratively down down
GigabitEthernet0/0  192.168.1.3   YES NVRAM              up                       up
GigabitEthernet1/0      77.1.1.3     YES NVRAM              up                       up
Loopback0                3.3.3.3      YES NVRAM                up                       up
Loopback1            192.168.2.2  YES NVRAM                 up                       up
Virtual-Access1        unassigned   YES   unset                down                 down
Virtual-Access2        unassigned   YES   unset                  up                       up
Virtual-Access3      192.168.2.5  YES   unset                   up                       up
Virtual-Template1   192.168.2.5  YES   unset                down                   down

В случае если возникает задача конкретному PPTP клиенту выдавать принадлежащий только ему IP адрес, то тогда можно прибегнуть к созданию TXT файла с перечислением всех PPTP клиентов.
Настройка на маршрутизаторе:
ip dhcp pool STATIC
import all
origin file flash:/static2.txt
default-router 192.168.2.2
dns-server 8.8.8.8 8.8.4.4
domain-name lab.local
lease 3
!
interface Virtual-Template1
ip unnumbered Loopback1
ip mtu 1400
ip tcp adjust-mss 1360
peer default ip address pool STATIC (PPTP-Pool нам уже не нужен)
ppp encrypt mppe auto
ppp authentication ms-chap-v2 chap callin


Сам TXT файлик static2.txt.
*time* Mar 01 2002 12:23 AM
*version* 2
!IP address       Type    Hardware address   Lease expiration   VRF
192.168.2.77 /25             1000c.2984.4f84           Infinite
192.168.2.17 /25             1000c.2946.1575          Infinite
192.168.2.18 /25             10000.0000.1111          Infinite


L2TP


L2TP – это стандарт IETF, который вобрал в себя лучшее от протокола L2F от Cisco и PPTP от Microsoft. Не предлагает средств по защите данных, поэтому часто используется с IPSec.

L2TP – один из немногих представителей VPN протоколов (к тому же доступный для внедрения в корпоративной сети), который может предложить технологию pseudowire – проброс native vlan-а через L3 сеть. Технологию pseudowire поддерживает только L2TP version 3. Кроме этого L2TPv3 поддерживает следующие L2-протоколы, данные (payloads) которых могут прозрачно передаваться через псевдо-туннель L2TPv3:
  • Ethernet
  • Ethernet VLAN (802.1q)
  • HDLC
  • PPP
  • MPLS


Главное отличие L2TPv3 перед L2TPv2 это то, что L2TPv3 может туннелировать различный тип трафика (см. выше), в то время как v2 только PPP.

L2TPv3 использует два типа сообщений:
  • Сигнальные (Control Connection)
  • Для данных (Session data)

L2TPv3 сигнальные сообщения так и сообщения с данными могут быть перенесены через IP (protocol ID 115), т.е. L2TPv3 использует меньший overhead
IP_add_s_global        IP_add_d_global
Type 115
L2TP_header
L2_sublayer
Data


L2TPv2 инкапсулирует данные в IP/UDP (UDP порт 1701).

IP_add_s_global          IP_add_d_global
UDP_s_port              UDP_d_port(1701)
L2TP_header
PPP_header
IP_add_s_local               IP_add_d_local
Data



L2TPv3 Pseudowire


В архитектуре L2TP, равно как и в архитектуре PPTP, используются следующие понятия:

LACL2TP access concentratorLAC принимает на себя запросы от клиента и согласует L2TP параметры туннелей и сессий с LNS и передает запрос LNS
LNSL2TP network serverLNS согласует L2TP параметры туннелей и сессий с LAC
LCCEL2TP Control Connection EndpointЭто LAC, который участвует в сигнальном соединении.


Модель работы протоколов для L2TPv3 LNS – LNS, а для L2TPv2 LAC – LNS  (подробнее см.ниже).
Создадим pseudowire между R5 в Центральном офисе и в R9 в региональном офисе, тем самым расширим сеть 192.168.1.x/24 в региональный офис.

*

R5#
pseudowire-class L2TP_Class
encapsulation l2tpv3
protocol none (то есть не используется динамическое установление сессии)
ip pmtu
ip local interface GigabitEthernet1/0
!
interface GigabitEthernet0/0
 no ip address
xconnect 44.1.1.9 1 encapsulation l2tpv3 manual pw-class L2TP_Class
  l2tp id 1 2
l2tp cookie local 4 55111
l2tp cookie remote 44119
R9#
pseudowire-class L2TP_Class
encapsulation l2tpv3
protocol none (то есть не используется динамическое установление сессии)
ip pmtu
ip local interface GigabitEthernet0/0
!
interface GigabitEthernet1/0
no ip address
 xconnect 55.1.1.1 1 encapsulation l2tpv3 manual pw-class L2TP_Class
  l2tp id 2 1
l2tp cookie local 4 44119
l2tp cookie remote 4 55111


Проверка установления сессии:
R5_VPN_HUB_Pr#sh l2tp session 

L2TP Session Information Total tunnels 0 sessions 1

LocID      RemID      TunID      Username, Intf/      State  Last Chg Uniq ID
Vcid, Circuit
1               2             n/a               1, Gi0/0               est      00:00:03   1

R5_VPN_HUB_Pr#sh l2tp session all

L2TP Session Information Total tunnels 0 sessions 1

Session id 1 is up, logical session id 33356, tunnel id n/a
Remote session id is 2, remote tunnel id n/a
Locally initiated session
Unique ID is 4
Session Layer 2 circuit, type is Ethernet, name is GigabitEthernet0/0
Session vcid is 1
Circuit state is UP
Local circuit state is UP
Remote circuit state is UP
Call serial number is 0
Remote tunnel name is
Internet address is 44.1.1.9
Local tunnel name is
Internet address is 55.1.1.5
IP protocol 115
Session is manually signaled
Session state is established, time since change 02:29:58
1130 Packets sent, 1982 received
151213 Bytes sent, 197759 received
Last clearing of counters never


R7 теперь доступен без протоколов маршрутизации:
R10#ping 192.168.1.7 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 192.168.1.7, timeout is 2 seconds:
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 128/142/180 ms



Работа OSPF через L2TP


Соседство установилось по умолчанию, включив сеть 192.168.1.0 на R7 и R10
R7_DATA_Center_Servers#sh ip ospf neighbor

Neighbor ID      Pri    State            Dead Time    Address           Interface
192.168.1.10      1   FULL/DR         00:00:37    192.168.1.10    GigabitEthernet0/0

R10#sh ip ospf neighbor

Neighbor ID     Pri   State            Dead Time     Address               Interface
7.7.7.7           1   FULL/BDR        00:00:35    192.168.1.7     GigabitEthernet0/0


Недостатки:
Если L2TP создается на маршрутизаторе как в нашем примере, то через pseudowire соединения не пройдут следующие L2 PDU: CDP, STP, VTP, LLDP. Для туннелирования таких протоколов необходимо создавать L2TPv3 туннель на L3 коммутаторе.
Большой минус – мы должны удалить ip адрес на интерфейсе маршрутизатора, который служит маршрутом по умолчанию для всех остальных станций. В итоге у нас ПК остаются без связи с другими сетями.
L2 VPN работает в двух режимах:
  • обязательный туннельный режим
  • добровольный (опциональный) туннельный режим.

Обязательный туннельный режим относится к провайдер-определяемым (provider provisioning) и в таком режиме работают протоколы L2F, PPTP, L2TP. В обязательном туннельном режиме через L2TP удаленные пользователи подключаются к LAC по обычному PPP соединению, LAC их терминирует на себя и туннелирует PPP сессии к LNS. Причем удаленный пользователь даже не подозревает об L2TP.

*
Увеличить


В добровольном /клиентском инициированном туннеле удаленный хост действует как LAC, то есть он согласует и устанавливает L2TP сессию непосредственно с LNS.


*

В нашем примере Cisco R9 (44.1.1.9) будет действовать как LAC и устанавливать L2TP соединение с Cisco R5 в ЦОДе (55.1.1.1), которая будет выступать в роли LNS.

*

*
*Oct 20 19:52:55.861: L2X  tnl   08287:________: Create logical tunnel
*Oct 20 19:52:55.865: L2TP tnl   08287:________: Create tunnel
*Oct 20 19:52:55.869: L2TP tnl   08287:________:     version set to V2 (протокол L2TPv2)
*Oct 20 19:52:55.873: L2TP tnl   08287:________:     remote ip set to 44.1.1.9
*Oct 20 19:52:55.873: L2TP tnl   08287:________:     local ip set to 55.1.1.1
*Oct 20 19:52:55.877: L2TP tnl   08287:00003073: FSM-CC ev Rx-SCCRQ
(Start-Control-Connection-Request) LNS проверяет валидность отправителя и наличие собственных ресурсов, также на этом этапе согласуется список поддерживаемых типов pseudowire (Ethernet, Frame Relay)
*Oct 20 19:52:55.877: L2TP tnl   08287:00003073: FSM-CC    Idle->Proc-SCCRQ
*Oct 20 19:52:55.877: L2TP tnl   08287:00003073: FSM-CC do Rx-SCCRQ
*Oct 20 19:52:55.881: L2X        _____:________: Tunnel author started for LAC
*Oct 20 19:52:55.901: L2X        _____:________: Tunnel author found
*Oct 20 19:52:55.905: L2TP tnl   08287:00003073: Author reply, data source: "VPDN-L2TP"
*Oct 20 19:52:55.909: L2X        _____:________: class [AAA author, group "VPDN-L2TP"]
*Oct 20 19:52:55.913: L2X        _____:________:   created
*Oct 20 19:52:55.917: L2TP tnl   08287:00003073: FSM-CC ev SCCRQ-OK
*Oct 20 19:52:55.917: L2TP tnl   08287:00003073: FSM-CC    Proc-SCCRQ->Wt-SCCCN
Start-Control-Connection-Connected (SCCCN) ожидаем состояния Connected
*Oct 20 19:52:55.917: L2TP tnl   08287:00003073: FSM-CC do Tx-SCCRP
Start-Control-Connection-Reply (SCCRP) отправили ответное сообщение
*Oct 20 19:52:55.917: L2X        _____:________: l2x_open_socket: is called
*Oct 20 19:52:55.921: L2TP tnl   08287:00003073: Open sock 55.1.1.1:1701->44.1.1.9:1701
Используется UDP с портом 1701 для служебных сообщений
*Oct 20 19:52:55.925: L2TP tnl   08287:00003073: FSM-CC ev Sock-Ready
*Oct 20 19:52:55.929: L2TP tnl   08287:00003073: FSM-CC    in Wt-SCCCN
*Oct 20 19:52:55.929: L2TP tnl   08287:00003073: FSM-CC do Ignore-Sock-Up
*Oct 20 19:52:55.941: L2X        _____:________: Disabled security for VPDN
*Oct 20 19:52:56.053: L2TP tnl   08287:00003073: FSM-CC ev Rx-SCCCN
*Oct 20 19:52:56.053: L2TP tnl   08287:00003073: FSM-CC    Wt-SCCCN->Proc-SCCCN
*Oct 20 19:52:56.053: L2TP tnl   08287:00003073: FSM-CC do Rx-SCCCN
*Oct 20 19:52:56.053: L2TP tnl   08287:00003073: Got a response in SCCCN from LAC
*Oct 20 19:52:56.057: L2TP tnl   08287:00003073: Tunnel Authentication success
*Oct 20 19:52:56.061: L2TP tnl   08287:00003073: FSM-CC ev SCCCN-OK
*Oct 20 19:52:56.065: L2TP tnl   08287:00003073: FSM-CC    Proc-SCCCN->established
*Oct 20 19:52:56.069: L2TP tnl   08287:00003073: FSM-CC do Established
*Oct 20 19:52:56.073: L2TP tnl   08287:00003073: Control channel up
*Oct 20 19:52:56.077: L2TP tnl   08287:00003073:   55.1.1.1<->44.1.1.9


Служебный канал установился, теперь устанавливается канал для данных (PPP фреймов).
Стоит отметить, что по одному установившемуся туннелю может проходить множество клиентских сессий.

*
Увеличить

Для установки сессии для данных LAC отправляет ICRQ (Call-Request), если на LNS достаточно ресурсов, то LNS отвечает сообщением ICRP (Call-Reply). Для завершения установления сессии – LAC отправляет ICCN Incoming-Call-Connected.
*Oct 20 19:52:56.117: L2X  _____:_____:________: Create logical session
*Oct 20 19:52:56.121: L2TP _____:_____:________: Create session
*Oct 20 19:52:56.121: L2TP _____:_____:________:   Using ICRQ FSM
Incoming-Call-Request (ICRQ) Здесь передается требуемый pseudowire тип, требуемый для уровня L2
*Oct 20 19:52:56.125: L2TP _____:_____:________:     remote ip set to 44.1.1.9
*Oct 20 19:52:56.125: L2TP _____:_____:________:     local ip set to 55.1.1.1
*Oct 20 19:52:56.129: L2TP tnl   08287:00003073: FSM-CC ev Session-Conn
*Oct 20 19:52:56.129: L2TP tnl   08287:00003073: FSM-CC    in established
*Oct 20 19:52:56.129: L2TP tnl   08287:00003073: FSM-CC do Session-Conn-Est
*Oct 20 19:52:56.129: L2TP tnl   08287:00003073:   Session count now 1
*Oct 20 19:52:56.129: L2TP _____:08287:0000754C: Session attached
*Oct 20 19:52:56.129: L2TP _____:08287:0000754C: FSM-Sn ev Rx-ICRQ
*Oct 20 19:52:56.129: L2TP _____:08287:0000754C: FSM-Sn    Idle->Proc-ICRQ
*Oct 20 19:52:56.129: L2TP _____:08287:0000754C: FSM-Sn do Rx-ICRQ
*Oct 20 19:52:56.129: L2TP _____:08287:0000754C:   Chose application VPDN
*Oct 20 19:52:56.133: L2TP _____:08287:0000754C:   App type set to VPDN
*Oct 20 19:52:56.133: L2TP tnl   08287:00003073:   VPDN Session count now 1
*Oct 20 19:52:56.189: L2TP 00005:08287:0000754C: FSM-Sn ev ICRQ-OK
*Oct 20 19:52:56.193: L2TP 00005:08287:0000754C: FSM-Sn    Proc-ICRQ->Wt-Tx-ICRP
*Oct 20 19:52:56.193: L2TP 00005:08287:0000754C: FSM-Sn do Tx-ICRP-Local-Check
*Oct 20 19:52:56.193: L2TP 00005:08287:0000754C: FSM-Sn ev Local-Cont
*Oct 20 19:52:56.193: L2TP 00005:08287:0000754C: FSM-Sn    Wt-Tx-ICRP->Wt-Rx-ICCN
*Oct 20 19:52:56.193: L2TP 00005:08287:0000754C: FSM-Sn do Tx-ICRP
Incoming-Call-Reply (ICRP)
*Oct 20 19:52:56.197: L2TP 00005:08287:0000754C: Open sock 55.1.1.1:1701->44.1.1.9:1701
*Oct 20 19:52:56.197: L2TP 00005:08287:0000754C: FSM-Sn    in Wt-Rx-ICCN    (ожидаем ICCN)
*Oct 20 19:52:56.397: L2TP 00005:08287:0000754C: FSM-Sn ev Rx-ICCN             (ICCN получили)
*Oct 20 19:52:56.401: L2TP 00005:08287:0000754C: FSM-Sn    Wt-Rx-ICCN->Proc-ICCN
*Oct 20 19:52:56.405: L2TP 00005:08287:0000754C: FSM-Sn do Rx-ICCN
*Oct 20 19:52:56.437: L2TP 00005:08287:0000754C: FSM-Sn ev ICCN-OK
*Oct 20 19:52:56.441: L2TP 00005:08287:0000754C: FSM-Sn    Proc-ICCN->established
*Oct 20 19:52:56.445: L2TP 00005:08287:0000754C: FSM-Sn do Established
*Oct 20 19:52:56.449: L2TP 00005:08287:0000754C: Session up      (Ceccия для данных установилась)
*Oct 20 19:52:58.197: L2TP 00005:08287:0000754C: FSM-Sn    in established
*Oct 20 19:52:58.241: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access3, changed state to up
*Oct 20 19:52:58.273: %LINK-3-UPDOWN: Interface Virtual-Access3, changed state to up


В нашем примере сформировался один туннель между LAS и LNS и одна пользовательская сессия.
ISP_NAT#sh l2tun tunnel
L2TP Tunnel Information Total tunnels 1 sessions 1
LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
Count VPDN Group
30933              12403                  LNS            est            55.1.1.1               1     1

ISP_NAT#sh l2tp session
L2TP Session Information Total tunnels 1 sessions 1
LocID      RemID      TunID      Username, Intf/      State  Last Chg       Uniq ID
Vcid, Circuit
32700      30028      30933           LNS, Vi1                est      00:51:35       0

Настройка L2TP в добровольном туннельном режиме очень похожа в настройке с обязательным туннельным режимом. Различие в настройке VPDN группы следующее:
  • Команда terminate-from не нужна
  • Аутентификация L2TP туннеля выключена командой no l2tp tunnel authentication


Настройка L2TPv2


На некоторых типах маршрутизаторов нельзя создать interface virtual-ppp, поэтому привожу в качестве альтернативны другую рабочую конфигурацию через создание interface Dialer. Конфигурация предоставляется «AS IS».
LNS#
aaa new-model
aaa authorization network default local
!
vpdn enable
vpdn-group VPDN-L2TP
accept-dialin
protocol l2tp
virtual-template 2
lcp renegotiation on-mismatch
terminate-from hostname LAC
l2tp tunnel password 0 cisco123
ip pmtu
!
interface Virtual-Template2
ip unnumbered GigabitEthernet0/0
autodetect encapsulation ppp
peer default ip address pool L2TP-pool
ppp authentication ms-chap-v2
LAC#
vpdn enable
!
vpdn-group 1
request-dialin
protocol l2tp
pool-member 1
initiate-to ip 55.1.1.1
source-ip 44.1.1.9
local name LAC (имя должно совпадать с terminate-from на LNS)
l2tp tunnel password 0 cisco123
!
interface Dialer1
ip address negotiated
encapsulation ppp
dialer pool 1
dialer idle-timeout 0
dialer string 123
dialer vpdn
dialer-group 1
ppp authentication chap callin
ppp chap hostname LNC
ppp chap password 0 cisco123
!
ip route 192.168.1.0 255.255.255.0 Dialer1


Конфигурация L2TPv2 через interface virtual-ppp

*

LNS#
aaa new-model
!
aaa authorization network default local
!
username LAC password 0 cisco123
!
vpdn enable
vpdn-group VPDN-L2TP
accept-dialin
protocol l2tp
virtual-template 2
terminate-from hostname LAC
l2tp tunnel password 0 cisco123
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Virtual-Template2
ip unnumbered Loopback0
autodetect encapsulation ppp
no peer default ip address
ppp authentication ms-chap-v2
!
ip route 172.30.1.0 255.255.255.0 7.7.7.7
! добавляем статический маршрут до сети удаленного офиса R7

(P.S. маршрут до 7.7.7.7 добавляется автоматически при установлении сессии
LNS#show ip route
7.0.0.0/32 is subnetted, 1 subnets
C 7.7.7.7 is directly connected, Virtual-Access3 )
LAC#
username LNS password 0 cisco123
!
l2tp-class client.init.class
authentication
password cisco123
!
pseudowire-class pwclass1
encapsulation l2tpv2
protocol l2tpv2 client.init.class
ip local interface Ethernet0/0
!
interface Loopback0
ip address 7.7.7.7 255.255.255.255
!
interface Virtual-PPP1
ip unnumbered loopback0
ppp authentication ms-chap-v2
no cdp enable
pseudowire 55.1.1.3 1 pw-class pwclass1
!
ip route 192.168.1.0 255.255.255.0 Virtual-PPP1
! добавляем статический маршрут до ЦО

(P.S. маршрут до 3.3.3.3 добавляется автоматически при установлении сессии
3.0.0.0/32 is subnetted, 1 subnets
C 3.3.3.3 is directly connected, Virtual-PPP1 )

Проверка установления туннеля и заодно проверяем работу сессии через пинг с внутренней сети удаленного клиента (LAC) и просмотра статистики сессионных пакетов на L2TP HUBe (LNS)
LNS#show vpdn
L2TP Tunnel and Session Information Total tunnels 1 sessions 1
LocTunID   RemTunID Remote Name   State   Remote Address   Sessn L2TP Class/
Count VPDN Group
60224         63290            LAC            est         77.1.1.7               1 VPDN-L2TP

LocID   RemID     TunID     Username, Intf/   State    Last Chg       Uniq ID
Vcid, Circuit
46580   40688     60224         LAC, Vi3        est       00:14:12         102

LAC#sho vpdn
L2TP Tunnel and Session Information Total tunnels 1 sessions 1
LocTunID   RemTunID   Remote Name  State   Remote Address   Sessn L2TP Class/
Count VPDN Group
63290         60224               LNS          est         55.1.1.3              1 client.init.cla

LocID    RemID    TunID    Username, Intf/    State     Last Chg      Uniq ID
Vcid, Circuit
40688    46580    63290         1,  Vp1            est        00:20:54          8

LNS#sh caller user LAC

User: LAC, line Vi3, service PPPoVPDN
Connected for 00:03:34, Idle for 00:00:04
Timeouts: Limit Remaining Timer Type
— — -
PPP: LCP Open, MS CHAP V2 (<-->), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 101 packets input, 2932 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
78 packets output, 3770 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets

<после прохождения всех ping-ов проверяем вновь>
LNS#sh caller user LAC

User: LAC, line Vi3, service PPPoVPDN
Connected for 00:03:40, Idle for 00:00:02
Timeouts: Limit Remaining Timer Type
— — -
PPP: LCP Open, MS CHAP V2 (<-->), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 201 packets input, 13332 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
179 packets output, 15650 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
Проверяем доступность сети Центрального офиса (LNS) с R7
LAC#ping 192.168.1.1 source 172.30.1.7 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 172.30.1.7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 1/4/6 ms


Формат пакета L2TPv2

*
Увеличить

Overhead UDP (8байт) + L2TPv2 (8байт) + PPP (4 байта) +IPv4 (20 байт) = 40байт


Работа OSPF через L2TPv2


OSPF работает словно через broadcast сеть
LNS#
router ospf 1
network 3.3.3.3 0.0.0.0 area 0
network 192.168.1.0 0.0.0.255 area 0
default-information originate always
Объявим сеть 3.3.3.3 в ospf area 0
LAC#
interface Loopback1
ip address 77.77.77.77 255.255.255.255
!
router ospf 1
network 3.3.3.3 0.0.0.0 area 0
network 77.77.77.77 0.0.0.0 area 0


LSA протокола OSPF через L2TPv2
Обратите, пожалуйста, внимание на получившийся overhead.

*
Увеличить

Overhead UDP (8байт) + L2TPv2 (8байт) + PPP (4 байта) +IPv4 (20 байт) = 40байт
Проверка установленного соседства
LNS#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
7.7.7.7            0   FULL/  -        00:00:30       7.7.7.7         Virtual-Access3

LAC#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
3.3.3.3            0   FULL/  -           00:00:35    3.3.3.3         Virtual-PPP1


Настройка для L2TPv3



*
Настройка L2TPv3 практически ничем не отличается на удаленных клиентах, в то время как настройка на VPN HUB-е отличается очень разительно.
LNS#
username LAC password 0 cisco123
!
pseudowire-class client.init.pw
encapsulation l2tpv3
protocol l2tpv3 client.inint.class
ip local interface Ethernet0/1
!
interface Virtual-PPP1
ip unnumbered Loopback0
ppp authentication ms-chap-v2
pseudowire 77.1.1.7 1 pw-class client.init.pw
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Virtual-PPP1
ip unnumbered Loopback0
ppp authentication ms-chap-v2
pseudowire 77.1.1.7 1 pw-class client.init.pw
!
ip route 172.30.1.0 255.255.255.0 Virtual-PPP1
LAC#
username LNS password 0 cisco123
!
pseudowire-class pwclass2
encapsulation l2tpv3
protocol l2tpv3 client.init.class
ip local interface Ethernet0/0
!
interface Virtual-PPP1
ip address negotiated
ppp authentication ms-chap-v2
no cdp enable
pseudowire 55.1.1.3 1 pw-class pwclass2
!
ip route 192.168.1.0 255.255.255.0 Virtual-PPP1


Проверка установленной L2TPv3 сессии на LNS
LNS#show vpdn

L2TP Tunnel  and Session Information Total tunnels 1 sessions 1

LocTunID        RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
Count VPDN Group
4168123058 3050381103              LAC           est           77.1.1.7             1     client.inint.cl

LocID             RemID         TunID        Username, Intf/      State  Last Chg Uniq ID
Vcid, Circuit
2122433254    2810410257   4168123058           1, Vp1            est        00:16:22      53

Сессия в состояние established, туннельные ID совпадают


Проверка установленной L2TPv3 сессии на LAC
LAC#show vpdn
L2TP Tunnel and Session Information Total tunnels 1 sessions 1

LocTunID     RemTunID     Remote Name   State  Remote Address  Sessn L2TP Class/
Count VPDN Group
3050381103 4168123058          LNS             est         55.1.1.3            1     client.init.cla

LocID               RemID       TunID        Username, Intf/         State       Last Chg   Uniq ID
Vcid, Circuit
2810410257      2122433254 3050381103      1, Vp1               est        00:15:57        5


Формат пакета L2TPv3

*
Увеличить

Overhead L2TPv3 (4байта) + HDLC (4байта) = 8 байт

Проверяем работу сессии через пинг с внутренней сети удаленного клиента (LAC) и просмотра статистики сессионных пакетов на L2TP HUBe (LNS)
Проверка установления L2TPv3 сессии
LNS#show caller user LAC

User: LAC, line Vp1, service PPP
Connected for 00:01:52, Idle for 00:01:52
Timeouts:    Limit     Remaining Timer Type
-         -         -
PPP: LCP Open, MS CHAP V2 (<-->), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 1241 packets input, 74748 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
1078 packets output, 78056 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets

<после прохождения всех ping-ов проверяем вновь>
LNS#show caller user LAC

User: LAC, line Vp1, service PPP
Connected for 00:02:02, Idle for 00:02:02
Timeouts:    Limit     Remaining Timer Type
-         -         -
PPP: LCP Open, MS CHAP V2 (<-->), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 1343 packets input, 84976 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
1180 packets output, 88552 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
Пропингуем 100 пакетов удаленной сети через туннель
LAC#ping 192.168.1.1 source 172.30.1.7 repeat 100
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 172.30.1.7
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (100/100), round-trip min/avg/max = 2/4/29 ms


L2TPv2 over IPSec


Протокол L2TP не обеспечивает защищенность передаваемых по нему данных, поэтому для обеспечения целостности и конфиденциальности данных используем набор протоколов IPSec. Из средств безопасности L2TP может предложить аутентификацию хоста, инициализирующего туннель, а также PPP аутентификацию. Так как в нашем примере использован протокол L2TPv2, который использует IP/UDP инкапсуляцию, то достаточно в крипто ACL определить лишь UDP трафик по порту 1701. В настройке IPSec используется транспортный режим, а не туннельный, чтобы шифровать трафик от оконечного клиента оконечному (в транспортном режиме), нежели создавать дополнительные IP туннельные интерфейсы и шифровать трафик только между ними (в туннельном режиме).

*
Увеличить


Схема сети:
*
LNS#
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
!
crypto isakmp key ipseckey123 address 77.1.1.7
!
crypto ipsec transform-set ESP-AES256-SHA1 esp-aes 256 esp-sha-hmac
mode transport
!
crypto map L2TP_VPN 10 ipsec-isakmp
set peer 77.1.1.7
set transform-set ESP-AES256-SHA1
match address L2TP_TRAFFIC
!
! Так как мы используем L2TPv2, то достаточно! определить для шифрования весь UDP трафик! по порту 1701
ip access-list extended L2TP_TRAFFIC
permit udp host 55.1.1.3 eq 1701 host 77.1.1.7 eq 1701
!
interface Ethernet0/1
ip address 55.1.1.3 255.255.255.0
crypto map L2TP_VPN
LAC#
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
!
crypto isakmp key ipseckey123 address 55.1.1.3
!
crypto ipsec transform-set ESP-AES256-SHA1 esp-aes 256 esp-sha-hmac
mode transport
!
crypto map L2TP_VPN 10 ipsec-isakmp
set peer 55.1.1.3
set transform-set ESP-AES256-SHA1
match address L2TP_TRAFFIC
!
!
ip access-list extended L2TP_TRAFFIC
permit udp host 77.1.1.7 eq 1701 host 55.1.1.3 eq 1701
!
interface Ethernet0/0
ip address 77.1.1.7 255.255.255.0
crypto map L2TP_VPN
!
!


Проверяем работу сессии через пинг с внутренней сети удаленного клиента (LAC) и просмотра статистики сессионных пакетов на L2TP HUBe (LNS)
Проверяем статистики L2TPv3 сессии
LNS#sh caller user LAC

User: LAC, line Vi3, service PPPoVPDN
Connected for 00:04:10, Idle for 00:00:05
Timeouts:    Limit     Remaining Timer Type
-         -         -
PPP: LCP Open, MS CHAP V2 -->), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 247 packets input, 16456 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
129 packets output, 3846 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets

<после прохождения всех ping-ов проверяем вновь>
LNS#sh caller user LAC

User: LAC, line Vi3, service PPPoVPDN
Connected for 00:04:45, Idle for 00:00:02
Timeouts:    Limit     Remaining Timer Type
-         -         -
PPP: LCP Open, MS CHAP V2 (ß>), IPCP
IP: Local 3.3.3.3, remote 7.7.7.7
Counts: 327 packets input, 23288 bytes, 0 no buffer
0 input errors, 0 CRC, 0 frame, 0 overrun
188 packets output, 4226 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
Пропингуем 100 пакетов удаленной сети через туннель
LAC#ping 192.168.1.1 repeat 100 source 172.30.1.7
Type escape sequence to abort.
Sending 100, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!.!!!!!!!.!!!!!.!!!!!.!!!.!!!!!..!.!!!!!!!!!!!!.!!!!!..!!!!.


Формат пакета L2TPv2 over IPSec

*
Увеличить

Формат пакета IP | ESP header | UDP | L2TP | PPP | ESP trailer | Auth trailer
Overhead ESP_header (8байт) + UDP (8байт) + L2TPv2 (8байт) + PPP (4 байта) + ESP_trailer (min 2байта) + SHA_auth (160бит =  20 байт) = 50 бaйт


Работа OSPF over L2TPv2 over IPSec


Соседство через OSPF не было потеряно, hello пакеты по-прежнему приходят через каждый 10 сек. Маршруты анонсируются через удаленный OSPF соседний маршрутизатор.
LNS#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
7.7.7.7                0   FULL/  -        00:00:35    7.7.7.7         Virtual-Access3
192.168.1.1       1   FULL/DR      00:00:33    192.168.1.1     Ethernet0/0

LNS#sh ip route
C        7.7.7.7 is directly connected, Virtual-Access3
O        77.77.77.77/32 [110/2] via 7.7.7.7, 21:54:59, Virtual-Access3
172.30.0.0/24 is subnetted, 1 subnets
S        172.30.1.0 [1/0] via 7.7.7.7
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks


Масштабирование. Подключение нового удаленного офиса через L2TPv2


Настройка для LNS, т.е. для L2TPv2 HUBа минимальная – необходимо лишь добавить пользователя для PPP CHAP авторизации. Если этого не сделать, то будет следующая ошибка:
*Nov  9 10:31:35.178: VPDN uid:123 disconnect (AAA) IETF: 17/user-error Ascend: 26/PPP CHAP Fail
*Nov  9 10:31:35.178: VPDN uid:123 vpdn shutdown session, result=2, error=6, vendor_err=0, syslog_error_code=8, syslog_key_type=1


Добавляем второго LAC

*
LNS#
username LAC_9 password 0 cisco123
LAC_9#
username LNS password 0 cisco123
!
l2tp-class client.init.class
authentication
password cisco123
!
pseudowire-class pwclass1
encapsulation l2tpv2
protocol l2tpv2 client.init.class
ip local interface Ethernet0/0
!
interface Loopback0
ip address 9.9.9.9 255.255.255.255
!
interface Virtual-PPP1
ip address loopback0
ppp authentication ms-chap-v2
no cdp enable
pseudowire 55.1.1.3 1 pw-class pwclass1
!
ip route 192.168.1.0 255.255.255.0 Virtual-PPP1


После этого на LNS уже 2 туннеля
LNS#sh vpdn tunnel

L2TP Tunnel Information Total tunnels 2 sessions 2

LocTunID   RemTunID   Remote Name   State  Remote Address  Sessn L2TP Class/
Count VPDN Group
35949            21672             LAC                  est           77.1.1.7             1     VPDN-L2TP
49973            18492             LAC_9              est           44.1.1.9            1     VPDN-L2TP


Работа OSPF в L2TPv2
В случае подключение удаленных офисов через L2TPv2 – нет ограничений в использовании динамических протоколов маршрутизации. Для включения OSPF заведем на каждом удаленном маршрутизаторе по сети на loopback-е:
LNS#
interface Loopback0
ip address 3.3.3.3 255.255.255.255
router ospf 1
network 3.3.3.3 0.0.0.0 area 0
LAC#
interface Loopback0
ip address 7.7.7.7 255.255.255.255
!
interface Loopback1
ip address 77.77.77.77 255.255.255.255
!
router ospf 1
router-id 7.7.7.7
network 7.7.7.7 0.0.0.0 area 0
network 77.77.77.77 0.0.0.0 area 0
LAC_9#
interface Loopback0
ip address 9.9.9.9 255.255.255.255
!
interface Loopback1
ip address 99.99.99.99 255.255.255.255
!
router ospf 1
router-id 9.9.9.9
network 9.9.9.9 0.0.0.0 area 0
network 99.99.99.99 0.0.0.0 area 0


Проверяем OSPF соседство и настроенные маршруты
LNS#sh ip ospf neighbor

Neighbor ID     Pri   State           Dead Time   Address         Interface
9.9.9.9                0   FULL/  -        00:00:39    9.9.9.9         Virtual-Access3
7.7.7.7                0   FULL/  -        00:00:39    7.7.7.7         Virtual-Access4
192.168.1.1       1   FULL/DR      00:00:39    192.168.1.1     Ethernet0/0

Все региональные офисы видят маршруты друг друга через R3 – L2TPv2 HUB
LAC_9#sh ip route ospf (видны маршруты маршрутизатора R7)
7.0.0.0/32 is subnetted, 1 subnets
O        7.7.7.7 [110/3] via 3.3.3.3, 00:02:14, Virtual-PPP1
77.0.0.0/32 is subnetted, 1 subnets
O        77.77.77.77 [110/3] via 3.3.3.3, 00:02:14, Virtual-PPP1

Трассировка между удаленными офисами:
LAC_9#traceroute 77.77.77.77 source 99.99.99.99
Type escape sequence to abort.
Tracing the route to 77.77.77.77
VRF info: (vrf in name/id, vrf out name/id)
1 3.3.3.3 5 msec 2 msec 4 msec
2 7.7.7.7 5 msec 4 msec *


В случае не использования OSPF, каждое добавление нового регионального офиса требует статического добавления маршрутов на каждом существующем маршрутизаторе (и региональном и L2TP HUBe) с адресом достижения – ip адрес ppp интерфейса.
В случае хорошего дизайна распределения IP адресов мы можем ограничиться тем, что на региональных маршрутизаторах 1 раз добавили суммарный маршрут до всей внутренних региональных сетей, например 192.168.25.0/24 на interface virtual-ppp VPN HUBa, тогда при подключении новой подсети а-ля 192.168.25.16/29 нам не нужно будет ничего добавлять на региональных маршрутизаторах, останется только лишь на VPN HUBе указать за каким vitual-ppp интерфейсом нового регионального маршрутизатора находится эта сеть:
HUB(conf)#ip route 192.168.25.16 255.255.255.248 16.16.16.16 (<- где 16.16.16.16 это virtual-ppp интерфейс нового регионального маршрутизатора, и который в таблице маршрутизации VPN HUBa будет выглядеть как непосредственно подключенный:
C        16.16.16.16 is directly connected, Virtual-Access4)



Спасибо самым стойким и усидчивым читателям, дошедшим до конца данной статьи, за ваше внимание и терпение. Как я уже отмечал в начале статьи, мне бы хотелось, чтобы данный обзор стал небольшим сборником и справочным материалом, который необязательно помнить наизусть, но к которому можно всегда обратиться. Надеюсь, что это реально поможет моим коллегам по «цеху» учесть нюансы в построении качественного, красивого и грамотного сетевого дизайна, избежать подводных камней и в целом сделать свою работу на высшем уровне!
Автор: Семенов Вадим  •  Иcточник: www.habrahabr.ru  •  Опубликована: 04.03.2015
Нашли ошибку в тексте? Сообщите о ней автору: выделите мышкой и нажмите CTRL + ENTER
Теги:   VPN.


Оценить статью:
Вверх
Комментарии посетителей
Комментарии отключены. С вопросами по статьям обращайтесь в форум.