По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Вот несколько команд Linux, которые могут проверять скорость соединения, анализировать задержки и проверять, доступны ли другие системы. Существует довольно много инструментов, которые могут помочь проверить ваше подключение в командной строке Linux. В этой статье мы рассмотрим ряд команд, которые могут помочь оценить скорость вашего соединения, проверить, можете ли вы связаться с другими системами, проанализировать задержки соединения и определить, доступны ли определенные службы. Ping Команда ping-это самая простая и наиболее часто используемая команда для выполнения базового тестирования подключения. Он посылает пакеты, называемые эхо-запросами, и это пакеты, которые запрашивают ответ. Команда ищет ответы и отображает их вместе с тем, сколько времени занял каждый ответ, а затем сообщает, какой процент запросов был получен. Время отклика будет в значительной степени зависеть от того, сколько маршрутизаторов должны пересечь запросы и перегружена ли ваша сеть. Пингинг локальной системы может выглядеть так. Обратите внимание на небольшое количество миллисекунд, необходимых для каждого ответа, и потерю пакетов в 0%. В системах Linux эхо-запросы будут продолжаться, пока вы не наберете ^c (CTRL+C), чтобы их остановить. Некоторые системы, включая Windows, выдают четыре эхо-запроса, а затем останавливаются самостоятельно. Удаленная система будет реагировать значительно дольше. Отсутствие потери пакетов - это всегда хороший знак, и даже когда вы проверяете связь с удаленной системой, вы, как правило, ожидаете получить ответ от нее, если только не возникнет проблема. Команда ping обеспечивает простой способ проверки сетевого подключения для домашней сети. Отправляйте запросы в общедоступную систему, и вы должны ожидать 0% потери пакетов. Если у вас возникли проблемы, команда ping, скорее всего, покажет значительную потерю пакетов. Traceroute Предварительно установите пакет traceroute Traceroute-это гораздо более сложная команда, поскольку она выполняет серию проверок, чтобы увидеть, сколько времени занимает каждый переход между маршрутизаторами, и сообщает об этом обратно. Если общая проверка занимает много времени, это может означать, что один или два прыжка перегружены. Если сообщенные результаты сводятся к последовательности звездочек, то последний достигнутый маршрутизатор не может ответить на используемый тип пакета (UDP по умолчанию в системах Linux). Команда traceroute использует хитроумную технику для определения времени каждого прыжка. Он использует параметр времени жизни (TTL), который уменьшается с каждым прыжком, чтобы гарантировать, что каждый маршрутизатор на маршруте в какой-то момент отправит обратно сообщение об ошибке. Это позволяет traceroute сообщать о продолжительности времени между каждым переходом. Вот пример использования traceroute для доступа к локальной системе (один переход и быстрый ответ): В следующем примере, команда traceroute пытается связаться с удаленной системой, но не может сообщить о каждом прыжке (те, которые показывают звездочки), потому что маршрутизаторы на некоторых прыжках не отвечают на тип используемого пакета. В этом нет ничего необычного. По умолчанию максимальное количество переходов для traceroute составляет 30. Обратите внимание, что этот параметр отображается в первой строке вывода. Его можно изменить с помощью аргумента -m (например, traceroute -m 50 merionet.ru). Netcat Предварительно установите пакет netcat Команда netcat-это многофункциональная сетевая утилита для записи данных по сети из командной строки, но в форме, показанной ниже, позволяет просто определить, можно ли подключиться к определенной службе. Первоначально он был написан для nmap (the network mapper). Отправляя нулевые байты (параметр -z) на конкретный порт в удаленной системе, мы можем определить, доступна ли соответствующая служба, не прибегая к фактическому использованию соединения. Как вы, наверное, заметили, команду netcat можно вызвать с помощью nc или ncat. Speedtest Предварительно установите пакет speedtest-cli Инструмент speedtest проверяет скорость вашего соединения с вашим интернет-провайдером. Обратите внимание, что скорость загрузки нередко бывает значительно ниже скорости выгрузки (отдачи). Интернет-провайдеры понимают, что большинство людей загружают значительно больше данных, чем отправляют. Инструмент speedtest выделит любые различия. В приведенном ниже тесте скорость загрузки не намного превышает скорость загрузки. Результаты команд будут несколько отличаться от теста к тесту. Вы также можете использовать утилиту speedtest через браузер, зайдя на сайт speedtest.net. nethogs Команда methods использует совершенно иной подход, чем команды, описанные выше. Он группирует использование полосы пропускания по процессам, чтобы помочь вам точно определить конкретные процессы, которые могут вызвать замедление сетевого трафика. Другими словами, он помогает вам точно определить "net hogs".
img
Начиная своё знакомство с iptables, следует рассказать про netfilter. Netfilter - это набор программных хуков внутри ядра Linux, которые позволяют модулям ядра регистрировать функции обратного вызова от стека сетевых протоколов. Хук (hook) - это программный элемент, который позволяет перехватывать функции обратного вызова в чужих процессах. Netfilter является основой для построения Firewall'а в дистрибутивах Linux, но для того, чтобы он заработал в полную силу его нужно настроить. Как раз с помощью iptables мы можем взаимодействовать с хуками Netfilter и создавать правила фильтрации, маршрутизации, изменения и транслирования пакетов. Иногда про Netfilter забывают и называют эту связку просто iptables. Введение Итак, iptables - это утилита для настройки программного Firewall'а (межсетевого экрана) linux, которая предустанавливается по умолчанию во все сборки Linux, начиная с версии 2.4. Запускается iptables из командной строки (CLI) под пользователем с правами root и настраивается там же. Можете в этом убедиться, набрав команду iptables -V в командной строке, она покажет вам версию iptables. Почему же iptables всем так понравился, что его стали включать во все сборки Linux? Всё дело в том, что iptables действительно очень прост в настройке. С помощью него можно решить следующие задачи: Настроить stateless и statefull фильтрацию пакетов версий IPv4 и IPv6; Stateless - это фильтрация, основанная на проверке статических параметров одного пакета, например: IP адрес источника и получателя, порт и другие не изменяющиеся параметры. Statefull - это фильтрация, основанная на анализе потоков трафика. С помощью нее можно определить параметры целой TCP сессии или UDP потока. Настраивать все виды трансляции IP адресов и портов NAT, PAT, NAPT; Настроить политики QoS; Производить различные манипуляции с пакетами, например - изменять поля в заголовке IP. Прежде чем переходить к практике, давайте обратимся к теории и поймём саму логику iptables. Логика и основные понятия iptables Правила Как и все файрволлы, iptables оперирует некими правилами (rules), на основании которых решается судьба пакета, который поступил на интерфейс сетевого устройства (роутера). Ну допустим у нас есть сетевое устройство с адресом 192.168.1.1, на котором мы настроили iptables таким образом, чтобы запрещать любые ssh (порт 22) соединения на данный адрес. Если есть пакет, который идёт, например, с адреса 192.168.1.15 на адрес 192.168.1.1 и порт 22, то iptables скажет: “Э, нет, брат, тебе сюда нельзя” и выбросит пакет. Или вообще ничего не скажет и выбросит, но об этом чуть позже :) Каждое правило в iptables состоит из критерия, действия и счётчика Критерий - это условие, под которое должны подпадать параметры пакета или текущее соединение, чтобы сработало действие. В нашем примере – этим условием является наличие пакета на входящем интерфейсе, устанавливающего соединение на порт 22 Действие - операция, которую нужно проделать с пакетом или соединением в случае выполнения условий критерия. В нашем случае – запретить пакет на порт 22 Счетчик - сущность, которая считает сколько пакетов было подвержено действию правила и на основании этого, показывает их объём в байтах. Цепочки Набор правил формируется в цепочки (chains) Существуют базовые и пользовательские цепочки. Базовые цепочки - это набор предустановленных правил, которые есть в iptables по умолчанию. Существует 5 базовых цепочек и различаются они в зависимости от того, какое назначение имеет пакет. Имена базовых цепочек записываются в верхнем регистре. PREROUTING - правила в этой цепочке применяются ко всем пакетам, которые поступают на сетевой интерфейс извне; INPUT - применяются к пакетам, которые предназначаются для самого хоста или для локального процесса, запущенного на данном хосте. То есть не являются транзитными; FORWARD - правила, которые применяются к транзитным пакетам, проходящими через хост, не задерживаясь; OUTPUT - применяются к пакетам, которые сгенерированы самим хостом; POSTROUTING - применяются к пакетам, которые должны покинуть сетевой интерфейс. В базовых цепочках обязательно устанавливается политика по умолчанию, как правило – принимать (ACCEPT) или сбрасывать (DROP) пакеты. Действует она только в цепочках INPUT, FORWARD и OUTPUT Таблица Таблицы - это набор базовых и пользовательских цепочек. В зависимости от того, в какой таблице находится цепочка правил, с пакетом или соединением производятся определённые действия Существует 5 таблиц: filter - таблица, выполняющая функции фильтрации пакетов по определённым параметрам. В большинстве случаев вы будете использовать именно её. Содержит следующие встроенные цепочки: FORWARD, INPUT, OUTPUT; raw - чтобы понять предназначение этой таблицы, нужно понимать логику работы statefull firewall'а. Дело в том, что по умолчанию, iptables рассматривает каждый пакет как часть большого потока и может определить какому соединению принадлежит тот или иной пакет. С помощью raw таблицы настраиваются исключения, которые будут рассматривать пакет как отдельную, ни к чему не привязанную сущность. Содержит следующие встроенные цепочки: INPUT, OUTPUT; nat - таблица, предназначенная целиком по функции трансляции сетевых адресов. Содержит следующие встроенные цепочки: PREROUTING, OUTPUT, POSTROUTING; mangle - таблица, предназначенная для изменения различных заголовков пакета. Можно, например, изменить TTL, количество hop'ов и другое. Содержит следующие встроенные цепочки: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING>; security - используется для назначения пакетам или соединениям неких меток, которые в дальнейшем может интерпретировать SElinux. Теперь мы можем представить себе логику iptables в виде следующей схемы: Действия Ну и последнее, о чем нужно рассказать, прежде чем мы с вами начнем писать правила - это target. В контексте iptables, target - это действие, которое нужно проделать с пакетом или соединением, которое совпало с критериями правила. Итак, наиболее используемые действия: ACCEPT - разрешить прохождение пакета; DROP - тихо выбросить пакет, не сообщая причин; QUEUE - отправляет пакет за пределы логики iptables, в стороннее приложение. Это может понадобиться, когда нужно обработать пакет в рамках другого процесса в другой программе; RETURN - остановить обработку правила и вернуться на одно правило назад. Это действие подобно break'у в языке программирования. Помимо этих четырех, есть ещё масса других действий, которые называются расширенными (extension modules): REJECT - выбрасывает пакет и возвращает причину в виде ошибки, например: icmp unreachable; LOG - просто делает запись в логе, если пакет соответствует критериям правила; Есть действия, которые доступны только в определенной цепочке и таблицах, например, только в табоице nat и цепочках OUTPUT и PREROUTING доступно действие DNAT, которое используется в NAT'ировании и меняет Destination IP пакета. В той же таблице, только в цепочке POSTRUNNING доступно действие SNAT, меняющее Source IP пакета. Отдельно остановимся на действии MASQUERADE, которое делает то же самое что SNAT, только применяется на выходном интерфейсе, когда IP адрес может меняться, например, когда назначается по DHCP. Пишем правила Отлично, теперь давайте приближаться к практике. Как Вы уже поняли, мы будем писать правила, поэтому нам нужно понять, как они строятся. Итак, допустим у нас есть хост с адресом 192.168.2.17, на 80 (http) порту которого, работает вэб-сервер Apache. Мы заходим на адрес http://192.168.2.17 с хоста с адресом 192.168.2.2 и всё отлично работает: А теперь открываем командную строку под root на хосте 192.168.2.17 и пишем: iptables -A INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP Попробуем открыть открыть http://192.168.2.17 ещё раз: Упс, не работает. Давайте теперь разбираться, что мы наделали? Всё очень просто – данной командой мы: вызвали утилиту iptables; -A - этим ключом мы указали, что нужно добавить правило к существующей цепочке; INPUT - указали цепочку, к которой хотим добавить правило; -p tcp - явно указали протокол TCP. Здесь также можно указывать другие протоколы (udp, icmp, sctp), или номер протокола, инкапсулируемого в IP (17 – udp, 6 – tcp и др.); -s 192.168.2.2 - указали, какой адрес источника должен быть у пакета, который мы хотим фильтровать; --dport 80 - указали адресованные какому порту пакеты мы хотим фильтровать. В данном случае - 80, на котором работает наш сервер Apache. -j DROP - указали что нужно сделать с пакетом, параметры которого совпали с данными критериями. В данном случае – просто тихо выбросить. Таким образом, мы заблокировали все пакеты с адреса 192.168.2.2 на локальный порт 80 и тем самым закрыли доступ к нашему серверу Apache для данного хоста. Обратите внимание – мы не указывали таблицу, в цепочки которой мы хотим добавить правило. Поэтому, по умолчанию таблица - filter. Для явного указания таблицы нужно перед указанием цепочки ввести ключ -t или (--table) Чтобы открыть доступ опять просто поменяем ключ -A в правиле на -D, тем самым мы удалим данное правило из iptables. Синтаксис iptables Друзья, на самом деле в iptables очень богатый синтаксис правил. Полный список ключей и параметров вы можете найти в официальном гайде на iptables.org. Мы же приведём самые “ходовые” опции, которыми вы, вероятно, будете пользоваться. Чтобы вы не запутались, мы приводим их в табличках ниже. Для удобства, в iptables реализовано очень много сокращений для разных ключей. Например, мы писали ключ -A вместо полного --append, -p вместо полного --proto и -s вместо полного --source, дальше мы покажем, что ещё можно сократить и где применить. Начнём с команд для редактирования правил и цепочек – добавления, удаления, замены и так далее: коротко синтаксис правила применение -A --append {цепочка правила} добавить правило к цепочке (в самое начало) -D --delete {цепочка правила} удалить правило из цепочки -D --delete {номер правила в цепочке} удалить правило из цепочки по номеру (1 - x) -I --insert {номер правила вцепочке} вставить правило в цепочку по номеру (1 - x) -R --replace {номер правила вцепочке} заменить правило в цепочке по номеру (1 - x) -X --delete-chain {цепочка} удалить цепочку (только для пользовательских) -E --rename-chain {старое имя цепочки} {новое имя цепочки} переименовать цепочку -N --new {имя цепочки} создание новой пользовательской цепочки -C --check {правило цепочки} проверит наличие правила в цепочке -F --flush {цепочка} удаляет все правила в цепочке, если цепочка не указана – удалятся все правила -Z --zero {цепочка} {номер правила вцепочке} обнуляет все счётчики пакетов и байтов в цепочке или всех цепочках -P --policy {цепочка} {номер правила вцепочке} изменяет политику по умолчанию, она должна основываться на встроенном target’e {ACCEPT, DROP, QUEUE} Продолжим синтаксисом настройки правил – на каком сетевом интерфейсе следить за пакетами, какой протокол проверять, адрес источника, назначения и так далее. Кстати, перед некоторыми параметрами можно ставить восклицательный знак - !, означающее логическое НЕ. В таблице мы пометим такие параметры таким значком – (!) коротко синтаксис опции применение -p (!) --proto {протокол} протокол {tcp, udp, udplite, icmp, esp, ah, sctp} или номер протокола {16,7}, all - все протоколы -4 --ipv4 указывает версию протокола ipv4 -6 --ipv6 указывает версию протокола ipv6 -s (!) --source {адрес/маска} указывает ip адрес источника -d (!) --destination {адрес/маска} указывает ip адрес назначения -m --match включает дополнительные модули, явно задающимися данным ключем. например <code>m limit --limit 3/min</code> - установит лимит на количество пакетов в минуту -f (!) --fragment включает обработку фрагментированных пакетов, в которых нет параметров изначального полного пакета, содержащихся в первом фрагменте пакета -i (!) --in-interface {имя интерфейса} обрабатывает только входящие пакеты, прилетающие на сетевой интерфейс {имя интерфейса} -o (!) --out-interface {имя интерфейса} обрабатывает только исходящие пакеты, прилетающие на сетевой интерфейс {имя интерфейса} --set-counters {пакеты} {байты} включает счётчик для ключей--insert, --append, --replace Теперь рассмотрим опции для действий, которые должны сработать по совпадению критериев: коротко синтаксис опции применение -j --jump {действие} применяет одно из действий accept, drop, reject и другие -g --goto {цепочка} переходит к другой цепочке правил Теперь рассмотрим какую информацию мы можем вытянуть с помощью iptables и какие опции для этого нужно использовать: коротко синтаксис команды применение -l --list {цепочка} {номер правила} показывает правила в цепочке или всех цепочках. по умолчанию покажет таблицу filter -s --list-rules{цепочка} {номер правила} показывает текст правила в цепочке или всех цепочках -n --numeric покажет параметры правила в числовом виде. например не порт будет не http, а 80 -v --verbose выводит более подробную информацию -v --version покажет версию iptables -x --exact покажет точные значения числовых параметров --line-numbers покажет номера правил Для быстрого получения информации о настроенных правилах и о метриках их срабатывания, часто применяется команда, комбинирующая 3 ключа - iptables -nLv. Например, для настроенного нами ранее правила – вывод будет такой: Пример посложнее Давайте рассмотрим ещё один пример. Допустим у нас во локальной сети есть хост 192.168.2.19 с сервером Apache. Мы хотим сделать его доступным из Интернета. Для этого нам нужно воспользоваться возможностями таблицы nat и написать правило, которое будет перенаправлять входящий http трафик на внешний интерфейс (пусть будет enp0s3 с адресом 101.12.13.14) и порт 80 на адрес нашего сервера внутри сети и 80 порт – 192.168.2.19:80. По сути – нужно сделать проброс портов. Напишем такое правило: iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to 192.168.2.19:80 Теперь если мы перейдём по адресу http://101.12.13.14, то должны попасть на наш Apache. Возможности iptables настолько обширны, что мы могли бы начать писать новую Базу знаний по нему. В статье мы показали лишь базовые варианты применения. Это действительно великий инструмент и освоить его не так уж сложно. Надеюсь, данная статья Вам в этом поможет. Спасибо за внимание!
img
232 или 4 294 967 296 IPv4 адресов это много? Кажется, что да. Однако с распространением персональных вычислений, мобильных устройств и быстрым ростом интернета вскоре стало очевидно, что 4,3 миллиарда адресов IPv4 будет недостаточно. Долгосрочным решением было IPv6, но требовались более быстрое решение для устранения нехватки адресов. И этим решением стал NAT (Network Address Translation). Что такое NAT Сети обычно проектируются с использованием частных IP адресов. Это адреса 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Эти частные адреса используются внутри организации или площадки, чтобы позволить устройствам общаться локально, и они не маршрутизируются в интернете. Чтобы позволить устройству с приватным IPv4-адресом обращаться к устройствам и ресурсам за пределами локальной сети, приватный адрес сначала должен быть переведен на общедоступный публичный адрес. И вот как раз NAT переводит приватные адреса, в общедоступные. Это позволяет устройству с частным адресом IPv4 обращаться к ресурсам за пределами его частной сети. NAT в сочетании с частными адресами IPv4 оказался полезным методом сохранения общедоступных IPv4-адресов. Один общедоступный IPv4-адрес может быть использован сотнями, даже тысячами устройств, каждый из которых имеет частный IPv4-адрес. NAT имеет дополнительное преимущество, заключающееся в добавлении степени конфиденциальности и безопасности в сеть, поскольку он скрывает внутренние IPv4-адреса из внешних сетей. Маршрутизаторы с поддержкой NAT могут быть настроены с одним или несколькими действительными общедоступными IPv4-адресами. Эти общедоступные адреса называются пулом NAT. Когда устройство из внутренней сети отправляет трафик из сети наружу, то маршрутизатор с поддержкой NAT переводит внутренний IPv4-адрес устройства на общедоступный адрес из пула NAT. Для внешних устройств весь трафик, входящий и выходящий из сети, выглядит имеющим общедоступный IPv4 адрес. Маршрутизатор NAT обычно работает на границе Stub-сети. Stub-сеть – это тупиковая сеть, которая имеет одно соединение с соседней сетью, один вход и выход из сети. Когда устройство внутри Stub-сети хочет связываться с устройством за пределами своей сети, пакет пересылается пограничному маршрутизатору, и он выполняет NAT-процесс, переводя внутренний частный адрес устройства на публичный, внешний, маршрутизируемый адрес. Терминология NAT В терминологии NAT внутренняя сеть представляет собой набор сетей, подлежащих переводу. Внешняя сеть относится ко всем другим сетям. При использовании NAT, адреса IPv4 имеют разные обозначения, основанные на том, находятся ли они в частной сети или в общедоступной сети (в интернете), и является ли трафик входящим или исходящим. NAT включает в себя четыре типа адресов: Внутренний локальный адрес (Inside local address); Внутренний глобальный адрес (Inside global address); Внешний местный адрес (Outside local address); Внешний глобальный адрес (Outside global address); При определении того, какой тип адреса используется, важно помнить, что терминология NAT всегда применяется с точки зрения устройства с транслированным адресом: Внутренний адрес (Inside address) - адрес устройства, которое транслируется NAT; Внешний адрес (Outside address) - адрес устройства назначения; Локальный адрес (Local address) - это любой адрес, который отображается во внутренней части сети; Глобальный адрес (Global address) - это любой адрес, который отображается во внешней части сети; Рассмотрим это на примере схемы. На рисунке ПК имеет внутренний локальный (Inside local) адрес 192.168.1.5 и с его точки зрения веб-сервер имеет внешний (outside) адрес 208.141.17.4. Когда с ПК отправляются пакеты на глобальный адрес веб-сервера, внутренний локальный (Inside local) адрес ПК транслируется в 208.141.16.5 (inside global). Адрес внешнего устройства обычно не переводится, поскольку он является общедоступным адресом IPv4. Стоит заметить, что ПК имеет разные локальные и глобальные адреса, тогда как веб-сервер имеет одинаковый публичный IP адрес. С его точки зрения трафик, исходящий из ПК поступает с внутреннего глобального адреса 208.141.16.5. Маршрутизатор с NAT является точкой демаркации между внутренней и внешней сетями и между локальными и глобальными адресами. Термины, inside и outside, объединены с терминами local и global, чтобы ссылаться на конкретные адреса. На рисунке маршрутизатор настроен на предоставление NAT и имеет пул общедоступных адресов для назначения внутренним хостам. На рисунке показано как трафик отправляется с внутреннего ПК на внешний веб-сервер, через маршрутизатор с поддержкой NAT, и высылается и переводится в обратную сторону. Внутренний локальный адрес (Inside local address) - адрес источника, видимый из внутренней сети. На рисунке адрес 192.168.1.5 присвоен ПК – это и есть его внутренний локальный адрес. Внутренний глобальный адрес (Inside global address) - адрес источника, видимый из внешней сети. На рисунке, когда трафик с ПК отправляется на веб-сервер по адресу 208.141.17.4, маршрутизатор переводит внутренний локальный адрес (Inside local address) на внутренний глобальный адрес (Inside global address). В этом случае роутер изменяет адрес источника IPv4 с 192.168.1.5 на 208.141.16.5. Внешний глобальный адрес (Outside global address) - адрес адресата, видимый из внешней сети. Это глобально маршрутизируемый IPv4-адрес, назначенный хосту в Интернете. На схеме веб-сервер доступен по адресу 208.141.17.4. Чаще всего внешние локальные и внешние глобальные адреса одинаковы. Внешний локальный адрес (Outside local address) - адрес получателя, видимый из внутренней сети. В этом примере ПК отправляет трафик на веб-сервер по адресу 208.141.17.4 Рассмотрим весь путь прохождения пакета. ПК с адресом 192.168.1.5 пытается установить связь с веб-сервером 208.141.17.4. Когда пакет прибывает в маршрутизатор с поддержкой NAT, он считывает IPv4 адрес назначения пакета, чтобы определить, соответствует ли пакет критериям, указанным для перевода. В этом пример исходный адрес соответствует критериям и переводится с 192.168.1.5 (Inside local address) на 208.141.16.5. (Inside global address). Роутер добавляет это сопоставление локального в глобальный адрес в таблицу NAT и отправляет пакет с переведенным адресом источника в пункт назначения. Веб-сервер отвечает пакетом, адресованным внутреннему глобальному адресу ПК (208.141.16.5). Роутер получает пакет с адресом назначения 208.141.16.5 и проверяет таблицу NAT, в которой находит запись для этого сопоставления. Он использует эту информацию и переводит обратно внутренний глобальный адрес (208.141.16.5) на внутренний локальный адрес (192.168.1.5), и пакет перенаправляется в сторону ПК. Типы NAT Существует три типа трансляции NAT: Статическая адресная трансляция (Static NAT) - сопоставление адресов один к одному между локальными и глобальными адресами; Динамическая адресная трансляция (Dynamic NAT) - сопоставление адресов “многие ко многим” между локальными и глобальными адресами; Port Address Translation (PAT) - многоадресное сопоставление адресов между локальными и глобальными адресами c использованием портов. Также этот метод известен как NAT Overload; Static NAT Статический NAT использует сопоставление локальных и глобальных адресов один к одному. Эти сопоставления настраиваются администратором сети и остаются постоянными. Когда устройства отправляют трафик в Интернет, их внутренние локальные адреса переводятся в настроенные внутренние глобальные адреса. Для внешних сетей эти устройства имеют общедоступные IPv4-адреса. Статический NAT особенно полезен для веб-серверов или устройств, которые должны иметь согласованный адрес, доступный из Интернета, как например веб-сервер компании. Статический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя. Статическая NAT таблица выглядит так: Dynamic NAT Динамический NAT использует пул публичных адресов и назначает их по принципу «первым пришел, первым обслужен». Когда внутреннее устройство запрашивает доступ к внешней сети, динамический NAT назначает доступный общедоступный IPv4-адрес из пула. Подобно статическому NAT, динамический NAT требует наличия достаточного количества общедоступных адресов для удовлетворения общего количества одновременных сеансов пользователя. Динамическая NAT таблица выглядит так: Port Address Translation (PAT) PAT транслирует несколько частных адресов на один или несколько общедоступных адресов. Это то, что делают большинство домашних маршрутизаторов. Интернет-провайдер назначает один адрес маршрутизатору, но несколько членов семьи могут одновременно получать доступ к Интернету. Это наиболее распространенная форма NAT. С помощью PAT несколько адресов могут быть сопоставлены с одним или несколькими адресами, поскольку каждый частный адрес также отслеживается номером порта. Когда устройство инициирует сеанс TCP/IP, оно генерирует значение порта источника TCP или UDP для уникальной идентификации сеанса. Когда NAT-маршрутизатор получает пакет от клиента, он использует номер своего исходного порта, чтобы однозначно идентифицировать конкретный перевод NAT. PAT гарантирует, что устройства используют разный номер порта TCP для каждого сеанса. Когда ответ возвращается с сервера, номер порта источника, который становится номером порта назначения в обратном пути, определяет, какое устройство маршрутизатор перенаправляет пакеты. Картинка иллюстрирует процесс PAT. PAT добавляет уникальные номера портов источника во внутренний глобальный адрес, чтобы различать переводы. Поскольку маршрутизатор обрабатывает каждый пакет, он использует номер порта (1331 и 1555, в этом примере), чтобы идентифицировать устройство, с которого выслан пакет. Адрес источника (Source Address) - это внутренний локальный адрес с добавленным номером порта, назначенным TCP/IP. Адрес назначения (Destination Address) - это внешний локальный адрес с добавленным номером служебного порта. В этом примере порт службы 80: HTTP. Для исходного адреса маршрутизатор переводит внутренний локальный адрес во внутренний глобальный адрес с добавленным номером порта. Адрес назначения не изменяется, но теперь он называется внешним глобальным IP-адресом. Когда веб-сервер отвечает, путь обратный. В этом примере номера портов клиента 1331 и 1555 не изменялись на маршрутизаторе с NAT. Это не очень вероятный сценарий, потому что есть хорошая вероятность того, что эти номера портов уже были прикреплены к другим активным сеансам. PAT пытается сохранить исходный порт источника. Однако, если исходный порт источника уже используется, PAT назначает первый доступный номер порта, начиная с начала соответствующей группы портов 0-511, 512-1023 или 1024-65535. Когда портов больше нет, и в пуле адресов имеется более одного внешнего адреса, PAT переходит на следующий адрес, чтобы попытаться выделить исходный порт источника. Этот процесс продолжается до тех пор, пока не будет доступных портов или внешних IP-адресов. То есть если другой хост может выбрать тот же номер порта 1444. Это приемлемо для внутреннего адреса, потому что хосты имеют уникальные частные IP-адреса. Однако на маршрутизаторе NAT номера портов должны быть изменены - в противном случае пакеты из двух разных хостов выйдут из него с тем же адресом источника. Поэтому PAT назначает следующий доступный порт (1445) на второй адрес хоста. Подведем итоги в сравнении NAT и PAT. Как видно из таблиц, NAT переводит IPv4-адреса на основе 1:1 между частными адресами IPv4 и общедоступными IPv4-адресами. Однако PAT изменяет как сам адрес, так и номер порта. NAT перенаправляет входящие пакеты на их внутренний адрес, ориентируясь на входящий IP адрес источника, заданный хостом в общедоступной сети, а с PAT обычно имеется только один или очень мало публично открытых IPv4-адресов, и входящие пакеты перенаправляются, ориентируясь на NAT таблицу маршрутизатора. А что относительно пакетов IPv4, содержащих данные, отличные от TCP или UDP? Эти пакеты не содержат номер порта уровня 4. PAT переводит наиболее распространенные протоколы, переносимые IPv4, которые не используют TCP или UDP в качестве протокола транспортного уровня. Наиболее распространенными из них являются ICMPv4. Каждый из этих типов протоколов по-разному обрабатывается PAT. Например, сообщения запроса ICMPv4, эхо-запросы и ответы включают идентификатор запроса Query ID. ICMPv4 использует Query ID. для идентификации эхо-запроса с соответствующим ответом. Идентификатор запроса увеличивается с каждым отправленным эхо-запросом. PAT использует идентификатор запроса вместо номера порта уровня 4. Преимущества и недостатки NAT NAT предоставляет множество преимуществ, в том числе: NAT сохраняет зарегистрированную схему адресации, разрешая приватизацию интрасетей. При PAT внутренние хосты могут совместно использовать один общедоступный IPv4-адрес для всех внешних коммуникаций. В этом типе конфигурации требуется очень мало внешних адресов для поддержки многих внутренних хостов; NAT повышает гибкость соединений с общедоступной сетью. Многочисленные пулы, пулы резервного копирования и пулы балансировки нагрузки могут быть реализованы для обеспечения надежных общедоступных сетевых подключений; NAT обеспечивает согласованность для внутренних схем адресации сети. В сети, не использующей частные IPv4-адреса и NAT, изменение общей схемы адресов IPv4 требует переадресации всех хостов в существующей сети. Стоимость переадресации хостов может быть значительной. NAT позволяет существующей частной адресной схеме IPv4 оставаться, позволяя легко изменять новую схему общедоступной адресации. Это означает, что организация может менять провайдеров и не нужно менять ни одного из своих внутренних клиентов; NAT обеспечивает сетевую безопасность. Поскольку частные сети не рекламируют свои адреса или внутреннюю топологию, они остаются достаточно надежными при использовании в сочетании с NAT для получения контролируемого внешнего доступа. Однако нужно понимать, что NAT не заменяет фаерволы; Но у NAT есть некоторые недостатки. Тот факт, что хосты в Интернете, по-видимому, напрямую взаимодействуют с устройством с поддержкой NAT, а не с фактическим хостом внутри частной сети, создает ряд проблем: Один из недостатков использования NAT связан с производительностью сети, особенно для протоколов реального времени, таких как VoIP. NAT увеличивает задержки переключения, потому что перевод каждого адреса IPv4 в заголовках пакетов требует времени; Другим недостатком использования NAT является то, что сквозная адресация теряется. Многие интернет-протоколы и приложения зависят от сквозной адресации от источника до места назначения. Некоторые приложения не работают с NAT. Приложения, которые используют физические адреса, а не квалифицированное доменное имя, не доходят до адресатов, которые транслируются через NAT-маршрутизатор. Иногда эту проблему можно избежать, реализуя статические сопоставления NAT; Также теряется сквозная трассировка IPv4. Сложнее трассировать пакеты, которые подвергаются многочисленным изменениям адресов пакетов в течение нескольких NAT-переходов, что затрудняет поиск и устранение неполадок; Использование NAT также затрудняет протоколы туннелирования, такие как IPsec, поскольку NAT изменяет значения в заголовках, которые мешают проверкам целостности, выполняемым IPsec и другими протоколами туннелирования; Службы, требующие инициирования TCP-соединений из внешней сети, или stateless протоколы, например, использующие UDP, могут быть нарушены. Если маршрутизатор NAT не настроен для поддержки таких протоколов, входящие пакеты не могут достичь своего адресата; Мы разобрали основные принципы работы NAT. Хотите больше? Прочитайте нашу статью по настройке NAT на оборудовании Cisco.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59