Построение связности между главным офисом и филиалами на базе Site-to-Site VPN
Site-to-Site VPN – это не отдельный протокол, а проверенная временем технология, решающая задачу безопасного объединения географически распределенных сетей в единое целое.
Главная идея Site-to-Site VPN – создать прозрачный зашифрованный канал между двумя (и более) офисами так, чтобы компьютеры и серверы в них «видели» друг друга, словно находятся в одном здании.
В отличие от клиентских VPN, где каждый сотрудник подключается со своего ноутбука, здесь соединяются целые сети. Маршрутизатор в одном офисе берет трафик, адресованный в соседний филиал, шифрует его и отправляет через интернет. Маршрутизатор на другой стороне расшифровывает данные и доставляет их локальному получателю. Для пользователей этот процесс абсолютно незаметен – им достаточно открыть общую папку или корпоративный портал, не думая о том, что сервер находится за сотни километров.
С технической стороны это достигается объединением нескольких компонентов. Во-первых, протокол IPsec обеспечивает конфиденциальность и целостность данных, шифруя каждый IP-пакет перед отправкой через публичную сеть. Во-вторых, туннельные протоколы (например, GRE или VTI) упаковывают приватные IP-пакеты в публичные, позволяя локальным сетям с «серыми» адресами общаться напрямую, несмотря на NAT и маршрутизацию в интернете. В-третьих, протоколы динамической маршрутизации (OSPF, EIGRP, BGP) работают поверх этих туннелей, автоматически сообщая маршрутизаторам, какие подсети находятся за каким филиалом.
Без этой связки инженерам пришлось бы вручную прописывать статические маршруты до каждой сети, что крайне неудобно при любом изменении топологии.
Site-to-Site VPN необходим для построения безопасного и контролируемого корпоративного периметра, выходящего за пределы одного здания. Он решает задачу защиты данных в недоверенной среде интернета, но при этом обеспечивает прозрачность сетевого взаимодействия. Филиалы получают доступ к общим базам данных, IP-телефонии и внутренним приложениям ровно так же, как если бы они были подключены к одному коммутатору.
Более того, современные реализации позволяют строить отказоустойчивые схемы с резервными интернет-каналами и балансировкой нагрузки, что делает Site-to-Site VPN фундаментом, на котором держится связность любого территориально распределенного бизнеса.
Параметры сетевых устройств
| Template | Name/prefix | CPU | RAM (MB) | Ethernets |
|---|---|---|---|---|
| Cisco vIOS Router | RTR-ISP | 1 | 512 | 4 |
| Cisco vIOS Router | RTR-HQ | 1 | 512 | 4 |
| MikroTik RouterOS | RTR-BR1 | 1 | 512 | 4 |
| MikroTik RouterOS | RTR-BR | 1 | 512 | 4 |
| Cisco vIOS Switch | SW-ISP | 1 | 512 | 8 |
| Virtual PC (VPCS) | vPC-HQ | – | – | – |
| Virtual PC (VPCS) | vPC-BR1 | – | – | – |
| Virtual PC (VPCS) | vPC-BR2 | – | – | – |
Подключения между устройствами
| Наименование узла | Интерфейс | IP-адрес | Маска подсети | Шлюз по умолчанию |
|---|---|---|---|---|
| RTR-ISP | Gi0/0 | DHCP | DHCP | DHCP |
| RTR-ISP | Gi0/1.99 | – | – | – |
| RTR-ISP | Gi0/1.100 | – | – | – |
| SW-ISP | Gi0/0 | trunk | – | – |
| SW-ISP | Gi0/1 | VLAN 99 | – | – |
| SW-ISP | Gi0/2 | VLAN 100 | – | – |
| SW-ISP | Gi0/3 | VLAN 100 | – | – |
| RTR-HQ | Gi0/0 | PPPoE-клиет | – | – |
| RTR-HQ | Gi0/1 | 172.16.0.1 | 255.255.255.0 | – |
| RTR-HQ | Tunnel0 | 99.99.99.1 | 255.255.255.0 | – |
| RTR-BR1 | eth1 | PPPoE-клиет | – | – |
| RTR-BR1 | eth2 | 192.168.1.1 | 255.255.255.0 | – |
| RTR-BR1 | Tunnel0 | 99.99.99.2 | 255.255.255.0 | – |
| RTR-BR2 | eth1 | PPPoE-клиет | – | – |
| RTR-BR2 | eth2 | 192.168.2.1 | 255.255.255.0 | – |
| RTR-BR2 | Tunnel0 | 99.99.99.3 | 255.255.255.0 | – |
| vPC-HQ | NIC | 172.16.0.10 | 255.255.255.0 | 172.16.0.1 |
| vPC-BR1 | NIC | 192.168.1.10 | 255.255.255.0 | 192.168.1.1 |
| vPC-BR2 | NIC | 192.168.2.10 | 255.255.255.0 | 192.168.2.1 |
Топология сети

