Объединение маршрутизаторов в кластер
Пример настройки подключения удаленных офисов или филиалов с использованием двух маршрутизаторов 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
где 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. Также необходимо изменить правила файервола под свои нужды. И так далее. В каждой компании своя специфика и в результате получится свое решение.