Подключение к сети интернет

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

Когда только начинал заниматься сетями частенько задавался вопросом: как можно и нужно правильно создать энтерпрайзное подключение к провайдеру (ISP). Тогда бы мне такая статья здорово помогла, поэтому думаю материал полезный. Статья будет как всегда на примере настройки оборудования CISCO.


Виды подключений к ISP

Подключения к провайдерам разделяют на 4 вида:

Single-homed — подключение к одному провайдеру по 1 линку (1 link per ISP, 1 ISP) ;
Dual-homed — подключение к одному провайдеру несколькими линками (2+ links per ISP, 1 ISP). Здесь возможны комбинации:

  1. 1 роутер со стороны компании и 1 роутер со стороны провайдера;
  2. 1 роутер со стороны компании и 2 роутера со стороны провайдера;
  3. 2 роутера со стороны компании и 1 роутер со стороны провайдера;
  4. 2 роутера со стороны компании и 2 роутера со стороны провайдера

Multihomed — подключение к нескольким провайдерам, к каждому провайдеру 1 линк (1 link per ISP, 2+ ISPs). Опять же 1 или несколько роутеров со стороны компании;
Dual multihomed — подключение к нескольким провайдерам, к каждому провайдеру несколько линков (2+ links per ISP, 2+ ISPs).

Подключение к сети интернет

Когда не нужен BGP

Центровым протоколом для подключения компаний к интернету является BGP. Но BGP для компании нужен не всегда. Его можно использовать при любом виде подключения к ISP, технически всё будет работать, однако в ряде случаев смысла в этом нет. Тут подробнее, рассмотрим несколько вариантов:

  • Имеется только 1 подключение к интернету и один публичный IP адрес (Single-homed);

Вне зависимости от наличия или отсутствия ресурсов для интернета, в этом случае на роутере используется статический маршрут на роутер провайдера. BGP не нужен.

ip route 0.0.0.0 0.0.0.0 IP-адрес_роутера_ISP 

Если есть необходимость выставить ресурсы в интернет, это решается пробросом портов на роутере. Как самый простой и дешёвый вариант.

interface GigabitEthernet0
ip nat inside
...
!
interface GigabitEthernet1
ip address 209.165.200.225 255.255.255.252
ip nat outside
...
!
ip nat inside source static tcp 192.168.11.100 80 209.165.200.225 80

Вариант получше, но и посложнее, настроить на роутере ZBF. Выделить зоны, среди них DMZ, создать политики прохождения трафика и сидеть радоваться. Ещё лучше использовать для этого FW (типа ASA), а самый лучший NGFW (типа Check Point).

  • У компании 2 канала в интернет (Dual-homed, Multihomed), но нет ресурсов, которые должны быть доступны с интернета;

Такого не бывает? Бывает, ещё как. Какой-нибудь завод, связь с головным офисом нужна постоянная, поэтому несколько каналов. Тогда обычно один канал основной, а второй резервный. BGP не нужен. Возможно и использования обоих каналов также без BGP. Рассказываю на примерах.


Пример 1

Есть граничный роутер компании, у него интерфейс GigabitEthernet 0 подключен к одному провайдеру, а интерфейс GigabitEthernet 1 к другому.

interface GigabitEthernet0
description -- BackUP ISP MTS 10Mbp/s --
ip address 91.223.100.162 255.255.255.192
ip access-group WAN_IN in
ip access-group WAN_OUT out
ip flow ingress
ip flow egress
ip nat outside
ip inspect FW out
ip virtual-reassembly in
ntp disable
no cdp enable
!
interface GigabitEthernet1
description -- Main ISP Rostelekom 30Mbp/s --
ip address 62.183.37.2 255.255.255.252
ip access-group WAN_IN in
ip access-group WAN_OUT out
ip flow ingress
ip flow egress
ip nat outside
ip inspect FW out
ip virtual-reassembly in
ntp disable
no cdp enable

Условный Ростелеком основной и быстрый интернет, запасной и медленный условный МТС. Два маршрута по умолчанию:

ip route 0.0.0.0 0.0.0.0 62.183.37.1 track 100 - на Ростелеком
ip route 0.0.0.0 0.0.0.0 91.223.100.161 20 - на МТС

Первый маршрут отслеживается треком 100, у второго AD=20.

track 100 list boolean and
object 101
object 102
object 103
delay down 10 up 5
!
track 101 ip sla 101 reachability
!
track 102 ip sla 102 reachability
!
track 103 ip sla 103 reachability

Комбинированный трек 100 проверяет 3 условия доступности и имеет задержку в срабатывании.

ip sla 101
icmp-echo 62.183.37.1 source-interface GigabitEthernet1
threshold 1000
timeout 1500
frequency 3
ip sla schedule 101 life forever start-time now
ip sla 102
icmp-echo 8.8.8.8 source-interface GigabitEthernet1
threshold 1000
timeout 1500
frequency 3
ip sla schedule 102 life forever start-time now
ip sla 103
http get http://93.158.76.12 source-ip 62.183.37.2
ip sla schedule 103 life forever start-time now