Настройка сети
Прежде, чем приступить к настройке, стоит заметить: основной акцент в данной практической работе направлен на настройку непосредственно маршрутизаторов, которые участвуют в создании Site-to-Site VPN, однако локальные сети упрощены до одного-единственного узла – vPC. Это позволит сконцентрироваться на настройке маршрутизирующего оборудования.
Сейчас необходимо настроить выход в Интернет через сеть ISP и сформировать PPPoE-сервер для подключения клиентов.
На RTR-ISP:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-ISP
RTR-ISP(config)#access-list 1 permit any
RTR-ISP(config)#ip nat inside source list 1 interface gi0/0 overload
RTR-ISP(config)#interface gi0/0
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#ip address dhcp
RTR-ISP(config-if)#ip nat outside
RTR-ISP(config-if)#exit
RTR-ISP(config)#aaa new-model
RTR-ISP(config)#aaa authentication ppp default local
RTR-ISP(config)#aaa authorization network default local
RTR-ISP(config)#ip local pool HQ_POOL 100.0.0.10 100.0.0.10
RTR-ISP(config)#ip local pool BR_POOL 100.0.100.10 100.0.100.200
RTR-ISP(config)#username rtr-hq password 0 P@ssw0rd_HQ
RTR-ISP(config)#username rtr-br1 password 0 P@ssw0rd_BR1
RTR-ISP(config)#username rtr-br2 password 0 P@ssw0rd_BR2
RTR-ISP(config)#interface loopback0
RTR-ISP(config-if)#ip address 10.0.0.1 255.255.255.255
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface loopback1
RTR-ISP(config-if)#ip address 20.0.0.1 255.255.255.255
RTR-ISP(config-if)#exit
RTR-ISP(config)#bba-group pppoe HQ
RTR-ISP(config-bba-group)#virtual-template 1
RTR-ISP(config-bba-group)#exit
RTR-ISP(config)#bba-group pppoe BR
RTR-ISP(config-bba-group)#virtual-template 2
RTR-ISP(config-bba-group)#exit
RTR-ISP(config)#interface virtual-template1
RTR-ISP(config-if)#ip unnumbered lo0
RTR-ISP(config-if)#ip nat inside
RTR-ISP(config-if)#peer default ip address pool HQ_POOL
RTR-ISP(config-if)#ppp authentication chap pap ms-chap ms-chap-v2
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface virtual-template2
RTR-ISP(config-if)#ip unnumbered lo1
RTR-ISP(config-if)#ip nat inside
RTR-ISP(config-if)#peer default ip address pool BR_POOL
RTR-ISP(config-if)#ppp authentication chap pap ms-chap ms-chap-v2
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface gi0/1
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface gi0/1.99
RTR-ISP(config-subif)#encapsulation dot1q 99
RTR-ISP(config-subif)#no ip address
RTR-ISP(config-subif)#pppoe enable group HQ
RTR-ISP(config-subif)#exit
RTR-ISP(config)#interface gi0/1.100
RTR-ISP(config-subif)#encapsulation dot1q 100
RTR-ISP(config-subif)#no ip address
RTR-ISP(config-subif)#pppoe enable group BR
RTR-ISP(config-subif)#exit
RTR-ISP(config)#do write
Теперь необходимо настроить VLAN-ы на коммутаторе для того, чтобы клиенты взаимодействовали с нужными подинтерфейсами.
На SW-ISP:
Switch>enable
Switch#config terminal
Switch(config)#hostname SW-ISP
SW-ISP(config)#vlan 99
SW-ISP(config-vlan)#exit
SW-ISP(config)#vlan 100
SW-ISP(config-vlan)#exit
SW-ISP(config)#interface gi0/0
SW-ISP(config-if)#switchport trunk encapsulation dot1q
SW-ISP(config-if)#switchport mode trunk
SW-ISP(config-if)#exit
SW-ISP(config)#interface gi0/1
SW-ISP(config-if)#switchport access vlan 99
SW-ISP(config-if)#switchport mode access
SW-ISP(config-if)#exit
SW-ISP(config)#interface range gi0/2-3
SW-ISP(config-if-range)#switchport access vlan 100
SW-ISP(config-if-range)#switchport mode access
SW-ISP(config-if-range)#exit
SW-ISP(config)#do write
Теперь необходимо выполнить настройку главного офиса для подключения к сети ISP через PPPoE.
На RTR-HQ:
Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-HQ
RTR-HQ(config)#interface dialer1
RTR-HQ(config-if)#ip address negotiated
RTR-HQ(config-if)#mtu 1492
RTR-HQ(config-if)#encapsulation ppp
RTR-HQ(config-if)#dialer pool 1
RTR-HQ(config-if)#ppp authentication chap pap callin
RTR-HQ(config-if)#ppp chap hostname rtr-hq
RTR-HQ(config-if)#ppp chap password 0 P@ssw0rd_HQ
RTR-HQ(config-if)#ppp pap sent-username rtr-hq password P@ssw0rd_HQ
RTR-HQ(config-if)#ip nat outside
RTR-HQ(config-if)#exit
RTR-HQ(config)#access-list 1 permit any
RTR-HQ(config)#ip nat inside source list 1 interface dialer1 overload
RTR-HQ(config)#interface gi0/1
RTR-HQ(config-if)#ip address 172.16.0.1 255.255.255.0
RTR-HQ(config-if)#ip nat inside
RTR-HQ(config-if)#no shutdown
RTR-HQ(config-if)#exit
RTR-HQ(config)#inteface gi0/0
RTR-HQ(config-if)#no ip address
RTR-HQ(config-if)#no shutdown
RTR-HQ(config-if)#pppoe-client dial-pool-number 1
RTR-HQ(config-if)#exit
RTR-HQ(config)#ip route 0.0.0.0 0.0.0.0 dialer1
RTR-HQ(config)#do write
Чтобы убедиться в том, что PPPoE-соединение было установлено, можно посмотреть вывод команды «show ip interface brief» и выполнить запрос в Интернет «ping 1.1.1.1»:

