Пример настройки подключения удаленных офисов или филиалов с использованием двух маршрутизаторов MikroTik и VRRP. При таком подключении вы получаете надежное отказоустойчивое решение доступа в ЦОД или центральный офис, с одновременным использованием двух каналов в интернет (балансировка). И все это будет работать без использования скриптов на любом интернет подключении, без разницы dhcp, ppoe это или что-то другое.
Вот такая вот не простая схема, на примере одного филиала:
В ЦОД настроен маршрутизатор MikroTik CHR на котором подняты L2TP & SSTP серверы, и сеть серверов. Интернет канал один. Надежность серверов и канала обеспечивает сам ЦОД.
Список подсетей в ЦОД:
- 10.0.0.0/24 серверы в ЦОД.
- 172.16.1.1/24 L2TP сервер
- 172.16.2.1/24 SSTP сервер
- 172.20.1.1/32 loopback
Настройка маршрутизатора в ЦОД:
/interface list
add name=VPN
add name=LAN
/interface bridge add name=loopback
/ip address add address=172.20.1.1 interface=loopback network=172.20.1.1
/interface ethernet set [ find default-name=ether2 ] name=lan
/ip address add address=10.0.0.1/24 interface=lan network=10.0.0.0
/interface ethernet set [ find default-name=ether1 ] name=wan
/ip address add address=203.0.113.63/24 interface=wan network=203.0.113.0
/ip route add distance=1 gateway=203.0.113.1
/ip firewall nat add action=masquerade chain=srcnat out-interface=wan
/ip dns set allow-remote-requests=yes servers=8.8.8.8,8.8.4.4
# VPN
/ppp profile
add change-tcp-mss=yes interface-list=VPN local-address=172.16.1.1 name=profile-l2tp use-encryption=yes
add change-tcp-mss=yes interface-list=VPN local-address=172.16.2.1 name=profile-sstp use-encryption=yes
/interface l2tp-server server set authentication=mschap2 enabled=yes ipsec-secret=1234567890 use-ipsec=yes
/interface sstp-server server set authentication=mschap2 enabled=yes
/ppp secret
add name=branch2-1 password=password1 profile=profile-l2tp remote-address=172.16.1.2 service=l2tp
add name=branch2-2 password=password2 profile=profile-sstp remote-address=172.16.2.2 service=sstp
# OSPF
/routing ospf area add area-id=0.0.0.1 name=area1
/routing ospf instance set [ find default=yes ] router-id=172.20.0.1
/routing filter
add action=discard chain=ospf-in prefix=172.16.1.0/24 prefix-length=32
add action=discard chain=ospf-in prefix=172.16.2.0/24 prefix-length=32
/routing ospf network
add area=area1 network=172.20.0.1/32
add area=backbone network=172.16.1.0/24
add area=backbone network=172.16.2.0/24
add area=area1 network=10.0.0.0/24
# FW
/ip firewall address-list add address=admin.ip disabled=yes list=ManageIP
/ip firewall filter
add action=drop chain=input comment=invalid connection-state=invalid
add action=accept chain=input comment="Allow established & related" connection-state=established,related
add action=accept chain=input comment=l2tp dst-port=1701 in-interface=wan protocol=udp
add action=accept chain=input comment=sstp dst-port=443 in-interface=wan protocol=tcp
add action=accept chain=input comment="Allow access from VPN" in-interface-list=VPN
add action=accept chain=input comment="Allow access for ManageIP group" src-address-list=ManageIP
add action=drop chain=input comment="Drop all other"
add action=accept chain=forward comment="Allow established & related" connection-state=established,related
add action=accept chain=forward comment="Allow LAN 2 All" in-interface-list=LAN
add action=accept chain=forward comment="Allow VPN 2 All" in-interface-list=VPN
add action=drop chain=forward comment="Drop all other"
/ip neighbor discovery-settings set discover-interface-list=!WAN
/system clock set time-zone-autodetect=no
/system clock manual set time-zone=+03:00
/system identity set name=COD
Обратите внимание на адрес-лист ManageIP. С адресов в этом списке будет удаленой доступ на машрутизатор.
Настройка машрутизаторов в филиале.
В каждом филиале должно быть по два маршрутизатора (R1 и R2). Маршрутизаторы могут быть разной модели. При не высокой стоимости оборудования MikroTik даже небольшая компания может себе это позволить. На каждый маршрутизатор подключен отдельный интернет-канал, и каждый маршрутизатор подключается к маршрутизатору в ЦОД через отдельный VPN туннель. Используется динамическая маршрутизация через OSPF.
Локальная сеть организована из нескольких коммутаторов, объединенных в кольцо. Используются две VLAN. Если на одном из маршуртизаторов падает туннель в ЦОД, или маршрутизатор ломается, весь трафик автоматический направляется через соседний маршрутизатор. Для этого на обоих маршрутизаторах используется VRRP, отдельный для каждой VLAN. Для VLAN20, по умолчанию, трафик в ЦОД и интернет идет через маршрутизатор R1, а для VLAN30 через R2. Тем самым мы получаем одновременное использование сразу двух каналов в интернет. Распределение по VLAN статичное, можно сделать на основе групп пользователей, или, к примеру, на одну пустить компьютеры, а на вторую телефонию. В этой статье не рассматривается настройка коммутаторов.
Список подсетей филиала:
- 172.20.X.1 loopback R1
- 172.20.X.2 loopback R2
- 10.20.X.0/24 VLAN20 филиала X
- 10.20.X.1 шлюз VRRP 30 для VLAN20 в филиале X
- 10.20.X.251 адрес маршрутизатора R1 в VLAN20 для филиала X
- 10.20.X.252 адрес маршрутизатора R2 в VLAN20 для филиала X
- 10.30.X.0/24 VLAN30 филиала X
- 10.30.X.1 шлюз VRRP 30 для VLAN30 для филиала X
- 10.30.X.251 адрес маршрутизатора R1 в VLAN30 для филиала X
- 10.30.X.252 адрес маршрутизатора R2 в VLAN30 для филиала X
где X – номер филиала. 1 – ЦОД, 2 – филиал №2, и т.д.
Настройка маршрутизатора R1:
/interface bridge add name=loopback
/ip address add address=172.20.2.1/32 interface=loopback
/interface vlan
add interface=ether2 name=vlan20 vlan-id=20
add interface=ether2 name=vlan30 vlan-id=30
/interface vrrp
add interface=vlan20 name=vrrp20 vrid=20
add interface=vlan30 name=vrrp30 priority=50 vrid=30
/ip address
add address=10.20.2.251/24 interface=vlan20
add address=10.30.2.251/24 interface=vlan30
add address=10.20.2.1/24 interface=vrrp20
add address=10.30.2.1/24 interface=vrrp30
add address=198.51.100.111/24 interface=ether1
/ip route add distance=1 gateway=198.51.100.1
/ip dns set allow-remote-requests=yes servers=77.88.8.88,77.88.8.2
/ppp profile
add change-tcp-mss=yes name=profile-vrrp on-down=\
"/interface vrrp set [ find name=vrrp20 ] disabled=yes" on-up=\
"/interface vrrp set [ find name=vrrp20 ] disabled=no" use-encryption=yes
/interface l2tp-client
add allow=mschap2 connect-to=203.0.113.63 disabled=no ipsec-secret=\
1234567890 name=l2tp-out1 password=password1 profile=profile-vrrp \
use-ipsec=yes user=branch2-1
/interface list
add name=LAN
add name=WAN
/interface list member
add interface=ether1 list=WAN
add interface=ether2 list=LAN
add interface=vlan20 list=LAN
add interface=vlan30 list=LAN
add interface=l2tp-out1 list=LAN
add interface=vrrp30 list=LAN
add interface=vrrp20 list=LAN
/ip pool
add name=pool20 ranges=10.20.2.2-10.20.2.99
add name=pool30 ranges=10.30.2.2-10.30.2.99
/ip dhcp-server
add address-pool=pool20 disabled=no interface=vlan20 name=server20
add address-pool=pool30 disabled=no interface=vlan30 name=server30
/ip dhcp-server network
add address=10.20.2.0/24 dns-server=10.20.2.1 gateway=10.20.2.1
add address=10.30.2.0/24 dns-server=10.30.2.1 gateway=10.30.2.1
/routing ospf area add area-id=0.0.0.2 name=area2
/routing ospf instance set [ find default=yes ] router-id=172.20.1.1
/routing ospf interface
add cost=20 interface=vlan30 network-type=broadcast
add interface=vlan20 network-type=broadcast
add interface=vrrp20 network-type=broadcast
add cost=20 interface=vrrp30 network-type=broadcast
/routing ospf network
add area=area2 network=172.20.2.1/32
add area=backbone network=172.16.1.0/24
add area=area2 network=10.20.2.0/24
add area=area2 network=10.30.2.0/24
/ip firewall filter
add action=drop chain=input comment="Drop invalid connection packets" connection-state=invalid in-interface-list=WAN
add action=accept chain=input comment="Allow ICMP" protocol=icmp
add action=accept chain=input comment="Allow established & related" connection-state=established,related
add action=accept chain=input comment="Allow access from Internal" connection-state="" in-interface-list=LAN
add action=drop chain=input comment="All other Drop"
add action=accept chain=forward comment="Allow established & related" connection-state=established,related
add action=drop chain=forward comment="Drop invalid connection packets" connection-state=invalid
add action=accept chain=forward comment="Allow Internet accees" in-interface-list=LAN out-interface-list=WAN
add action=accept chain=forward comment="Allow intersite connection" in-interface-list=LAN out-interface-list=LAN
add action=drop chain=forward comment="All other Drop"
/ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN
/ip neighbor discovery-settings set discover-interface-list=LAN
/system clock set time-zone-autodetect=no
/system clock manual set time-zone=+03:00
/system identity set name=R1
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN
Настройка маршрутизатора R2:
/interface bridge add fast-forward=no name=loopback
/ip address add address=172.20.2.2/32 interface=loopback
/interface vlan
add interface=ether2 name=vlan20 vlan-id=20
add interface=ether2 name=vlan30 vlan-id=30
/interface vrrp
add interface=vlan20 name=vrrp20 priority=50 vrid=20
add interface=vlan30 name=vrrp30 vrid=30
/ip address
add address=10.20.2.1/24 interface=vrrp20
add address=10.20.2.252/24 interface=vlan20
add address=10.30.2.1/24 interface=vrrp30
add address=10.30.2.252/24 interface=vlan30
add address=192.0.2.222/24 interface=ether1
/ip route add distance=1 gateway=192.0.2.1
/ip dns set allow-remote-requests=yes servers=77.88.8.88,77.88.8.2
/ppp profile
add change-tcp-mss=yes name=profile-vrrp on-down=\
"/interface vrrp set [ find name=vrrp30 ] disabled=yes" on-up=\
"/interface vrrp set [ find name=vrrp30 ] disabled=no" use-encryption=yes
/interface sstp-client
add connect-to=203.0.113.63 disabled=no name=sstp-out1 password=\
passsword2 profile=profile-vrrp user=branch2-2 \
verify-server-address-from-certificate=no
/interface list
add name=LAN
add name=WAN
/interface list member
add interface=ether1 list=WAN
add interface=ether2 list=LAN
add interface=vlan20 list=LAN
add interface=vlan30 list=LAN
add interface=sstp-out1 list=LAN
add interface=vrrp20 list=LAN
add interface=vrrp30 list=LAN
/ip pool
add name=pool20 ranges=10.20.2.100-10.20.2.199
add name=pool30 ranges=10.30.2.100-10.30.2.199
/ip dhcp-server
add address-pool=pool20 disabled=no interface=vlan20 name=server20
add address-pool=pool30 disabled=no interface=vlan30 name=server30
/ip dhcp-server network
add address=10.20.2.0/24 dns-server=10.20.2.1 gateway=10.20.2.1
add address=10.30.2.0/24 dns-server=10.30.2.1 gateway=10.30.2.1
/routing ospf area add area-id=0.0.0.2 name=area2
/routing ospf instance set [ find default=yes ] router-id=172.20.1.2
/routing ospf interface
add interface=vrrp30 network-type=broadcast
add cost=20 interface=vrrp20 network-type=broadcast
add cost=20 interface=vlan20 network-type=broadcast
add interface=vlan30 network-type=broadcast
/routing ospf network
add area=area2 network=172.20.2.2/32
add area=backbone network=172.16.2.0/24
add area=area2 network=10.20.2.0/24
add area=area2 network=10.30.2.0/24
/ip firewall filter
add action=drop chain=input comment="Drop invalid connection packets" connection-state=invalid in-interface-list=WAN
add action=accept chain=input comment="Allow ICMP" protocol=icmp
add action=accept chain=input comment="Allow established & related" connection-state=established,related
add action=accept chain=input comment="Allow access from Internal" connection-state="" in-interface-list=LAN
add action=drop chain=input comment="All other Drop"
add action=accept chain=forward comment="Allow established & related" connection-state=established,related
add action=drop chain=forward comment="Drop invalid connection packets" connection-state=invalid
add action=accept chain=forward comment="Allow Internet accees" out-interface-list=WAN
add action=accept chain=forward comment="Allow intersite connection" in-interface-list=LAN out-interface-list=LAN
add action=drop chain=forward comment="All other Drop"
/ip firewall nat add action=masquerade chain=srcnat out-interface-list=WAN
/ip neighbor discovery-settings set discover-interface-list=LAN
/system clock set time-zone-autodetect=no
/system clock manual set time-zone=+03:00
/system identity set name=R2
/tool mac-server set allowed-interface-list=LAN
/tool mac-server mac-winbox set allowed-interface-list=LAN
Заключение
Данное решение это не полная инструкция. Это скорее пример для начальной настройки, и в первую очередь показать как можно сделать надежное и отказоустойчивое решение без применения скриптов. Улучшить можно много чего. Например, на маршрутизаторах в филиале, порты ether2 & ether3 объединить через чип коммутации, и сделать кольцо, соединив на прямую два маршуртизатора через порты ether3. Также необходимо изменить правила файервола под свои нужды. И так далее. В каждой компании своя специфика и в результате получится свое решение.