Первая SLA мониторит доступность роутера Ростелекома по ICMP, но этого недостаточно, так как роутер может быть доступен, а интернет он не раздаёт по каким-то причинам. Поэтому есть ещё два SLA: мониторинг DNS Гугла и критически важного для работы HTTP-сервера.

event manager applet ISP-MAIN-UP
event track 100 state up
action 1.0 cli command "enable"
action 1.1 cli command "clear ip nat trans *"
action 1.2 cli command "conf t"
action 1.3 cli command "int tu16"
action 1.4 cli command "tunnel source gigabitEthernet 1"
event manager applet ISP-MAIN-DOWN
event track 100 state down
action 1.0 cli command "enable"
action 1.1 cli command "clear ip nat trans *"
action 1.2 cli command "conf t"
action 1.3 cli command "int tu16"
action 1.4 cli command "tunnel source GigabitEthernet 0"

Ну и собственно при срабатывании трека 100 в DOWN происходит следующее:

  • Заменяется статический маршрут на маршрут с AD 20;
  • Очищается трансляция NAT, так как внешний интерфейс теперь другой (interface GigabitEthernet0);
  • Подменяется интерфейс в туннеле DMVPN.

Если же трек 100 опять имеет состояние UP, то всё возвращается на свои места. Задержка в срабатывании нужна чтобы вот это "мероприятие" не скакало туда-сюда.

Подробнее о комбинированном треке: //xgu.ru/wiki/Cisco_Enhanced_Object_Tracking

Недостаток этого метода в том, что при работоспособности обоих провайдеров, второй провайдер никак не используется.


Пример 2

В случае 2 роутеров со стороны компании и по 1 линку с каждого роутера компании к провайдеру/провайдерам (Dual-homed, Multihomed), может использоваться протокол HSRP (Hot Standby Router Protocol). Про основные понятия HSRP можно прочитать тут.

HSRP довольно-таки древний протокол, впервые он появился ещё в 10 версии IOS. Поэтому современные прошивки IOS 12+ или 15+ его гарантированно знают со всеми фичами. И придуман он был специально для роутеров, но в продакшене повсеместно используется на коммутаторах 3 уровня для отказоустойчивости.

Понятно, никто не будет использовать коммутаторы для подключения к ISP. Однако внутри компании такая схема может быть внедрена в критически важной точке. Вот что говорится в курсе ENCOR (by INE):

Точно так же как и в прошлом примере в деле отслеживание доступности с помощью трека. Роль активного роутера передаётся в зависимости от состояния трека.

Примерная реализация будет такая, 2 граничных роутера R1 и R2, интерфейс GigabitEthernet 0 каждого роутера смотрит во внутреннюю сеть компании 192.168.1.0/24. Шлюз по умолчанию для компьютеров компании, это IP адрес виртуального роутера — 192.168.1.254.

Интерфейс GigabitEthernet 1 каждого роутера подключен к своему провайдеру. Пусть для определенности это будут всё те же Ростелеком и МТС, тогда для R1:

interface GigabitEthernet0
ip address 192.168.1.1 255.255.255.0
ip nat inside
standby 10 ip 192.168.1.254
standby 10 priority 200
standby 10 preempt
standby 10 track 100 decrement 60
!
interface GigabitEthernet1 
description -- Main ISP Rostelekom 30Mbp/s -- 
ip address 62.183.37.2 255.255.255.252 
ip access-group WAN_IN in 
ip access-group WAN_OUT out 
ip flow ingress 
ip flow egress 
ip nat outside 
ip inspect FW out 
ip virtual-reassembly in 
ntp disable 
no cdp enable
...
ip route 0.0.0.0 0.0.0.0 62.183.37.1

А для роутера R2:

interface GigabitEthernet0
ip address 192.168.1.2 255.255.255.0
ip nat inside
standby 10 ip 192.168.1.254
standby 10 priority 150
standby 10 preempt
!
interface GigabitEthernet1 
description -- BackUP ISP MTS 10Mbp/s -- 
ip address 91.223.100.162 255.255.255.192 
ip access-group WAN_IN in 
ip access-group WAN_OUT out 
ip flow ingress ip flow egress 
ip nat outside 
ip inspect FW out 
ip virtual-reassembly in 
ntp disable 
no cdp enable 
...
ip route 0.0.0.0 0.0.0.0 91.223.100.161

Трек 100 отслеживает доступность внешних ресурсов для интерфейса GigabitEthernet 1 роутера R1:

track 100 ip sla 100 reachability
delay down 10 up 5 
!
ip sla 100 icmp-echo 8.8.8.8 source-interface GigabitEthernet1 
threshold 1000 
timeout 1500 
frequency 3 
ip sla schedule 100 life forever start-time now

Когда трек 100 имеет состояние UP, то активный роутер R1. У него приоритет 200, что больше приоритета 150 для R2. Все пакеты форвардятся через R1 на Ростелеком.

Когда доступность DNS Гугла 8.8.8.8 через Ростелеком пропадает, трек 100 переводится в состояние DOWN. При этом происходит уменьшение приоритета роутера R1 из-за строчки:

 standby 10 track 100 decrement 60