По аналогии настройте маршрутизаторы филиалов RTR-BR1 и RTR-BR2!
На RTR-BR1:
MikroTik 6.49.19 (stable)
MikroTik Login: admin
Password: *Enter*
Do you want to see the software license? [Y/n]: n
new password> P@ssw0rd
repeat new password> P@ssw0rd
[admin@MikroTik] > system identity set name=RTR-BR1
[admin@RTR-BR1] > interface pppoe-client add name="PPPoE-to-ISP" interface=ether1 user="rtr-br1" password="P@ssw0rd_BR1" add-default-route=yes use-peer-dns=yes disabled=no
[admin@RTR-BR1] > ip address add interface=ether2 address=192.168.1.1/24
[admin@RTR-BR1] > ip firewall nat add action=masquerade chain=srcnat out-interface=PPPoE-to-ISP
На RTR-BR2:
MikroTik 6.49.19 (stable)
MikroTik Login: admin
Password: *Enter*
Do you want to see the software license? [Y/n]: n
new password> P@ssw0rd
repeat new password> P@ssw0rd
[admin@MikroTik] > system identity set name=RTR-BR2
[admin@RTR-BR2] > interface pppoe-client add name="PPPoE-to-ISP" interface=ether1 user="rtr-br2" password="P@ssw0rd_BR2" add-default-route=yes use-peer-dns=yes disabled=no
[admin@RTR-BR2] > ip address add interface=ether2 address=192.168.2.1/24
[admin@RTR-BR2] > ip firewall nat add action=masquerade chain=srcnat out-interface=PPPoE-to-ISP
Проверка на RTR-BR1 и RTR-BR2:


