По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Мы рассказали про принципы работы протокола NAT (Network Address Translation) и теперь настало время рассмотреть его настройку на оборудовании Cisco. Настройка статического NAT (Static NAT) Напомним, что статический NAT представляет собой сопоставление внутреннего и внешнего адреса один к одному. Он позволяет внешним устройствам инициировать подключения к внутренним с использованием статически назначенного общего адреса. Например, внутренний веб-сервер может быть сопоставлен с определенным внутренним глобальным адресом, чтобы он был доступен из внешних сетей. На схеме показана внутренняя сеть, содержащая веб-сервер с частным адресом IPv4. Маршрутизатор сконфигурирован со статическим NAT, чтобы позволить устройствам из внешней сети обращаться к веб-серверу. Клиент из внешней сети обращается к веб-серверу с использованием общедоступного IPv4-адреса. Статический NAT переводит общедоступный IPv4-адрес в частный. При настройке статических трансляций NAT выполняются две основные задачи: Создание сопоставления между внутренним локальным (inside local) адресом и внутренними глобальными (inside global) адресами. Например, внутренний локальный адрес 192.168.1.5 и внутренний глобальный адрес 208.165.100.5 на схеме настроены как статическая NAT трансляция. После того как сопоставление настроено, интерфейсы, участвующие в трансляции должны быть настроены как внутренние (inside) и наружные (outside) относительно NAT. На схеме интерфейс маршрутизатора Serial 0/0/0 является внутренним, а Serial 0/1/0 – внешним. Пакеты, поступающие на внутренний интерфейс маршрутизатора Serial 0/0/0 из настроенного внутреннего локального адреса IPv4 (192.168.1.5), транслируются и затем перенаправляются во внешнюю сеть. Пакеты, поступающие на внешний интерфейс Serial 0/1/0, адресованные настроенному внутреннему глобальному адресу IPv4 (208.165.100.5), переводятся на внутренний локальный адрес (192.168.1.5) и затем перенаправляются внутрь сети. Настройка проходит в несколько шагов: Создать статическую трансляцию между внутренним локальным и внешним глобальным адресами. Для этого используем команду ip nat inside source static [локальный _IP глобальный_IP]. Чтобы удалить трансляцию нужно ввести команду no ip nat inside source static. Если нам нужно сделать трансляцию не адреса в адрес, а адреса в адрес интерфейса, то используется команда ip nat inside source static [локальный _IP тип_интерфейса номер_интерфейса]. Определим внутренний интерфейс. Сначала зайти в режим конфигурации интерфейса, используя команду interface[тип номер] и ввести команду ip nat inside Таким же образом определить внешний интерфейс, используя команду ip nat outside Пример: Router(config)# ip nat inside source static 192.168.1.5 208.165.100.5 Router(config)# interface serial0/0/0 Router(config-if)#ip nat inside Router(config-if)#exit Router(config)# interface serial0/1/0 Router(config-if)#ip nat outside В результате трансляции будут проходить так: Клиент хочет открыть соединение с веб-сервером. Клиент отправляет пакет на веб-сервер, используя общедоступный IPv4-адрес назначения 208.165.100.5. Это внутренний глобальный адрес веб-сервера. Первый пакет, который роутер получает от клиента на внешнем интерфейсе NAT, заставляет его проверять свою таблицу NAT. Адрес IPv4 адресата находится в таблице NAT он транслируется. Роутер заменяет внутренний глобальный адрес назначения 208.165.100.5 внутренним локальным 192.168.1.5 и пересылает пакет к веб-серверу. Веб-сервер получает пакет и отвечает клиенту, используя внутренний локальный адрес источника 192.168.1.5. Роутер получает пакет с веб-сервера на свой внутренний интерфейс NAT с адресом источника внутреннего локального адреса веб-сервера, 192.168.1.5. Он проверяет NAT таблицу для перевода внутреннего локального адреса во внутренний глобальный, меняет адрес источника с 192.168.1.5 на 208.165.100.5 и отправляет его из интерфейса Serial 0/1/0 в сторону клиента Клиент получает пакет, и обмен пакетами продолжается. Роутер выполняет предыдущие шаги для каждого пакета. Проверка статического NAT Полезной командой для проверки работы NAT является команда show ip nat translations. Эта команда показывает активные трансляции NAT. Статические переводы, в отличие от динамических переводов, всегда находятся в таблице NAT. Router#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 208.165.100.5 192.168.1.5 208.165.100.70 208.165.100.70 Другой полезной командой является команда show ip nat statistics. Она отображает информацию об общем количестве активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве адресов, которые были выделены. Router#show ip nat statistics Total active translations: 1 (1 static, 0 dynamic; 0 extended) Peak translations: 2, occurred 00:00:21 ago Outside interfaces: Serial0/1/0 Inside interfaces: Serial0/0/0 Hits:7 Misses:0 Чтобы убедиться, что трансляция NAT работает, лучше всего очистить статистику из любых прошлых переводов, используя команду clear ip nat statistics перед тестированием. Настройка динамического NAT (Dynamic NAT) В то время пока статический NAT постоянное сопоставление между внутренним локальным и внутренним глобальным адресом, динамический NAT позволяет автоматически сопоставлять внутренние локальные и глобальные адреса (которые обычно являются публичными IP-адресами). Динамический NAT использует группу или пул публичных адресов IPv4 для перевода. Динамический NAT, как и статический NAT, требует настройки внутреннего и внешнего интерфейсов, участвующих в NAT. Рассмотрим на примере этой схемы. Мы тут имеем внутреннюю сеть с двумя подсетями 192.168.1.0/24 и 192.168.2.0/24 и пограничным маршрутизатором, на котором настроен динамический NAT с пулом публичных адресов 208.165.100.5 - 208.165.100.15. Пул публичных адресов (inside global address pool) доступен для любого устройства во внутренней сети по принципу «первым пришел – первым обслужили». С динамическим NAT один внутренний адрес преобразуется в один внешний адрес. При таком типе перевода должно быть достаточно адресов в пуле для одновременного предоставления для всех внутренних устройств, которым необходим доступ к внешней сети. Если все адреса в пуле были использованы, то устройство должно ждать доступного адреса, прежде чем оно сможет получить доступ к внешней сети. Рассмотрим настойку по шагам: Определить пул которые будут использоваться для перевода, используя команду ip nat pool [имя начальный_ip конечный_ip]. Этот пул адресов обычно представляет собой группу публичных общедоступных адресов. Адреса определяются указанием начального IP-адреса и конечного IP-адреса пула. Ключевые слова netmask или prefix-length указывают маску. Нужно настроить стандартный access-list (ACL), чтобы определить только те адреса, которые будут транслироваться. Введем команду access-list [номер_ACL] permit source [wildcard_маска]. Про стандартные access-list’ы можно прочитать в этой статье (а про расширенные в этой). ACL который разрешает очень много адресов может привести к непредсказуемым результатам, поэтому в конце листа есть команда deny all. Необходимо привязать ACL к пулу, и для этого используется команду ip nat inside source list [номер_ACL] number pool [название_пула]. Эта конфигурация используется маршрутизатором для определения того, какие устройства (список) получают адреса (пул). Определить, какие интерфейсы находятся внутри, по отношению к NAT, то есть любой интерфейс, который подключен к внутренней сети. Определить, какие интерфейсы находятся снаружи, по отношению к NAT, то есть любой интерфейс, который подключен к внешней сети. Пример: Router(config)# ip nat pool MerionNetworksPool 208.165.100.5 208.165.100.15 netmask 255.255.255.0 Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255 Router(config)#ip nat inside source list 1 pool MerionNetworksPool Router(config)# interface serial0/0/0 Router(config-if)#ip nat inside Router(config-if)#exit Router(config)# interface serial0/1/0 Router(config-if)#ip nat outside Как это будет работать на нашей схеме: Компьютеры с адресами 192.168.1.10 и 192.168.2.10 отправляют пакеты в сторону сервера по публичному адресу 208.165.100.70 Маршрутизатор принимает первый пакет от хоста 192.168.1.10. Поскольку этот пакет был получен на интерфейсе, сконфигурированном как внутренний интерфейс NAT, маршрутизатор проверяет конфигурацию NAT, чтобы определить, должен ли этот пакет быть транслирован. ACL разрешает этот пакет, и роутер проверяет свою таблицу NAT. Поскольку для этого IP-адреса нет записи трансляции, роутер определяет, что исходный адрес 192.168.1.10 должен быть переведен динамически. R2 выбирает доступный глобальный адрес из пула динамических адресов и создает запись перевода, 208.165.200.5. Исходный IPv4-адрес источника (192.168.1.10) является внутренним локальным адресом, а переведенный адрес является внутренним глобальным адресом (208.165.200.5) в таблице NAT. Для второго хоста 192.168.2.10 маршрутизатор повторяет эту процедуру, выбирая следующий доступный глобальный адрес из пула динамических адресов, создает вторую запись перевода - 208.165.200.6. После замены внутреннего локального адреса источника в пакетах маршрутизатор перенаправляет пакет. Сервер получает пакет от первого ПК и отвечает, используя адрес назначения 208.165.200.5. Когда сервер получает пакет от второго ПК, то в ответе в адресе назначения будет стоять 208.165.200.6. Когда роутер получает с адресом назначения 208.165.200.5, то он выполняет поиск в таблице NAT и переводит адрес назначения во внутренний локальный адрес 192.168.1.10 и направляет в сторону ПК. То же самое происходит с пакетом, направленным ко второму ПК. Оба ПК получают пакеты, и обмен пакетами продолжается. Для каждого следующего пакета выполняются предыдущие шаги. Проверка динамического NAT Для проверки также используется команда show ip nat отображает все статические переводы, которые были настроены, и любые динамические переводы, которые были созданы трафиком. Добавление ключевого слова verbose отображает дополнительную информацию о каждом переводе, включая то, как давно запись была создана и использовалась. По умолчанию данные о переводах истекают через 24 часа, если таймеры не были переконфигурированы с помощью команды ip nat translation timeout [время_в_секундах] в режиме глобальной конфигурации. Чтобы очистить динамические записи до истечения времени ожидания, можно использовать команду clear ip nat translation. Полезно очищать динамические записи при тестировании конфигурации NAT. Эту команду можно использовать с ключевыми словами и переменными, чтобы контролировать, какие записи очищаются. Конкретные записи можно очистить, чтобы не прерывать активные сеансы. Только динамические переводы удаляются из таблицы. Статические переводы не могут быть удалены из таблицы. Также можно использовать команду show ip nat statistics которая отображает информацию об общем количестве активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве переведенных адресов. Поскольку у нас здесь используются листы контроля доступа ACL, то для их проверки можно использовать команду show access-lists. Настройка Port Address Translation (PAT) PAT (также называемый NAT overload) сохраняет адреса во внутреннем глобальном пуле адресов, позволяя маршрутизатору использовать один внутренний глобальный адрес для многих внутренних локальных адресов. Другими словами, один открытый IPv4-адрес может использоваться для сотен и даже тысяч внутренних частных IPv4-адресов. Когда несколько внутренних локальных адресов сопоставляются с одним внутренним глобальным адресом, номера портов TCP или UDP каждого внутреннего узла различают локальные адреса. Общее количество внутренних адресов, которые могут быть переведены на один внешний адрес, теоретически может составлять 65 536 на каждый IP-адрес. Однако на практике число внутренних адресов, которым может быть назначен один IP-адрес, составляет около 4000. Существует два способа настройки PAT, в зависимости от того, как провайдер выделяет общедоступные IPv4-адреса. В первом случае интернет-провайдер выделяет более одного публичного IPv4-адреса организации, а в другом он выделяет один общедоступный IPv4-адрес, который требуется для организации для подключения к интернет-провайдеру. Настройка PAT для пула публичных IP-адресов Если нам доступно более одного общедоступного IPv4-адреса, то эти адреса могут быть частью пула, который используется PAT. Это похоже на динамический NAT, за исключением того, что в этом случае недостаточно общих адресов для взаимного сопоставления внутренних адресов. Небольшой пул адресов распределяется между большим количеством устройств. Основное различие между этой конфигурацией и конфигурацией для динамического NAT, заключается в том, что используется ключевое слово overload, которое включает PAT. Рассмотрим настойку PAT для пула адресов по шагам: Определить пул адресов глобальных адресов, которые будут использоваться для PAT трансляции, используя команду ip nat pool [имя начальный_ip конечный_ip] netmask [маска] | prefix-length [длина_префикса]. Создать стандартный access-list, разрешающий адреса, которые должны быть переведены. Используется команда access-list [номер_ACL] permit source [wildcard_маска]. Включим PAT, используя волшебное слово Overload. Вводим команду ip nat inside source list [номер_ACL] number pool [название_пула] overload. Определяем, какие интерфейсы находятся внутри, по отношению к NAT, а какие снаружи. Используем команду ip nat inside и ip nat outside Пример настройки для схемы, что использовалась ранее, только теперь мы будем использовать PAT: Router(config)# ip nat pool MerionNetworksPool2 208.165.100.5 208.165.100.15 netmask 255.255.255.0 Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255 Router(config)#ip nat inside source list 1 pool MerionNetworksPool2 overload Router(config)# interface serial0/0/0 Router(config-if)#ip nat inside Router(config-if)#exit Router(config)# interface serial0/1/0 Router(config-if)#ip nat outside Настройка PAT для одного публичного IPv4-адреса На схеме показана топология реализации PAT для трансляции одного IP публичного адреса. В этом примере все хосты из сети 192.168.0.0/16 (соответствующие ACL), которые отправляют трафик через маршрутизатор, будут переведены на адрес IPv4 208.165.99.225 (адрес IPv4 интерфейса S0 /1/0). Трафик будет идентифицироваться по номерам портов в таблице NAT. Настройка: Создать лист access-list разрешающий адреса, которые нужно транслировать – access-list [номер_ACL] permit source [wildcard_маска]. Настроить преобразование адреса источника в адрес интерфейса, через команду ip nat inside source list [номер_ACL] interface [тип номер] overload Определить внешние и внутренние интерфейсы через команды ip nat inside и ip nat outside. Конфигурация похожа на динамический NAT, за исключением того, что вместо пула адресов мы используем адрес интерфейса с вешним IP адресом. NAT пул не определяется. Пример: Router(config)# access-list 1 permit 192.168.0.0 0.0.255.255 Router(config)# ip nat source list 1 interface serial0/1/0 overload Router(config)# interface serial0/0/0 Router(config-if)#ip nat inside Router(config-if)#exit Router(config)# interface serial0/1/0 Router(config-if)#ip nat outside Процесс PAT не изменятся при использовании одного адреса, или пула адресов. Рассмотрим процесс PAT по шагам: На схеме два разных ПК связываются с двумя разными веб-серверами. Первый ПК имеет адрес источника 192.168.1.10 и использует TCP порт 1444, а второй ПК имеет адрес источника 192.168.2.10 и по совпадению использует то же TCP порт 1444 Пакет с первого ПК сначала достигает роутера и он, используя PAT, изменяет исходный IPv4-адрес на 208.165.99.225 (inside global address). В таблице NAT нет других устройств с портом 1444, поэтому PAT использует тот же номер порта и пакет отправляется в направлении сервера по 208.165.101.20. Далее пакет со второго компьютера поступает в маршрутизатор, где PAT настроен на использование одного глобального IPv4-адреса для всех переводов - 208.165.99.225. Подобно процессу перевода для первого ПК, PAT изменяет исходящий адрес второго ПК на внутренний глобальный адрес 208.165.99.225. Однако второй ПК имеет тот же номер порта источника, что и текущая запись PAT первого ПК, поэтому PAT увеличивает номер порта источника до тех пор, пока он не станет уникальным в своей таблице. В этом случае запись исходного порта в таблице NAT и пакет для второго ПК получает 1445 порт. Хотя оба ПК используют один и тот же внутренний глобальный адрес 208.165.99.225 и тот же номер порта источника – 1444, измененный номер порта для второго ПК (1445) делает каждую запись в таблице NAT уникальной. Это станет очевидным при отправке пакетов с серверов обратно клиентам. Сервера отвечают на запросы от компьютеров, и используют исходный порт из принятого пакета в качестве порта назначения и исходный адрес как адрес назначения. Может казаться, что они общаются одним и тем же хостом по адресу 208.165.99.225, однако, это не так – они имеют разные порты. Когда пакеты возвращаются на роутер, он находит уникальную запись в своей таблице NAT с использованием адреса назначения и порта назначения каждого пакета. В случае пакета от первого сервера адрес назначения 208.165.99.255 имеет несколько записей, но только одну с портом назначения 1444. Используя эту запись в своей таблице, роутер изменяет адрес IPv4 адресата пакета на 192.168.1.10, не меняя порт назначения. Затем пакет перенаправляется на первый ПК Когда пакет от второго сервера прилетает на маршрутизатор, он выполняет аналогичный перевод. Адрес IPv4 назначения 208.165.99.225 имеет несколько записей, однако используя порт назначения 1445, роутер может однозначно идентифицировать запись трансляции. Адрес IPv4 назначения будет изменен на 192.168.2.10 и в этом случае порт назначения также должен быть изменен до исходного значения 1444, которое хранится в таблице NAT. После этого пакет высылается на второй ПК Проверка Port Address Translation (PAT) Для проверки PAT используются такие же команды, что и для обычного NAT. Команда show ip nat translations отображает переводы IP адресов вместе с портами и команда show ip nat statistics показывает информацию о количестве и типе активных переводов, параметрах конфигурации NAT, количестве адресов в пуле и количестве выделенных адресов. Router#show ip nat statistics Total active translations: 2 (0 static, 2 dynamic; 2 extended) Peak translations: 2, occurred 00:00:07 ago Outside interfaces: Serial0/1/0 Inside interfaces: Serial0/0/0 Hits:4 Misses:0 CEF Translated packets: 4, CEF Punted packets:0 Expired translations: 0 Dynamic mappings: -- Inside Source [Id: 3] access-list 1 pool MerionNetworksPool2 refcount 2 pool MerionNetworksPool2: netmask 255.255.255.0 start 208.165.100.5 end 208.165.100.15 type generic, total addressers 10, allocated 1(10%), misses 0 Total doors: 0 Appl doors: 0 Normal doors: 0 Queued Packets: 0 Также для поиска проблем можно использовать дебаг, который запускается командой debug ip nat, который отображает информацию о каждом пакете, который транслируется маршрутизатором. Также можно использовать команду debug ip nat detailed, которая генерирует описание каждого пакета. Эта команда также предоставляет информацию о различных ошибках, например, таких как неспособность выделить глобальный адрес. Однако эта команда более требовательна к ресурсам устройства. Router#debug ip nat IP NAT debugging is on Router# *Aug 24 16:20:331:670: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3730] *Aug 24 16:20:331:682: NAT*: s=208.165.101.20 d=208.165.99.225 ->192.168.1.10 [4156] *Aug 24 16:20:331:698: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3731] *Aug 24 16:20:331:702: NAT*: s=192.168.1.10->208.165.99.225 d=208.165.101.20 [3732] *Aug 24 16:20:331:710: NAT*: s=208.165.101.20 d=208.165.99.225 ->192.168.1.10 [4157] В выводе используются следующие символы и значения: * (звездочка) – звездочка с NAT указывает, что перевод происходит по пути с быстрым переключением (fast-switched path). Первый пакет в разговоре всегда медленнее, остальные пакеты проходят путь с быстрым переключением. s= - IP адрес источника a.b.c.d ? w.x.y.z - это значение указывает, что адрес источника a.b.c.d переводится на w.x.y.z. d= - IP адрес назначения [xxxx] - значение в скобках - это идентификационный номер IP.
img
Представьте ситуацию, пользователи пытаются получить доступ к вашему сайту, но он не открывается. Знаете в чём дело? Возможно, есть ошибки, которые не были выявлены и решены раньше. Разочарованные пользователи покидают ваш сайт, а вы теряете лояльных пользователей. Как решить эту проблему? Как узнать о состоянии сайта раньше пользователей? Существует два возможных способа - eсли вы не против потратить немного денег, то можно обратиться к таким мониторинговым решениям, как StartCake и т.п. Однако если вы разработчик или не готовы тратиться ежемесячно, можете воспользоваться преимуществами API Geekflare - Site Up? Данный API проверяет доступность сайта из разных точек. В данном материале рассмотрим Python код, который немедленно уведомит вас через Gmail, как только сайт станет недоступен. Начнем с изучения API «Is Site Up?» API Is Site Up? Перед началом работы с API необходимо установить пакет requests, который в Python используется для работы с API. Но не обязательно использовать Python. Можно использовать любой другой язык. В любом случае, убедитесь, что настроили все необходимое, чтобы сделать API запрос. Итак, для тех, кто использует Python, установите пакет запросов с помощью команды: pip install requests Выполните настройку для других языков (если выбран другой язык, кроме Python) и переходите к следующим шагам. Теперь перейдите на страницу API Geekflare. Вы можете найти различные типы API, включая «Is Site Up?». Для использования API Geekflare нам нужен ключ API, который мы можем получить через RapidAPI. Нажмите на кнопку GET API KEY, чтобы перейти к RapidAPI. RapidAPI откроется в новой вкладке и выглядит следующим образом: Чтобы получить ключ API нужно создать учетную запись. Создайте учетную запись в RapidAPI, если у вас ее нет. Затем в верхней части всех доступных API Geekflare вы увидите API «Is Site Up?», который мы ищем. Если он не активен, найдите его с помощью поиска и нажмите на него. После этого в правой стороне должно отобразиться руководство по данному API. Из раздела Code Snippets в правой части выберите Python -> Requests. Или же если вы не используете Python, выберите другой язык с соответствующим пакетом. Вы получите код для вызова API «Is Site Up?». Давайте изменим его немного, чтобы потом легче было добавлять код. Посмотрите на измененный код в Python. import requests API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "YOUR_API_KEY" } payload = r'{"url": "https://www.geekflare.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() if __name__ == '__main__': data = make_api_request() print(data) Замените API_KEY своим собственным ключом API из RapidAPI в приведенном выше коде. Он будет разным для каждого пользователя. Вы найдете его в RapidAPI в разделе Параметры заголовка: Тот же ключ API вы сможете найти в примере кода, как показано ниже. Несколько расположений В приведенном выше коде сайт проверяется из одного датацентра (Нью-Йорк, США). Но мы можем посылать запросы на сайт из разных мест с указав буквенные коды стран в теле запроса. Другие доступные места - Англия (Лондон) и Сингапур. Мы можем передать данные местоположения вместе с URL-адресом сайта следующим образом: { "locations": [ "uk", "us", "sg" ], "url": "geekflare.com" } Вы можете передать предпочитаемые расположения из списка. Мы написали код, чтобы сделать запрос API, который получает данные независимо от того, работает сайт или нет. Пришло время написать еще код, который отправляет почту, когда сайт не работает. Получение уведомления на почту В сети можно найти немало руководств о том, как отправлять электронные письма через Gmail в Python или же использовать следующий код, который использует пакет под названием yagmail специально разработан для отправки почты из Gmail. Перед отправкой сообщения через учетную запись Gmail необходимо включить параметр Разрешить небезопасные приложения. Вы можете включить его здесь. Посмотрим код: def send_mail(): gmail = yagmail.SMTP("gmail", "password") receiver = "receiver@domain.com" subject = "Testing Subject" body = "This is a testing mail" gmail.send( to=receiver, subject=subject, contents=body, ) Полное руководство по yagmail можно найти здесь. Теперь у нас есть код для запросов API и отправки почты. Следующим шагом является вызов send_mail всякий раз, когда в ответе на запрос сайт указывается как недостпный. Итак, откуда мы знаем, что наш сайт не работает или работает? Когда мы посылаем запрос к API «Is Site Up?», он возвращает нам Python словарь с некоторыми данными как следующем скриншоте: В данном словаре есть ключ message. Значение этого ключа и показывает нам состояние сайта. Данный ключ может иметь два значения: Site is up Site is down Итак, мы отправим почту, когда получим сообщение «Site is down». Окончательный код будет выглядеть так: import requests import yagmail API_URL = "https://geekflare.p.rapidapi.com/up" def make_api_request(): headers = { 'content-type': "application/json", 'x-rapidapi-host': "geekflare.p.rapidapi.com", 'x-rapidapi-key': "API_KEY" } payload = r'{"url": "https://www.abcd.com"}' response = requests.request("POST", API_URL, data=payload, headers=headers) return response.json() def send_mail(content): gmail = yagmail.SMTP("gmail", "password") receiver = "email@domain.com" subject = "Your Site is Down" gmail.send( to=receiver, subject=subject, contents=content, ) if __name__ == '__main__': data = make_api_request() message = data['message'] ## seding the mail if message == 'Site is down.': ## extracting the errors from different locations locations_data = data['data'] mail_content = "Your site is down due to unexpected error. See the useful data to resolve errors below. " for location in locations_data: mail_content += f"{location['city']}, {location['country']} - {location['error']} " mail_content += " Check the error and resolve them as soon as possible." send_mail(mail_content) Тело сообщения можете редактировать по своему усмотрению. Мы завершили код отправки почты всякий раз, когда наш сайт не работает. Смотри образец сообщения, полученного с помощью вышеуказанного кода. Но, есть еще проблема. Мы должны выполнить наш код, чтобы проверить, работает ли наш сайт или нет. Частота запуска данного скрипта зависит от ваших предпочтений. Допустим, мы должны проверять сайт каждые час. Правда, мы можем каждый час открыть терминал и запустить скрипт. Но это скучно и неэффективно. Плюс к этому, никто так не делает. Решение напрашивается само: использовать cron для автоматического выполнения нашего кода каждый час. Посмотрим, как его настроить. Настройка Cron Рассмотрим шаги по настройке cron в операционной системе на базе UNIX. Открыть терминал. Выполните команду crontab -e, которая открывает файл crontab на терминале. Нажмите клавишу i для перехода в режим ВВОДА. Теперь добавьте шаблон cron, пути к исполняемому файлу Python и нашему файлу, как указано ниже: 0 * * * * /usr/bin/python3 /home/sample.py Подробно про cron можно прочесть в этой статье. Итак, мы настроили планировщик для ежечасного запуска кода. Если нужно будет указать другое расписание, можно воспользоваться разными утилитами для генерации шаблона расписания для cron. Пожалуй, теперь все. Мы настроили проверку сайта каждый час и получение уведомления на почту, если сайт станет недоступен. Заключение Автоматизация экономит много времени и работает на нас. Можно настроить cron на каком-нибудь облаке, чтобы он постоянно работал, проверял состояние сайта и уведомлял нас при сбое.
img
Есть большое количество крупных компании с сетью, содержащих более 500 маршрутизаторов Cisco (и тысячи коммутаторов Cisco Catalyst). Какой используется протокол маршрутизации, поддерживающий все эти маршрутизаторы в согласии о доступных маршрутах? Это усовершенствованный протокол маршрутизации внутреннего шлюза (EIGRP). Именно этому посвящена данная статья, которая является первой из серии статей, посвященных EIGRP (Enhanced Interior Gateway Routing Protocol). Эта серия статей рассматривает фундаментальные концепции EIGRP. Все статьи из цикла EIGRP: Часть 1. Понимание EIGRP: обзор, базовая конфигурация и проверка Часть 2. Про соседство и метрики EIGRP Часть 2.2. Установка K-значений в EIGRP Часть 3. Конвергенция EIGRP – настройка таймеров Часть 4. Пассивные интерфейсы в EIGRP Часть 5. Настройка статического соседства в EIGRP Часть 6. EIGRP: идентификатор роутера и требования к соседству Полное руководство по EIGRP в PDF PDF - это удобно 👾 Все статьи из цикла про EIGRP (Enhanced Interior Gateway Routing Protocol) мы свели в единый PDF домкумент, который вы можете скачать и читать в дороге. Книга по EIGRP в PDF | 3.27 MB Основы EIGRP Существует давняя дискуссия о фундаментальной природе EIGRP. По своей сути, является ли EIGRP протоколом маршрутизации состояния канала или протоколом маршрутизации вектора расстояния? Или же это гибридный протокол маршрутизации (то есть комбинация того и другого)? Вы найдете много литературы, поддерживающей идею о том, что EIGRP является гибридным протоколом маршрутизации, утверждая, что соседи EIGRP изначально обмениваются своей полной таблицей маршрутизации, во многом похожей на протокол маршрутизации вектора расстояния, и EIGRP отправляет только обновления маршрутизации на основе сетевых изменений, во многом напоминающие протокол маршрутизации состояния канала. Многие сетевые инженеры пришли к убеждению, что EIGRP-это "продвинутый протокол маршрутизации вектора расстояния". Их рассуждения по этому поводу: рассмотрим фундаментальную характеристику протокола маршрутизации состояния канала, которая заключается в том, что маршрутизаторы поддерживают таблицу топологии, указывающую, как маршрутизаторы связаны между собой. Эти маршрутизаторы (говоря о протоколах маршрутизации, таких как OSPF и IS-IS) затем запускают алгоритм Дейкстры на этой топологии, чтобы определить "кратчайший" путь к целевой сети с точки зрения конкретного маршрутизатора. EIGRP не поддерживает представление о топологии сети и не выполняет алгоритм Дейкстры. Скорее всего, таблица топологии EIGRP содержит список доступных сетей, а также информацию о "расстоянии" до этих сетей. Характеристики EIGRP Давайте начнем наш обзор EIGRP, рассмотрением нескольких основных характеристиках EIGRP: Быстрая конвергенция: если пропадает связь в сети, во многих случаях EIGRP может быстро перенаправить поток данных, обойдя место сбоя связи. Обычно это происходит не более чем за 3 секунды. Эта быстрая конвергенция становится возможной благодаря тому, что EIGRP имеет резервный маршрут к сети, и этот резервный маршрут готов взять на себя управление в случае сбоя основного маршрута. Высокая масштабируемость: в то время как протокол маршрутизации, такой как RIP, имеет ограничение в пятнадцать переходов маршрутизатора, EIGRP может масштабироваться для поддержки очень крупных корпоративных сетей. Балансировка нагрузки с использованием каналов с разной метрикой: по умолчанию и EIGRP, и OSPF балансируют трафик нагрузки по нескольким каналам, ведущим к определенной целевой сети, если стоимость (то есть значение метрики протокола маршрутизации) одинакова. Однако EIGRP может быть настроен для балансировки нагрузки между каналами с неравными стоимостями. Это стало возможным благодаря функции дисперсии. Поддержка маски подсети переменной длины (VLSM): в отличие от RIP версии 1, EIGRP отправляет информацию о маске подсети как часть объявления маршрута. Коммуникации через мультикаст: в EIGRP спикер маршрутизатор взаимодействует с другими EIGRP-спикер маршрутизаторами через мультикаст. В частности, EIGRP для IPv4 использует адрес многоадресной рассылки 224.0.0.10, в то время как EIGRP для IPv6 использует адрес многоадресной рассылки ff02::a. Больше не проприетарный протокол: в то время как Cisco первоначально представила EIGRP как Cisco-proprietary протокол маршрутизации, в последние годы EIGRP был открыт для других поставщиков. В частности, EIGRP стал открытым стандартом в 2013 году, а информационный RFC EIGRP (RFC 7868) был опубликован в 2016 году. Поддержка нескольких протоколов: EIGRP изначально был разработан для поддержки маршрутизации нескольких протоколов, включая IPv4, IPX и AppleTalk. Хотя современные сети редко используют IPX или AppleTalk, EIGRP теперь может поддерживать IPv6, который набирает популярность. Данная поддержка нескольких протоколов становится возможной благодаря Protocol-Dependent Modules (PDM), где существует отдельный PDM, обрабатывающий решения о маршрутизации для каждого маршрутизируемого протокола (например, IPv4 и IPv6). Алгоритм диффузионного обновления (DUAL): алгоритм EIGRP, используемый для отслеживания маршрутов, известных соседним маршрутизаторам. DUAL также используется для определения наилучшего пути к целевой сети (то есть к маршруту-преемнику) и любых приемлемых резервных путей к этой целевой сети (то есть к возможным маршрутам-преемникам). Суммирование: чтобы уменьшить количество записей в таблице топологии EIGRP (или таблице IP-маршрутизации маршрутизатора), EIGRP имеет возможность суммировать несколько сетевых объявлений в одно сетевое объявление. Это обобщение можно настроить вручную. Однако EIGRP имеет функцию автоматического суммирования маршрутов, которая суммирует сети на классовых границах сети. Обновления: полные обновления таблицы топологии EIGRP отправляются при обнаружении новых соседей. В противном случае будут отправлены частичные обновления. Обзор настройки Базовая конфигурация EIGRP очень проста в настройке. На самом деле, для этого требуется только две команды: router eigrp asn network net-id wildcard-mask Команда router eigrp asn запускает процесс маршрутизации EIGRP на маршрутизаторе для автономной системы (AS), заданной переменной asn. Эта команда также переводит вас в режим настройки маршрутизатора. Оттуда вы можете выполнить вторую команду, network net-id wildcard-mask. Эта вторая команда использует комбинацию сетевого адреса и маски подсети для указания диапазона одного или нескольких IP-адресов, и любой интерфейс маршрутизатора, чей IP-адрес принадлежит этому диапазону IP-адресов, затем участвует в процессе маршрутизации EIGRP. Тем не менее, существуют некоторые правила и модели поведения, которые следует учитывать при выполнении этих команд: EIGRP-спикер маршрутизаторы должны быть такими же, как и для формирования соседства. После того как маршрутизатор включает EIGRP на интерфейсах, соответствующих команде network EIGRP, он пытается обнаружить соседей с помощью многоадресной рассылки приветственных сообщений EIGRP. Если в команде network не указана маска подсети, то указанный сетевой адрес должен быть классовым сетевым адресом. Если в команде network не указана маска подсети, а указан классовый сетевой адрес, то все интерфейсы, IP-адреса которых подпадают под классовую сеть (например, 172.16.1.1 /24 подпадает под 172.16.0.0 /16), будут участвовать в процессе маршрутизации EIGRP. Чтобы проиллюстрировать эти понятия, рассмотрим следующий пример: Конфигурация EIGRP на маршрутизаторах OFF1, OFF2 и OFF3 ! Router OFF1 router eigrp 1 network 10.1.1.0 0.0.0.З network 10.1.1.5 0.0.0.0 network 192.0.2.0 ! Router OFF2 router eigrp 1 network 10.0.0.0 network 198.51.100.0 ! Router OFFЗ router eigrp 1 network 0.0.0.0 Конфигурация EIGRP на маршрутизаторах OFF1, OFF2 и OFF3 начинается с команды router eigrp 1. Эта команда говорит каждому маршрутизатору начать процесс маршрутизации EIGRP в автономной системе 1. Поскольку номера автономной системы должны совпадать между EIGRP-спикер-соседями, все три маршрутизатора используют один и тот же номер автономной системы 1. Кроме того, обратите внимание, как меняется конфигурация при использовании команды network: Команда network 10.1.1.0 0.0.0.3 на роутере OFF1 На маршрутизаторе OFF1 команда network 10.1.1.0 0.0.0.3 задает сетевой адрес 10.1.1.0 с обратной маской 0.0.0.3, которая соответствует 30-битной маске подсети (то есть маске подсети 255.255.255.252). Поскольку IP-адрес интерфейса Gig 0/1 маршрутизатора OFF1 10.1.1.1 / 30 попадает в эту подсеть, этот интерфейс проинструктирован участвовать в процессе EIGRP. Команда network 10.1.1.5 0.0.0.0 на роутере OFF1 Команда network 10.1.1.5 0.0.0.0 указывает конкретный IP-адрес, а не всю подсеть (или можно утверждать, что это подсеть, содержащая один IP-адрес). Мы знаем, что он указывает только один IP-адрес из-за маски подсети 0.0.0.0. Напомним, что в маске подсети мы имеем ряд непрерывных нулей, за которыми следует ряд непрерывных единиц (в двоичном коде). Двоичные нули соответствуют позиции битов в IP-адресе, определяющие адрес сети, а бинарные единицы соответствуют позиции битов в IP-адресе, который указывает адрес узла. Однако в том случае, когда у нас все нули, как в нашем случае, у нас есть сеть с одним и только одним IP-адресом (то есть маска подсети равна /32). Поскольку IP-адрес совпадает с IP-адресом интерфейса Gig 0/2 маршрутизатора OFF1, этот интерфейс также участвует в процессе маршрутизации EIGRP. Команда network 192.0.2.0 на роутере OFF1 Последняя команда network на маршрутизаторе OFF1 - это network 192.0.2.0. Интересно, что эта команда фактически была введена как сеть 192.0.2.0 0.0.0.255, но поскольку 0.0.0.255 является обратной маской, соответствующей маске подсети по умолчанию сети класса C (в данном случае 192.0.2.0 /24), она подразумевается, но не показывается. IP-адрес интерфейса Gig 0/3 маршрутизатора OFF1 192.0.2.1 / 24 действительно попадает в подсеть класса C, заданную командой network. Таким образом, Gig 0/3 также начинает участвовать в процессе маршрутизации EIGRP маршрутизатора OFF1. Команда network 10.0.0.0 на роутере OFF2 Команда network 10.0.0.0 на маршрутизаторе OFF2, не имеет обратной маски. Однако помните, что из ранее обсуждавшейся команды network (на маршрутизаторе OFF1) обратная маска подсети не отображается, если она отражает естественную маску заданной подсети. Основываясь на этой логике, мы можем заключить, что если мы намеренно опустим аргумент обратной маски из команды network, то предполагаемая обратная маска будет маской подсети, соответствующей классовой маске подсети сети, указанной в команде network. В этом случае первый октет сети, указанный в команде network address, равен 10. 10 в первом октете адреса указывает, что мы имеем дело с адресом класса А, который имеет маску подсети по умолчанию 255.0.0.0 и, следовательно, обратную маску по умолчанию 0.0.0.255. Поскольку интерфейсы Gig 0/1 и Gig 0/2 маршрутизатора OFF2 подпадают под этот классовый сетевой оператор, оба интерфейса участвуют в процессе маршрутизации EIGRP маршрутизатора OFF2. Команда network 198.51.100.0 на роутере OFF2 Как и предыдущая команда network, команда маршрутизатора OFF2 network 198.51.100.0 была введена без указания обратной маски. Поскольку первый октет адреса равен 198, мы можем заключить, что у нас есть сеть класса C, чья маска подсети по умолчанию равна 255.255.255.0, а обратная маска по умолчанию равна 0.0.0.255. IP-адрес (198.51.100.1 /24) интерфейсного Gig 0/3 на маршрутизаторе OFF2 живет в пределах указанной подсети 198.51.100.0 /24. Таким образом, интерфейс участвует в процессе маршрутизации EIGRP. Команда network 0.0.0.0 на роутере OFF3 Напомним, что оператор network EIGRP, вопреки распространенному мнению, не указывает сеть для объявления. Скорее, он определяет диапазон одного или нескольких IP-адресов, и любой интерфейс с IP-адресом в этом диапазоне проинструктирован участвовать в процессе маршрутизации EIGRP. Это означает, что, если мы хотим, чтобы все интерфейсы на маршрутизаторе участвовали в одном и том же процессе маршрутизации EIGRP, мы могли бы дать команду network 0.0.0.0, чтобы указать все возможные IP-адреса. Поскольку IP-адрес каждого отдельного интерфейса подпадает под категорию "все возможные IP-адреса", все интерфейсы на маршрутизаторе OFF3 проинструктированы участвовать в процессе маршрутизации EIGRP. Кроме того, сетевые адреса этих участвующих интерфейсов (вместе с информацией о подсети для этих сетевых адресов) затем объявляются через EIGRP. Проверка Процесс проверки EIGRP - это нечто большее, чем просто проверка того, что между всеми маршрутизаторами сформировались соседские отношения и что все маршрутизаторы изучили все маршруты в сети. Процесс верификации должен помочь нам убедиться в том, что наши изначальные требования были выполнены. Например, нам нужно найти соответствующие маршруты, определенные интерфейсы и конкретных соседей, которые будут отображаться в таблицах EIGRP. Как только определимся с нашими изначальными целями проектирования и ожидаемыми результатами, мы можем применить команды проверки EIGRP, показанные в таблице ниже: Ключевые команды проверки EIGRP В следующих примерах показаны результаты выполнения каждой из этих команд после их выполнения на маршрутизаторе OFF1, показанном в предыдущей топологии. Вывод результатов команды show ip route на маршрутизаторе OFF1: Обратите внимание, как маршруты, изученные с помощью EIGRP, показаны с литерой D в левом столбце. Этот код D указывает на маршрут, изученный через EIGRP. Эти маршруты включают 10.1.1.8/30, 198.51.100.0/24 и 203.0.113.0 /24. Также обратите внимание на выделенные числовые значения 90 в каждом EIGRP-изученном маршруте. 90 - это административное расстояние EIGRP (то есть его правдоподобность по сравнению с другими источниками маршрутизации), где более низкие значения административного расстояния предпочтительны по сравнению с более высокими значениями. Вывод из команды show ip protocols на маршрутизаторе OFF1 Вывод информации команды show ip protocols на EIGRP-спикер маршрутизаторе, как видно выше, предлагает нам несколько точек данных. Например, в разделе Routing for Networks: вы видите список сетей, указанных командой network в режиме конфигурации EIGRP. В разделе Routing Information Sources: вы можете видеть IP-адреса соседей EIGRP, которые являются 10.1.1.2 (то есть маршрутизатором OFF2) и 10.1.1.6 (то есть маршрутизатором OFF3) нашей топологии. Также в этом разделе вы можете увидеть административное расстояние (AD) до наших соседей. Поскольку эти соседи являются EIGRP-спикер маршрутизаторами, у них есть EIGRP AD по умолчанию 90. Наконец, обратите внимание на метрический вес K1=1, K2=0, K3=1, K4=0, K5=0 части выходного сигнала. В следующей статье мы узнаем, как EIGRP вычисляет свою метрику и как этот расчет включает в себя K-значения. Вывод из команды show ip eigrp interfaces на маршрутизаторе OFF1 Выходные данные show ip eigrp interfaces, рассмотренные выше, указывают на то, что Gig 0/1, Gig 0/2 и Gig 0/3 маршрутизатора OFF1 участвуют в процессе маршрутизации EIGRP. В частности, этот процесс предназначен для EIGRP AS 1. Также обратите внимание, что соседство EIGRP было установлено с другим маршрутизатором, подключенным от интерфейса Gig 0/1 маршрутизатора OFF1, и другим от интерфейса Gig 0/2. Доказательством этих соседских отношений является наличие числа, превышающего 0 в колонке Peers. Поскольку интерфейс Gig 0/3 маршрутизатора OFF1 не формировал соседство с любыми другими маршрутизаторами, говорящими на EIGRP, в его столбце Peers стоит 0. Вывод из команды show ip eigrp neighbors на маршрутизаторе OFF1: В то время как выводимые данные из команды show ip eigrp interfaces указывали, что у нас было несколько соседей EIGRP, выходные данные из команды show ip eigrp neighbors, как видно выше, предлагают более подробную информацию об этих соседях. В частности, сосед, связанный с интерфейсом маршрутизатора OFF1 по Gig 0/1, имеет IP-адрес 10.1.1.2, а сосед соединен с интерфейсом маршрутизатора OFF1 по Gig0/2 имеет IP-адрес 10.1.1.6. Вывод из команды show ip eigrp topology [all-links] на маршрутизаторе OFF1: Одной из наиболее распространенных команд, используемых для проверки EIGRP и устранения неполадок, является show ip eigrp topology, как показано в приведенном выше примере. Выходные данные этой команды показывают маршруты-преемники (то есть предпочтительные маршруты) и возможные маршруты-преемники (то есть резервные маршруты), известные процессу маршрутизации EIGRP. Пожалуйста, имейте в виду, что появление маршрута в таблице топологии EIGRP не гарантирует его присутствия в таблице IP-маршрутизации маршрутизатора. В частности, маршруты-преемники, присутствующие в таблице топологии EIGRP, являются только кандидатами для попадания в таблицу IP-маршрутизации маршрутизатора. Например, маршрутизатор может обладать более достоверной информацией о маршрутизации для сети, такой как статически настроенный маршрут с административным расстоянием 1. Если EIGRP действительно является наиболее правдоподобным источником маршрутизации для конкретной сети, то эта сеть будет введена в таблицу IP-маршрутизации маршрутизатора. Кроме того, обратите внимание, как добавление аргумента all-links в приведенном выше примере показывает еще больше маршрутов (они выделены). Разница заключается в том, что аргумент all-links предписывает команде show ip eigrp topology отображать все изученные EIGRP маршруты, даже если некоторые из маршрутов не считаются маршрутами-преемниками или возможными маршрутами-преемниками. Теперь, когда вы знаете базу, почитайте про соседство и метрики EIGRP
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59