Несколько внешних IP адресов


В своей практической деятельности нам довольно часто приходится сталкиваться с проблемой рационального распределения блоков IP-адресов. Распределение адресов между тысячами клиентов представляет собой достаточно сложную задачу. В этой статье мы бы хотели поделиться собственным опытом ее решения.

Немного о принципах IP-адресации

Прежде чем говорить о проблемах деления адресного пространства, вспомним основные принципы IPv4-адресации. IPv4-адрес представляет собой набор из 32 бит (единиц и нулей). Человеку прочесть и запомнить двоичный IP-адрес достаточно сложно. Поэтому 32 бита разделяются на четыре байта — так называемые октеты. Чтобы облегчить понимание, все октеты записываются в десятичной форме. Каждый IPv4-адрес состоит из двух частей: первая идентифицирует сеть, а вторая — узел в сети. Такая адресация называется иерархической: первая часть адреса идентифицирует всю сеть, в которой находятся все уникальные адреса. Маршрутизаторам нужно знать лишь путь к каждой сети, а не расположение отдельных узлов.
Чтобы узлы могли определить, где находится сетевая часть, а где — адрес узла, используется маска подсети. Маска подсети присваивается узлу одновременно с IP-адресом.Она представляет собой набор из 32 бит, в котором единицы соответствуют сетевой части, а нули — адресу узла. Сегодня широкое распространение получила запись IP-адресов в так называеой префиксной, или CIDR-нотации. Маска в такой записи указывается в виде числа после косой черты. Например, маска 255.255.255.0 в двоичном виде будет выглядеть так: 11111111.11111111.11111111.00000000. Количество единиц равняется 24, а маска записывается как /24.

Проблемы ручного выделения

Во многих организациях выделение IP-адресов осуществляется вручную, без использования каких-либо специализированных программных средств. Ручное выделение рано или поздно приводит к путанице с адресацией. Во-первых, ручное выделение неизбежно приводит к фрагментации: клиентам предоставляется много мелких подсетей, из-за чего становится невозможным выделить подсеть большего размера.
Во-вторых, необходимость выделять подсети разных размеров тоже приводит к различным трудностям.В качестве примера возможной проблемной ситуации можно привести случай, когда клиенту выделяется подсеть /27 или /28, из которой уже выделен блок /29. Можно ли как-то автоматизировать процесс выделения адресов, чтобы вообще избежать ошибок? Размышляя над этим вопросом, мы нашли свое решение, которое отлично работает благодаря хорошей визуализации.

Дерево интервалов и таблица свободных подсетей

Для поиска свободных подсетей мы используем дерево интервалов. С его помощью можно находить интервалы, пересекающиеся с заданным интервалом или точкой. IP-адрес можно представить в виде десятичного числа, так что мы можем без труда определить границы пула и представить все занятые подсети в виде отрезков на большом интервале.
Алгоритм поиска свободной подсети можно описать так. Предположим, что клиент просит выделить подсеть /27. Сначала нужно убедиться в том, что имеющийся пул по размеру больше, чем эта подсеть. Если он по размеру меньше, то нужно будет либо взять другой пул, либо сообщить клиенту об отсутствии свободных подсетей нужного размера. Если пул по размеру больше запрашиваемой подсети, то мы начинаем двигаться от начала пула отрезками размером в требуемую подсеть (ее размер равен 2^(32-x), где x — префикс подсети).

Используя ранее построенное дерево интервалов, мы можем быстро определить, перекрывает ли нужная клиенту подсеть, представленная в виде интервала, ранее выделенные подсети. Подсеть 127.0.0.0/27 в нашем примере перекрывает одну выделенную подсеть /29. Затем берется интервал, следующий за ней — 127.0.0.32/27. Мы проверяем его на пересечение с другими, и он оказывается свободен. После этого он предоставляется клиенту и помечается как занятый. Вся информация о свободных подсетях наглядно отображается в виде следующей таблице (зеленым цветом обозначены свободные подсети, синим — занятые, а серым — подсети, которые содержат уже занятые подсети более мелкого размера и поэтому не могут быть использованы):

Чтобы ускорить поиск свободной подсети в пулах большого размера, можно проходить интервал циклом с разных сторон. Однако в таком случае масштабы фрагментации будут больше, и могут возникнуть проблемы с выделением крупных подсетей. Если мы нашли пересечение с подсетью большего размера (по сравнению с запрошенной клиентом), то мы можем следующий шаг цикла начать с ее конца, так как внутри этого интервала все равно отсутствуют свободные подсети.

Заключение