Теперь можно на vPC назначить IP-адреса и убедиться в том, что все работает:



Все vPC работают. Пора переходить к настройке Site-to-Site VPN.
На RTR-HQ:
RTR-HQ>enable
RTR-HQ#config terminal
RTR-HQ(config)#crypto isakmp policy 10
RTR-HQ(config-isakmp)#enc aes 256
RTR-HQ(config-isakmp)#hash sha256
RTR-HQ(config-isakmp)#authentication pre-share
RTR-HQ(config-isakmp)#group 14
RTR-HQ(config-isakmp)#lifetime 86400
RTR-HQ(config-isakmp)#exit
RTR-HQ(config)#crypto isakmp key P@ssw0rd_VPN_BR1 address 100.0.100.10
RTR-HQ(config)#crypto isakmp key P@ssw0rd_VPN_BR2 address 100.0.100.11
RTR-HQ(config)#crypto ipsec transform-set HQ-MIKROTIK esp-aes 256 esp-sha256-hmac
RTR-HQ(cfg-crypto-trans)#mode tunnel
RTR-HQ(cfg-crypto-trans)#exit
RTR-HQ(config)#crypto map HQ-CMAP 10 ipsec-isakmp
RTR-HQ(config-crypto-map)#set peer 100.0.100.10
RTR-HQ(config-crypto-map)#set transform-set HQ-MIKROTIK
RTR-HQ(config-crypto-map)#set pfs group14
RTR-HQ(config-crypto-map)#match address GRE-BR1
RTR-HQ(config-crypto-map)#exit
RTR-HQ(config)#crypto map HQ-CMAP 20 ipsec-isakmp
RTR-HQ(config-crypto-map)#set peer 100.0.100.11
RTR-HQ(config-crypto-map)#set transform-set HQ-MIKROTIK
RTR-HQ(config-crypto-map)#set pfs group14
RTR-HQ(config-crypto-map)#match address GRE-BR2
RTR-HQ(config-crypto-map)#exit
RTR-HQ(config)#ip access-list extended GRE-BR1
RTR-HQ(config-ext-nacl)#permit gre host 100.0.0.10 host 100.0.100.10
RTR-HQ(config-ext-nacl)#exit
RTR-HQ(config)#ip access-list extended GRE-BR2
RTR-HQ(config-ext-nacl)#permit gre host 100.0.0.10 host 100.0.100.11
RTR-HQ(config-ext-nacl)#exit
RTR-HQ(config)#interface tunnel1
RTR-HQ(config-if)#ip address 99.1.99.1 255.255.255.252
RTR-HQ(config-if)#ip mtu 1400
RTR-HQ(config-if)#ip tcp adjust-mss 1360
RTR-HQ(config-if)#ip ospf mtu-ignore
RTR-HQ(config-if)#tunnel source dialer1
RTR-HQ(config-if)#tunnel destination 100.0.100.10
RTR-HQ(config-if)#exit
RTR-HQ(config)#interface tunnel2
RTR-HQ(config-if)#ip address 99.2.99.1 255.255.255.252
RTR-HQ(config-if)#ip mtu 1400
RTR-HQ(config-if)#ip tcp adjust-mss 1360
RTR-HQ(config-if)#ip ospf mtu-ignore
RTR-HQ(config-if)#tunnel source dialer1
RTR-HQ(config-if)#tunnel destination 100.0.100.11
RTR-HQ(config-if)#exit
RTR-HQ(config)#interface dialer1
RTR-HQ(config-if)#crypto map HQ-CMAP
RTR-HQ(config-if)#exit
RTR-HQ(config)#do write
VPN настроен на RTR-HQ. Теперь необходимо настроить клиентов, которые будут подключаться к нему.
На RTR-BR1:
[admin@RTR-BR1] > ip ipsec profile add dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 name="HQ-Profile" nat-traversal=no
[admin@RTR-BR1] > ip ipsec peer add address=100.0.0.10/32 name="Peer-HQ" profile=HQ-Profile
[admin@RTR-BR1] > ip ipsec proposal add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name="HQ-Proposal" pfs-group=modp2048
[admin@RTR-BR1] > ip ipsec identity add peer=Peer-HQ secret="P@ssw0rd_VPN_BR1"
[admin@RTR-BR1] > ip ipsec policy add dst-address=100.0.0.10/32 peer=Peer-HQ proposal=HQ-Proposal protocol=gre src-address=100.0.100.10/32 tunnel=yes
[admin@RTR-BR1] > interface gre add name="Tunnel-HQ" remote-address=100.0.0.10 mtu=1400
[admin@RTR-BR1] > ip address add address=99.1.99.2/30 interface=Tunnel-HQ
Примерно то же самое необходимо сделать на RTR-BR2:
[admin@RTR-BR2] > ip ipsec profile add dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 name="HQ-Profile" nat-traversal=no
[admin@RTR-BR2] > ip ipsec peer add address=100.0.0.10/32 name="Peer-HQ" profile=HQ-Profile
[admin@RTR-BR2] > ip ipsec proposal add auth-algorithms=sha256 enc-algorithms=aes-256-cbc name="HQ-Proposal" pfs-group=modp2048
[admin@RTR-BR2] > ip ipsec identity add peer=Peer-HQ secret="P@ssw0rd_VPN_BR2"
[admin@RTR-BR2] > ip ipsec policy add dst-address=100.0.0.10/32 peer=Peer-HQ proposal=HQ-Proposal protocol=gre src-address=100.0.100.11/32 tunnel=yes
[admin@RTR-BR2] > interface gre add local-address=100.0.100.11 name="Tunnel-HQ" remote-address=100.0.0.10 mtu=1400
[admin@RTR-BR2] > ip address add address=99.2.99.2/30 interface=Tunnel-HQ
Можно проверить на RTR-HQ, чтобы VPN-соединения были установлены корректно:

