По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Многоуровневый коммутатор будет использовать информацию из таблиц, которые созданы (плоскость управления) для построения аппаратных таблиц. Он будет использовать таблицу маршрутизации для построения FIB (информационной базы пересылки) и таблицу ARP для построения таблицы смежности. Это самый быстрый способ переключения, потому что теперь у нас есть вся информация уровня 2 и 3, необходимая для пересылки аппаратных пакетов IP. Давайте посмотрим на информационную таблицу о пересылке и таблицу смежности на некоторых маршрутизаторах. Будем использовать ту же топологию, что и ранее. 3 роутера и R3 имеет интерфейс loopback0. Будем использовать статические маршруты для полного подключения: R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2 R2(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3 R3(config)#ip route 192.168.12.0 255.255.255.0 192.168.23.2 Это статические маршруты, которые мы будем использовать. Теперь посмотрим на таблицу маршрутизации и FIB: show ip cef показывает нам таблицу FIB. Вы можете видеть, что есть довольно много вещей в таблице FIB. Ниже даны разъяснения по некоторым из записей: 0.0.0.0/0 - это для интерфейса null0. Когда мы получим IP-пакеты, соответствующие этому правилу, то оно будет отброшено. 0.0.0.0 /32 - это для всех-нулевых передач. Забудьте об этом, так как мы больше не используем его. 3.3.3.0 /24 - это запись для интерфейса loopback0 R3. Обратите внимание, что следующий переход - это 192.168.12.2, а не 192.168.23.3, как в таблице маршрутизации! 192.168.12.0/24 - это наша непосредственно подключенная сеть. 192.168.12.0/32 зарезервировано для точного сетевого адреса. 192.168.12.1/32 - это IP-адрес на интерфейсе FastEthernet 0/0. 192.168.12.2/32 - это IP-адрес на интерфейсе FastEthernet 0/0 R2. 192.168.12.255/32 - это широковещательный адрес для сети 192.168.12.0/24. 224.0.0.0/4 - соответствует всему многоадресному трафику. Он будет удален, если поддержка многоадресной рассылки отключена глобально. 224.0.0.0/24 - соответствует всему многоадресному трафику, зарезервированному для трафика управления локальной сетью (например, OSPF, EIGRP). 255.255.255.255/32 - широковещательный адрес для подсети. Давайте подробно рассмотрим запись для network 3.3.3.0/24: Номер версии говорит нам, как часто эта запись CEF обновлялась с момента создания таблицы. Мы видим, что для достижения 3.3.3.0/24 нам нужно перейти к 192.168.23.3 и что требуется рекурсивный поиск. Следующий прыжок-192.168.12.2. Он также говорит, что это valid cached adjacency (допустимая кэшированная смежность). Существует целый ряд различных смежностей: Null adjacency: используется для отправки пакетов в интерфейс null0. Drop adjacency: это для пакетов, которые не могут быть переданы из-за ошибок инкапсуляции, маршрутов, которые не могут быть разрешены, или протоколов, которые не поддерживаются. Discard adjacency: это относится к пакетам, которые должны быть отброшены из-за списка доступа или другой политики. Punt adjacency: используется для пакетов, которые отправляются на плоскость управления для обработки. Пакеты, которые не пересылаются CEF, обрабатываются процессором. Если у вас есть много таких пакетов, то вы можете увидеть проблемы с производительностью. Вы можете видеть, сколько пакетов было обработано процессором: Вы можете использовать команду show cef not-cef-switched, чтобы проверить это. Количество пакетов указано по причине: No_adj: смежность не является полной.. No_encap: Информация об ARP является неполной. Unsupp’ted: пакет имеет функции, которые не поддерживаются. Redirect: Перенаправление ICMP. Receive: Это пакеты, предназначенные для IP-адреса, настроенного на интерфейсе уровня 3, пакеты, предназначенные для нашего маршрутизатора. Options: В заголовке пакета есть параметры IP-адреса. Access: ошибка сравнения со списком доступа Frag: ошибка фрагментации пакетов Мы также можем взглянуть на таблицу смежности, в которой хранится информация уровня 2 для каждой записи: Вы можете использовать команду show adjacency summary, чтобы быстро посмотреть, сколько у нас есть смежностей. Смежность - это отображение от уровня 2 до уровня 3 и происходит из таблицы ARP. R1#show adjacency Protocol Interface Address IP FastEthernet0/0 192.168.12.2(9) R1 имеет только один интерфейс, который подключен к R2. Вы можете увидеть запись для ip 192.168.12.2, который является интерфейсом FastEthernet 0/0 R2. Давайте увеличим масштаб этой записи: Мы видим там запись для 192.168.12.2 и там написано: CC011D800000CC001D8000000800 Что означает это число? Это MAC-адреса, которые нам нужны, и Ethertype ... давайте разберем поподробнее его: CC011D800000 - это MAC-адрес интерфейса R2 FastEthernet0 / 0 CC001D800000 - это MAC-адрес интерфейса R1 FastEthernet0/0. 0800 - это Ethertype. 0x800 означает IPv4. Благодаря таблицам FIB и смежности у нас есть вся информация уровня 2 и 3, которая нам требуется для перезаписи и пересылки пакетов. Имейте в виду, что перед фактической пересылкой пакета мы сначала должны переписать информацию заголовка: Исходный MAC-адрес. Конечный MAC-адрес. Контрольная сумма кадров Ethernet. TTL IP-пакета. Контрольная сумма IP-пакетов. Как только это будет сделано, мы сможем переслать пакет. Теперь у вас есть представление о том, что такое CEF и как обрабатываются пакеты. Возникает вопрос, а в чем разница между маршрутизаторами и коммутаторами, поскольку многоуровневый коммутатор может маршрутизировать, а маршрутизатор может выполнять коммутацию. Различие между устройствамистанвится все меньше, но коммутаторы обычно используют только Ethernet. Если вы покупаете Cisco Catalyst 3560 или 3750, то у вас будут только интерфейсы Ethernet. У них есть ASICs, поэтому коммутация кадров может выполняться со скоростью линии связи. С другой стороны, маршрутизаторы имеют другие интерфейсы, такие как последовательные каналы связи, беспроводные сети, и они могут быть модернизированы модулями для VPN, VoIP и т. д. Вы не сможете настроить такие вещи, как NAT/PAT на (маленьком) коммутаторе. Однако грань между ними становится все тоньше Маршрутизаторы используются для маршрутизации, коммутаторы уровня 2-для коммутации, но многоуровневые коммутаторы могут выполнять комбинацию того и другого. Возможно, ваш коммутатор выполняет 80% коммутации и 20% маршрутизации или наоборот. TCAM можно "запрограммировать" на использование оптимальных ресурсов с помощью шаблонов SDM. SDM (Switching Database Manager) используется на коммутаторах Cisco Catalyst для управления использованием памяти TCAM. Например, коммутатор, который используется только для коммутации, не требует никакой памяти для хранения информации о маршрутизации IPv4. С другой стороны, коммутатору, который используется только в качестве маршрутизатора, не потребуется много памяти для хранения MAC-адресов. SDM предлагает ряд шаблонов, которые мы можем использовать на нашем коммутаторе, вот пример коммутатора Cisco Catalyst 3560: Выше вы можете видеть, что текущий шаблон является "desktop default", и вы можете видеть, сколько памяти он резервирует для различных элементов. Вот пример других шаблонов: Вот шаблоны SDM для коммутатора. Мы можем изменить шаблон с помощью команды sdm prefer: Вы должны перезагрузить устройство прежде, чем он вступит в силу: SW1#reload Теперь давайте еще раз проверим шаблон: По сравнению с шаблоном "desktop default" мы теперь имеем двойное хранилище для одноадресных MAC-адресов. Однако для маршрутов IPv4 ничего не зарезервировано. Это хорошая идея, чтобы установить шаблон SDM, для того чтобы соответствовать необходимому использованию вашего коммутатора. Если вы делаете как коммутацию, так и маршрутизацию и не уверены в том, какой шаблон выбрать, то вы можете посмотреть на текущее использование TCAM, вот как это сделать: На данном рисунке многое не отображено, но вы можете видеть, как заполняется TCAM в данный момент. Теперь вам есть что сравнить с шаблонами SDM.
img
Ядро Linux является основой Unix-подобных операционных систем. Ядро отвечает за связь между оборудованием и программным обеспечением и за распределение доступных ресурсов. Все дистрибутивы Linux основаны на предопределенном ядре. Но если вы хотите отключить несколько параметров и драйверов или попробовать экспериментальные исправления, вам необходимо собрать ядро Linux. В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро Linux с нуля. Сборка ядра Linux Процесс создания ядра Linux состоит из семи простых шагов. Однако процедура требует значительного времени для завершения, в зависимости от скорости системы. Примечание. Если версия на веб-сайте ядра не совпадает с версией из приведенных ниже шагов, используйте эти команды и замените номер версии ядра. Шаг 1. Загрузите исходный код 1. Посетите официальный сайт ядра www.kernel.org и загрузите последнюю версию. Загруженный файл содержит сжатый исходный код. 2. Откройте терминал и используйте команду wget для загрузки исходного кода ядра Linux: wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.9.6.tar.xz По завершении загрузки в выходных данных отображается сообщение "saved". Шаг 2: извлеките исходный код Когда файл будет готов, запустите команду tar, чтобы извлечь исходный код: tar xvf linux-5.9.6.tar.xz Вывод отображает извлеченный исходный код ядра: Шаг 3: Установите необходимые пакеты Перед сборкой ядра установите дополнительные пакеты. Для этого запустите эту команду: sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison Команда, которую мы использовали выше, устанавливает следующие пакеты: git - отслеживает и записывает все изменения исходного кода во время разработки. Это также позволяет отменить изменения. fakeroot - упаковочный инструмент, создающий фальшивую корневую среду. build-essential - Устанавливает инструменты разработки, такие как C, C++, gcc и g++. ncurses-dev - Библиотека программирования, предоставляющая API для текстовых терминалов. xz-utils - обеспечивает быстрое сжатие и распаковку файлов. libssl-dev - поддерживает SSL и TSL, которые шифруют данные и делают интернет-соединение безопасным. bc (Basic Calculator) - математический язык сценариев, поддерживающий интерактивное выполнение операторов. flex (Fast Lexical Analyzer Generator) - генерирует лексические анализаторы, преобразующие символы в токены. libelf-dev - выдает общую библиотеку для управления файлами ELF (исполняемые файлы, дампы ядра и объектный код) bison - генератор парсера GNU, который преобразует описание грамматики в программу на языке C. Шаг 4: Настройте ядро Исходный код ядра Linux поставляется с конфигурацией по умолчанию. Однако вы можете настроить его под свои нужды. Для этого выполните следующие действия: 1. Перейдите к каталогу linux-5.9.6. с помощью команды cd: cd linux-5.9.6 2. Скопируйте существующий файл конфигурации с помощью команды cp: cp -v /boot/config-$(uname -r) .config 3. Чтобы внести изменения в файл конфигурации, выполните команду make: make menuconfig Команда запускает несколько скриптов, которые затем открывают меню конфигурации: 4. Меню конфигурации включает в себя такие параметры, как прошивка, файловая система, сеть и параметры памяти. Используйте стрелки, чтобы сделать выбор, или выберите HELP, чтобы узнать больше о вариантах. Когда вы закончите вносить изменения, выберите SAVE, а затем выйдите из меню. Примечание. Изменение настроек некоторых параметров может привести к тому, что ядро не будет работать. Если вы не знаете, что изменить, оставьте настройки по умолчанию. Шаг 5: Соберите ядро 1. Начните сборку ядра, выполнив следующую команду: make Процесс сборки и компиляции ядра Linux занимает некоторое время. Терминал перечисляет все компоненты ядра Linux: управление памятью, драйверы оборудования, драйверы файловой системы, сетевые драйверы и управление процессами. 2. Установите необходимые модули с помощью этой команды: sudo make modules_install 3. Наконец, установите ядро, набрав: sudo make install Вывод показывает готово, когда закончено: Шаг 6. Обновите загрузчик (необязательно) Загрузчик GRUB - это первая программа, которая запускается при включении системы. Команда make install выполняет этот процесс автоматически, но вы также можете сделать это вручную. 1. Обновите initramfs до установленной версии ядра: sudo update-initramfs -c -k 5.9.6 2. Обновите загрузчик GRUB с помощью этой команды: sudo update-grub Терминал выведет процесс и подтверждающее сообщение: Шаг 7: перезагрузите и проверьте версию ядра Когда вы выполните описанные выше действия, перезагрузите компьютер. Когда система загрузится, проверьте версию ядра с помощью команды uname: uname -mrs Терминал покажет текущую версию ядра Linux. Итог В этом пошаговом руководстве вы узнали, как собрать ядро Linux с нуля и установить необходимые пакеты.
img
CORS – это механизм браузера, который позволяет серверам указывать сторонние источники, которые имеют право запрашивать у них ресурсы. Этот механизм обеспечивает безопасность и не дает вредоносным сайтам красть данные, которые принадлежат другим источникам. CORS расшифровывается как Cross-Origin Resource Sharing, что переводится как «обмен ресурсами с запросом происхождения». В случае, когда для загрузки ресурса используется CORS, браузер отправляет предварительный HTTP-запрос  OPTIONS . Сервер должен ответить, указав все источники, с которыми он собирается взаимодействовать. Также он может определить дополнительные ограничения, например, указать HTTP-заголовки, которые могут быть отправлены.  Браузер проверяет текущий источник и исходящий запрос на соответствие спецификациям сервера. Если все проверки были пройдены успешно, то запрос одобряется. В противном случае запрос будет отклонен. Если это произойдет, вы увидите предупреждение в консоли.  Когда используется CORS Браузеры применяют CORS для запросов Ajax и Fetch. Этот механизм также используется для веб-шрифтов, текстур WebGL и отрисовки изображения холста с помощью  drawImage() . CORS также потребуется для любого правомерного запроса к стороннему источнику. CORS не применяется в том случае, если запрос рассматривается как «простой». Простой запрос должен начинаться с  GET ,  HEAD или  POST и иметь тип содержимого  text/plain ,  application/x-www-form-urlencoded или  multipart/form-data . Единственные заголовки простых запросов, которые допускаются, - это  Accept ,  Accept-Language ,  Content-Language и  Content-Type . Если запрос не соответствует всем критериям, которые мы перечислили выше, то современные браузеры запускают CORS. Важно понимать, что CORS – это технология для браузера, и вы не сможете использовать его при самостоятельной отправке запросов, например, с помощью утилиты  curl в своем терминале.  CORS не всегда отправляет предварительный запрос  OPTIONS . Предварительная проверка нужна и используется только тогда, когда запрос может вызвать «побочные эффекты» на сервере. Как правило, это относится ко всем методам запроса, кроме  GET .  Предположим, что есть запрос  POST к /api/users/create . Сервер всегда будет создавать нового пользователя, но при этом браузер может отказать в доступе к ответу на этот запрос, если для запроса был использован CORS. Есть шанс, что сервер может отклонить реальный запрос, если перед этим был отправлен запрос  OPTIONS . Это обеспечивает то, что учетная запись пользователя на самом деле не будет создаваться.  Управление CORS на стороне клиента Несмотря на то, что CORS является технологией для браузера, вы все равно не можете влиять на нее напрямую с помощью клиентского кода. Это гарантирует, что вредоносные скрипты не смогут обойти защиту CORS, чтобы загрузить данные со сторонних доменов.  CORS, как правило, незаметен, поэтому вы даже не будете знать о том, что он работает. Если в процессе CORS произойдет сбой, то ваш код JavaScript увидит обычную сетевую ошибку. Получить точную информацию о том, что пошло не так, невозможно, поскольку это может представлять риск нарушения безопасности. Все подробности записываются в консоль.  Единственный способ устранить сбои CORS – это убедиться, что ваш сервер отправляет корректные заголовки ответов. Теперь давайте посмотрим, как это делается.  Управление CORS на стороне сервера Для начала вам следует убедиться в том, что ваш сервер правильно обрабатывает запросы  OPTIONS . Возможно, вам придется создать новый маршрут обработки запросов в вашей веб-среде. В большинстве случаев вам придется принимать запросы  OPTIONS к каждой конечной точке, которая может получить CORS-запрос от браузера. Ответ не обязательно должен иметь тело, но он должен включать в себя определенные заголовки, которые сообщают браузеру, что делать дальше.  Начните с заголовка  Access-Control-Allow-Origin . Он укажет на сторонний источник, который имеет право взаимодействовать с вашей конечной точкой. Указать можно только один источник; но вы можете обрабатывать несколько источников, динамически устанавливая в качестве значения заголовка источник, из которого был отправлен запрос. Текущий источник можно найти в заголовке запроса  Origin . Access-Control-Allow-Origin принимает * в качестве специального подстановочного символа. Это позволит принимать запросы CORS из всех источников. Здесь следует быть осторожным, поскольку указание разрешенных источников обеспечивает контроль и не дает вредоносным скриптам запрашивать данные с вашего сервера.  Access-Control-Allow-Origin должен быть включен в ответ вашего сервера на реальный запрос и в ответ на запрос  OPTIONS . После того, как этот заголовок будет настроен, будет разрешен базовый обмен данными со сторонним клиентом браузера.  Указание CORS-заголовков  CORS-запросы, как правило, поддерживают только заголовки «простых» запросов, которые были перечислены выше. Если вы хотите использовать какой-то другой заголовок, например,  Authorization или настраиваемый заголовок, то вашему серверу необходимо будет явно разрешить его в ответе на предварительный запрос.  Установите заголовок  Access-Control-Allow-Headers . Его значение – это список названий заголовков через запятую, которые будут приняты с реальным запросом.  Access-Control-Allow-Headers: Authorization, X-Custom-Header Теперь браузер разрешит запросы с заголовками  Authorization или  X-Custom-Header . Браузер отправляет заголовок  Access-Control-Allow-Headers вместе с предварительным CORS-запросом. Он содержит список заголовков, которые будут отправлены с реальным запросом. Ваш серверный код может использовать эту информацию для того, чтобы понять, как нужно ответить на предварительный запрос.  Ограничение на определенные методы запроса Аналогично тому, как мы указываем заголовки запроса, так и конечные точки сервера могут определять, какие HTTP-методы из различных источников будут разрешены. Установите заголовок  Access-Control-Allow-Methods . Его значение – список названий методов через запятую.  Access-Control-Allow-Methods: GET, POST, DELETE Браузер отправляет заголовок  Access-Control-Request-Method с предварительным запросом. Таким образом сервер узнает HTTP-метод, который будет использоваться для выполнения окончательного запроса.  Cookie-файлы и учетные данные CORS-запросы, как правило, не отправляют cookie-файлы, так как в них может содержаться конфиденциальные учетные данные, которые идентифицируют отправителя. Если вам необходимо добавить cookie-файл к запросу на другой источник, то это нужно явно разрешить в клиентском коде: fetch("https://localhost/demo", {    mode: "cors",    credentials: "include" }); К тому же сервер должен установить заголовок ответа  Access-Control-Allow-Credentials: true , чтобы сообщить о том, что он соглашается на обмен cookie-файлами, которые содержат учетные данные.  Если вы используете заголовок  Access-Control-Allow-Credentials , то нельзя использовать подстановочный символ (*) в заголовке  Access-Control-Allow-Origin . Сервер должен явно указать источник для того, чтобы обезопасить конфиденциальность пользователя. Если вы будете использовать подстановочный символ, то браузер не выполнит запрос и вернет ошибку.  Предварительное кэширование Предварительные запросы  OPTIONS усиливают нагрузку на каждый запрос, который вы отправляете. При хорошем соединении задержка должна быть почти незаметной, и все же нерационально вызывать одну и ту же конечную точку раз за разом.  Вы можете указать браузеру кэшировать ответы на предварительные запросы. Для этого вам нужно установить заголовок  Access-Control-Max-Age . Значение этого заголовка – это время, выраженное в секундах. В течение этого времени браузер может хранить кэшированный ответ. Последующие запросы к той же конечной точке в течении заданного периода времени не будут сопровождаться предварительными запросами.  Заключение При первом знакомстве с технологией CORS она может сбивать с толку. Эта технология браузера, которая контролируется ответами сервера. Использование CORS неизбежно, но при этом оно может оказаться неуправляемым, если у вас нет доступа к серверному коду, с которым вы взаимодействуете.  Фактическая реализация CORS довольно проста. Убедитесь, что ваш API или CDN отправляет корректные заголовки ответов, в особенности это касается заголовка  Access-Control-Allow-Origin . Если с этим проблем нет, то у вас будет безопасная связь между источниками, которая поможет избежать вмешательства злоумышленников. 
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59