Теперь его приоритет 200-60=140, то есть меньше чем у R2. За счёт команды:

standby 10 preempt

роутер R2 перехватывает роль активного роутера и пакеты форвардятся уже через МТС.

Если на на внутреннем интерфейсе роутеров GigabitEthernet 0 используется ACL, то необходимо разрешить мультикаст адрес обмена информацией для HSRP группы. Для HSRPv1 это 224.0.0.2.

В случае работоспособности обоих провайдеров, второй провайдер по прежнему простаивает. Возникает вопрос: а зачем такая схема вообще нужна? Оборудования использовано в 2 раза больше по сравнению с первым примером, при этом результат тот же самый. Для этого следующий пример.


Пример 3

В случае с HSRP можно задействовать оба канала интернета. И реализовать распределение нагрузки. Для этого создается 2 группы HSRP на одном интерфейсе. Называется такая конфигурация MHSRP (Multiple HSRP).

Получаем для роутера R1:

interface GigabitEthernet0
ip address 192.168.1.1 255.255.255.0
ip nat inside
standby 10 ip 192.168.1.254
standby 10 priority 200
standby 10 preempt
standby 10 track 100 decrement 60
standby 20 ip 192.168.1.253
standby 20 priority 150
standby 20 preempt

Для роутера R2:

interface GigabitEthernet0
ip address 192.168.1.2 255.255.255.0
ip nat inside
standby 10 ip 192.168.1.254
standby 10 priority 150
standby 10 preempt
standby 20 ip 192.168.1.253
standby 20 priority 200
standby 20 preempt
standby 20 track 200 decrement 60

Для важных хостов, которым нужен быстрый интернет, шлюзом по умолчанию настраивается 192.168.1.254, для остальных 192.168.1.253.

Трек 100 мониторит доступность ресурсов через интерфейс GigabitEthernet 1 роутера R1. Трек 200 через интерфейс GigabitEthernet 1 роутера R2. В случае падения одного из провайдеров доступ в интернет перетекает на работоспособный роутер для обеих групп HSRP.

Здесь есть интересный момент. Пусть один провайдер упал и обе группы HSRP активны на интерфейсе GigabitEthernet 0, допустим, роутера R1. Поскольку у каждой HSRP группы свой MAC адрес, то на одном интерфейсе будет 2 разных MAC адреса. Это должно поддерживаться на уровне железа (чипсетом роутера). Для старых железок (на чипсетах Lance и QUICC) такую конфигурацию сделать не получится, она не заработает.

Недостаток этого метода в том, что мы просто разделяем потоки трафика между двумя провайдерами, а не балансируем.


Пример 4

Возможно реализовать балансировку траффика между двумя NAT на разных провайдерах на одном физическом роутере. Настройки достаточно объёмные, подсмотреть их можно в статье.

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


Два шлюза в сети

Интересный вопрос: возможно ли сделать два шлюза по умолчанию внутри одного сегмента сети? Как это реализовать? Как настроить внутреннюю сеть? Какая должна быть архитектура этой сети? На первый взгляд не очень понятно. Не пробовал применять, но люди делают.

Настраиваем на оборудовании:

  • Можно попробовать использовать на интерфейсах secondary IP адрес из другой подсети. Первую группу HSRP настроить для подсети primary адресов, вторую для secondary. Не пробовал на практике. Не гарантирую что заработает;
  • Виртуальный IP адрес группы не обязательно должен быть из той же самой подсети, что и IP на интерфейсах группы. Настроить для групп виртуальные IP адреса из разных подсетей. Не пробовал тоже, но в документации такую возможность встречал.

Раздаём на компы:

  • В одном сегменте сети (VLAN) с помощью DHCP раздаём два разных шлюза. Нужно настроить пользовательский класс DHCP на нужных машинах через GPO, сделать на DHCP политику и подменить через политику шлюз. Получается сегмент один, адресация в сегменте одна, на одних машинах один шлюз, на машинах с пользовательским классом другой.

Отказоустойчивый кластер

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

Разные производители используют разную реализацию кластера. В большинстве случаев это физическое соединение нод, то есть наличие "шнурка" между активным и резервным устройствами. Через этот интерфейс резервное устройство мониторит активное и если активное недоступно, перехватывает роль. В частности создание кластера на базе ASA, можно почитать здесь.

Кластер становится действительно отказоустойчивым, если внешние подключения кластера идут к нескольким (разным) устройствам. Поскольку это дорого и сложно, то мало где применяется. Например в SD-WAN Kaspersky, там возможен кластер из 2 CPEs, при этом у каждого из CPE несколько WAN каналов. Но это технология уже абсолютно другого порядка.


Заключение

Примеров настройки подключений к интернету может быть значительно больше. Порой встречаются самые неожиданные варианты конфигураций. Смотришь в конфигурацию и диву даёшься: как это вообще смогли придумать? Нет предела человеческому творчеству. Но в общем-то типичные примеры реализации были рассмотрены.

Leave a Comment

Scroll to Top