Для сходимости главного офиса и филиалов необходимо настроить протокол динамической маршрутизации OSPF.
На RTR-HQ:
RTR-HQ>enable
RTR-HQ#config terminal
RTR-HQ(config)#router ospf 1
RTR-HQ(config-router)#router-id 1.1.1.1
RTR-HQ(config-router)#passive-interface gi0/1
RTR-HQ(config-router)#network 172.16.0.0 0.0.0.255 area 0
RTR-HQ(config-router)#network 99.1.99.0 0.0.0.3 area 0
RTR-HQ(config-router)#network 99.2.99.0 0.0.0.3 area 0
RTR-HQ(config-router)#exit
RTR-HQ(config)#do write
И на маршрутизаторах филиалов.
На RTR-BR1:
[admin@RTR-BR1] > routing ospf instance set [find default=yes] router-id=2.2.2.2
[admin@RTR-BR1] > routing ospf network add area=backbone network=192.168.1.0/24
[admin@RTR-BR1] > routing ospf network add area=backbone network=99.1.99.0/30
[admin@RTR-BR1] > routing ospf interface add interface=Tunnel-HQ network-type=point-to-point
На RTR-BR2:
[admin@RTR-BR2] > routing ospf instance set [find default=yes] router-id=3.3.3.3
[admin@RTR-BR2] > routing ospf network add area=backbone network=192.168.2.0/24
[admin@RTR-BR2] > routing ospf network add area=backbone network=99.2.99.0/30
[admin@RTR-BR2] > routing ospf interface add interface=Tunnel-HQ network-type=point-to-point
Итоговая проверка связности между главным офисом и филиалами:

Как видно, связность присутствует. Site-to-Site VPN настроен успешно!