В разделе рассматривается решение задачи организации доступа к сети Интернет. Предполагается, что каждый ISP будет анонсировать про протоколу BGP маршрут по умолчанию. Также предполагается, что каждый провайдер выдает пул публичных адресов для организации NAT-трансляций на пограничных маршрутизаторах. Для мониторинга доступности ресурсов Интернет будет задействован механизм IP SLA. Решение текущей задачи разделено на следующие этапы:

Для увеличения доступности маршрутизаторов в сети воспользуемся протоколом VRRP. Объединим группы маршрутизаторов в один виртуальный маршрутизатор и назначим им общий IP-адрес, который и будет использоваться как шлюз по умолчанию для клиентских сетей. В процессе настройки сделаем маршрутизатор ESR1 VRRP-мастером. Далее настроим терминацию клиентского трафика, которая будет производиться на соответствующем саб-интерфейсе агрегированного канала.
security zone Customer
security zone-pair Customer self
rule 10
action permit
match protocol vrrp
enable
exit
rule 20
action permit
match protocol icmp
enable
exit
exit
interface port-channel 1.100
vrrp id 1
vrrp ip 10.100.0.1/24
vrrp priority 101
vrrp group 1
vrrp preempt disable
vrrp
exit |
security zone Customer
security zone-pair Customer self
rule 10
action permit
match protocol vrrp
enable
exit
rule 20
action permit
match protocol icmp
enable
exit
exit
interface port-channel 1.100
vrrp id 1
vrrp ip 10.100.0.1/24
vrrp group 1
vrrp preempt disable
vrrp
exit |
Рассмотрим распространенный вариант организации стыка с интернет-провайдером — использование протокола BGP. При организации пиринга отфильтруем получаемую маршрутную информацию по протоколу BGP: разрешим только маршрут по умолчанию. Для сокращения времени определения недоступности BGP-пира рекомендуется использовать протокол BFD.
security zone-pair Untrusted self
rule 10
action permit
match protocol tcp
match destination-port port-range 179
enable
exit
rule 20
action permit
match protocol udp
match destination-port port-range 3784
enable
exit
exit
route-map BGP_IN
rule 10
match ip address 0.0.0.0/0
exit
rule 20
action deny
exit
exit
router bgp 64515
neighbor 203.0.113.1
remote-as 65500
update-source gigabitethernet 1/0/1
fall-over bfd
address-family ipv4 unicast
route-map BGP_IN in
enable
exit
enable
exit
enable
exit |
security zone-pair Untrusted self
rule 10
action permit
match protocol tcp
match destination-port port-range 179
enable
exit
rule 20
action permit
match protocol udp
match destination-port port-range 3784
enable
exit
exit
route-map BGP_IN
rule 10
match ip address 0.0.0.0/0
exit
rule 20
action deny
exit
exit
router bgp 64515
neighbor 203.0.113.129
remote-as 65400
update-source gigabitethernet 1/0/1
fall-over bfd
address-family ipv4 unicast
route-map BGP_IN in
enable
exit
enable
exit
enable
exit |
Проверим, что BGP-соседство установлено, и маршрут по умолчанию присутствует на обоих маршрутизаторах:
ESR1# sh bgp neighbors
BGP neighbor is 203.0.113.1
BGP state: Established
Type: Static neighbor
Neighbor address: 203.0.113.1
Neighbor AS: 65500
Neighbor ID: 8.8.8.8
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 203.0.113.2
Weight: 0
Hold timer: 108/180
Keepalive timer: 27/60
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Incoming route-map: BGP_IN
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 01,16:16:19
BFD address: 203.0.113.1
BFD state: Up
BFD interval: 0.300 s
BFD timeout: 1.500 s
ESR1# sh bgp ipv4 unicast neighbor 203.0.113.1 routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 0.0.0.0/0 203.0.113.1 -- 100 0 65500 ?
ESR2# sh bgp neighbors
BGP neighbor is 203.0.113.129
BGP state: Established
Type: Static neighbor
Neighbor address: 203.0.113.129
Neighbor AS: 65400
Neighbor ID: 203.0.113.129
Neighbor caps: refresh enhanced-refresh restart-aware AS4
Session: external AS4
Source address: 203.0.113.130
Weight: 0
Hold timer: 137/180
Keepalive timer: 31/60
RR client: No
Address family ipv4 unicast:
Send-label: No
Default originate: No
Default information originate: No
Incoming route-map: BGP_IN
Preference: 170
Remove private AS: No
Next-hop self: No
Next-hop unchanged: No
Uptime (d,h:m:s): 00,18:07:05
BFD address: 203.0.113.129
BFD state: Up
BFD interval: 0.300 s
BFD timeout: 1.500 s
ESR2# sh bgp ipv4 unicast neighbor 203.0.113.129 routes
Status codes: u - unicast, b - broadcast, m - multicast, a - anycast
* - valid, > - best
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> u 0.0.0.0/0 203.0.113.129 -- 100 0 65400 ? |
Одним из вариантов проверки работоспособности канала связи является проверка доступности ресурсов в сети Интернет. В рамках задачи настроим несколько IP SLA-тестов, по результатам которых будем определять, подходит ли данный узел для работы в сети Интернет.
Ниже приведена настройка IP SLA-тестов на основном маршрутизаторе ESR1:
ip sla ip sla logging status ip sla test 1 icmp-echo 8.8.4.4 source-ip 203.0.113.2 num-packets 5 enable exit ip sla test 2 icmp-echo 77.88.44.242 source-ip 203.0.113.2 num-packets 5 enable exit ip sla schedule all life forever start-time now |
С помощью track-менеджера настроим реакцию на IP-SLA тесты: если оба теста завершились ошибочно, переключаемся на резервный канал, меняя VRRP-мастера.
track 1 description "Check Internet" track sla test 1 mode state fail track sla test 2 mode state fail enable exit interface port-channel 1.100 vrrp priority track 1 decrement 10 exit interface port-channel 1.300 vrrp priority track 1 decrement 10 exit |
Проверить статус IP SLA тестов и состояние track-менеджера можно следующим образом:
ESR1# sh ip sla test status Test Type Source Destination Status Last Run Description ------- ------------ ------------------------------------ ------------------------------------ ------------ ------------------- -------------------- 1 icmp-echo 203.0.113.2 8.8.4.4 Fail 2024-02-16 14:02:12 -- 2 icmp-echo 203.0.113.2 77.88.44.242 Successful 2024-02-16 14:02:09 -- ESR1# sh track 1 Track 1: State: Down Changes count: 3 (last 12081,10:48:29) Mode: And Delay up: 0s Delay down: 0s Description: Check Internet Conditions: Type ID State Mode Last change (d,h:m:s) VRF --------- -------------------- ----- -------------- ------------------------- -------------------------------- SLA 2 False State fail 00,10:48:29 -- SLA 1 True State fail 00,10:48:29 -- Actions: VRRPs: ID 1 priority of the interface port-channel 1.100 : 101 |
Функция Source NAT (SNAT) используется для подмены адреса источника у пакетов, проходящих через сетевой шлюз. При прохождении пакетов из локальной сети в публичную сеть адрес источника заменяется на один из публичных адресов шлюза. Дополнительно к адресу источника может применяться замена порта источника. При прохождении пакетов из публичной сети в локальную происходит обратная подмена адреса и порта.
В текущей схеме SNAT используется для предоставления доступа в Интернет хостам, находящимся в локальной сети. Приведем пример настройки SNAT для клиентов Customer. Соответствующая подсеть будет натироваться в свой публичный адрес, предоставленный интернет-провайдером.
Создадим профиль адресов локальный сети, для которых будет выполняться SNAT:
object-group network Customers_POOL ip prefix 10.100.0.0/24 exit |
object-group network Customers_POOL ip prefix 10.100.0.0/24 exit |
Опишем профиль публичных адресов, предоставленных интернет-провайдерами:
object-group network Public_POOL ip address-range 203.0.113.2-203.0.113.126 exit |
object-group network Public_POOL ip address-range 203.0.113.130-203.0.113.254 exit |
Настроим прохождение клиентского трафика между соответствующими зонами безопасности:
security zone-pair Customer Untrusted
rule 10
action permit
match source-address object-group Customers_POOL
enable
exit
exit |
security zone-pair Customer Untrusted
rule 10
action permit
match source-address object-group Customers_POOL
enable
exit
exit |
Сконфигурируем непосредственно SNAT:
nat source
pool Customer_Public_IP
ip address-range 203.0.113.3
exit
ruleset SNAT
to zone Untrusted
rule 10
match source-address object-group Customers_POOL
action source-nat pool Customer_Public_IP
enable
exit
exit
exit |
nat source
pool Customer_Public_IP
ip address-range 203.0.113.130
exit
ruleset SNAT
to zone Untrusted
rule 10
match source-address object-group Customers_POOL
action source-nat pool Customer_Public_IP
enable
exit
exit
exit |
Для просмотра cконфигурированного функционала и текущих NAT-трансляций можно воспользоваться следующими командами:
ESR1# sh ip nat source rulesets SNAT
Description: --
VRF: --
To: zone 'Untrusted'
Rules:
------
Order: 10
Description: --
Matching pattern:
Protocol: any
Source address: 10.100.0.0/24
Destination address: any
Action: pool Customer_Public_IP
Status: Enabled
--------------------------------------------------------------------------------
ESR1# sh ip nat translations
Prot Inside source Inside destination Outside source Outside destination Pkts Bytes
---- --------------------- --------------------- --------------------- --------------------- ---------- ----------
icmp 10.100.0.100 8.8.8.8 203.0.113.3 8.8.8.8 -- -- |
vlan database vlan 100 exit ! interface vlan 100 name Internet exit ! interface range Port-Channel1-5 switchport general allowed vlan add 100 exit ! |
vlan database vlan 100 exit ! interface vlan 100 name Internet exit ! interface range Port-Channel1-5 switchport general allowed vlan add 100 exit ! |
Создание пользовательской VLAN для сервиса Интернет Добавление VLAN в Port-Channel |
vlan database vlan 100 exit ! interface vlan 100 name Internet exit ! interface range Port-Channel1-4 switchport general allowed vlan add 100 exit ! |
Создание пользовательской VLAN для сервиса Интернет Добавление VLAN в Port-Channel |
vlan database vlan 100 exit ! interface vlan 100 name Internet exit ! interface Port-Channel1 switchport general allowed vlan add 100 exit ! interface range GigabitEthernet1/0/1-24 switchport general allowed vlan add 100 untagged switchport general pvid 100 exit ! |
Создание пользовательской VLAN для сервиса Интернет Добавление VLAN в Port-Channel Добавление VLAN для сервиса Интернет на клиентский порт со снятием метки на выходе Помещение нетегированного трафика на порту во VLAN 100 |