Предлагаемое нами решение по распределению IP-адресов делает управление адресным пространством более простым и, что немаловажно, более рациональным.
Конечно, его нельзя считать идеальным. Вопрос о рациональном и эффективном распределении адресного пространства остается открытым. Было бы интересно услышать от вас замечания и предложения по улучшению нашего подхода, а также ознакомиться с другими вариантами решения описываемой проблемы.

Для настройки NAT маршрутизатора Микротик сначала скачиваем утилиту winbox и подключаемся к роутеру, где скачать, и инструкция по подключению описано . Настроить Мikrotik NAT на маршрутизаторе можно несколькими способами, рассмотрим их по порядку.

Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.

Простая настройка NAT

После подключения к роутеру открываем вкладку NAT меню ip-firewall, нажимаем кнопку добавить новое правило(красный крестик)

В открывшемся окне, вкладка General заполняем минимально необходимые поля

Chain-канал приемник, нам нужно принимать из локальной сети, поэтому выбираем srcnat

Out.Interface – Внешний интерфейс маршрутизатора, тот которым он смотрит в интернет

Далее открываем вкладку Action

В поле Action выбираем masquerade(Маскарад). Теперь будет происходить подмена локальных ip, адресом предоставленный провайдером. Минимальная настройка НАТ на Mikrotik закончена. Рассмотрим более сложную настройку NAT на Микротик.

Настройка NAT для нескольких внешних ip

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

  1. Если внешние ip настроены на разных интерфейсах маршрутизатора. Здесь все просто, прописываем Src.Address нужный ip или сеть, а исходящим интерфейсом выбираем нужный интерфейс .

Указываем в source ip нужные подсети, или одиночные ip адреса. В указанном примере, все пакеты от компьютеров с ip 192.168.0.2-192.168.0.127 будут идти через интерфейс ether1-gareway, а пакеты с 192.168.0.128-192.168.0.255 будут идти с интерфейса ether2-gateway, соответственно в интернете они будут видны под ip address этих интерфейсов.

  1. Если от провайдера приходит один провод по которому нам дают несколько внешних ip, нам не хочется задействовать для каждого соединения свой порт, то все внешние ip можно настроить на одном порту

К примеру у нас на одном порту настроены ip address 1.1.1.1, 2.2.2.2 и целая сеть 3.3.3.3/24 как показано на рисунке

Нам нужно настроить выход для разных локальных компьютеров с внешних ip 1.1.1.1, 2.2.2.2 3.3.3.3 и 3.3.3.4.

Рассмотрим настройки на примере интерфейса с ip 3.3.3.4, все остальные будут идентичны

На вкладке General указываем только Src.Address, сеть или local с которого будут идти пакеты. Далее на вкладке Action делаем следующие настройки

В поле Action выбираем dst-nat или netmap. Отличие dst nat от netmap заключается в том, что netmap новый и улучшенный вариант dst nat. Поэтому я использую его.

В поле To Address прописываем адрес под котором нужно что бы наша сеть выходила в интернет.

Также в поле действия можно выбрать следующие операции.

Accept – принять будет принят и пройдет через маршрутизатор без изменений

add-dst-to-address-list — добавить address назначения в список адресов, заданный параметром address-list

add-src-to-address-list — добавить address источника в список адресов, указанный параметром address-list

dst-nat — заменяет address назначения и / или порт IP-пакета на значения, заданные параметрами-адресами и портами, этот параметр бвыше был рассмотрен

jump — переход к определяемой пользователем цепочке, заданной значением параметра target-jump

log — добавить сообщение в системный журнал, содержащий следующие данные: in-interface, out-interface, src-mac, protocol, src-ip: port-> dst-ip: порт и длина пакета. После согласования пакета он переходит к следующему правилу в списке, аналогично переходу

masquerade — Маскарад рассмотренный в начале статьи. Подмена внутреннего адреса машины из локальной сети на адрес роутера;

netmap — создает статическое отображение 1: 1 одного набора IP-адресов другому. Часто используется для распространения общедоступных IP-адресов на хосты в частных сетях

passthrough — если пакет соответствует правилу, увеличьте счетчик и перейдите к следующему правилу (полезно для статистики).

redirect — заменяет порт назначения IP-пакета на один, заданный параметром-портом-портом и адресом назначения на один из локальных адресов маршрутизатора

return — передает управление обратно в цепочку, откуда произошел прыжок

same — дает конкретному клиенту один и тот же IP-адрес источника / получателя из заданного диапазона для каждого соединения. Это чаще всего используется для служб, ожидающих одного и того же адреса клиента для нескольких подключений от одного и того же клиента

src-nat — заменяет исходный адрес IP-пакета на значения, заданные параметрами to-addresses и to-ports

Если нужно настроить проброс портов из интернета на ресурсы локальной сети, то как это сделать подробно описано

Обучающий курс по настройке MikroTik

Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *