Настройка правил SNAT для опроса контроллеров

#irzOS #роутеры

Описание схемы

Есть ПК, с которого ведется опрос и управление контроллерами, которые в свою очередь подключены к двум роутерам iRZ. Роутеры объединены в одну локальную сеть.

Такая схема нужна для резервирования каналов связи, и должна обеспечить отказоустойчивость при потере того или иного канала.

Задача:

Иметь возможность опрашивать оба контроллера через любой из роутеров.

snat 1

Решение:

Для работы такой схемы пропишите правила проброса портов до каждого из контроллеров и правило SNAT на каждом роутере.

Роутеры на базе irzOS позволяют выполнять настройки как с помощью Web-интерфейса, так и с помощью CLI.

Настройка проброса портов (DNAT) в Web-интерфейсе irzOS

Предположим, что каждый из контроллеров отвечает на запросы, пришедшие на порт TCP 80. В таком случае для iRZ 1 настройте проброс портов.

  1. Перейдите в раздел /firewall → nat, нажмите кнопку Add, во всплывающей панели в выпадающем списке Chain выберите Prerouting и нажмите ОК.

    snat 2
  2. В открывшейся форме настройте проброс для первого контроллера в соответствии с примером ниже. После настройки нажмите Apply.

snat 3
Расшифровка полей формы

Поле

Значение

Chain

Цепочка Iptables, в которой происходит обработка пакета. Для проброса портов (DNAT) это prerouting

Source

Интерфейс или зона для обрабатываемых пакетов. Здесь это zone-wan (пакеты, приходящие со стороны провайдера связи)

Destination Address

Здесь – внешний порт РОУТЕРА, который будет отвечать на запросы к контроллеру, для примера это 8080 (записывается как :8080)

Protocol

Транспортный протокол (TCP или UDP), на котором работает контроллер

Action

Действие, выполняемое над пакетом. Здесь – dnat (проброс порта)

NAT Address

Конечный адрес и порт, на который осуществляется проброс

Для второго контроллера проброс на iRZ 1 настраивается аналогично, с указанием другого внешнего порта роутера (8081) и другого конечного адреса устройства (192.168.1.202). Порт устройства остается тот же, т.к. устройство отвечает именно на нем.

snat 4

Проброс портов на роутере iRZ 2 настраивается аналогично iRZ 1.

Настройка SNAT на роутерах irzOS

  1. Перейдите в раздел /firewall → nat, нажмите кнопку Add, в всплывающей панели в выпадающем списке Chain выберите postrouting и нажмите ОК.

  2. Для роутера iRZ 1 заполните форму аналогично примеру:

    snat 5
    Расшифровка полей формы

    Поле

    Значение

    Chain

    Цепочка Iptables, в которой происходит обработка пакета. Для SNAT это postrouting

    Destination

    Интерфейс или зона для обрабатываемых пакетов. Здесь это bridge0 (сетевой мост по умолчанию, обслуживающий локальную сеть), необходимо указать тот мост (bridge), к которому подключен контроллер

    Protocol

    По умолчанию all

    Action

    Действие, выполняемое над пакетом. Здесь – snat (подмена адреса источника)

    NAT Address

    Адрес, используемый в качестве источника, здесь это 192.168.1.1

    Настройка iRZ 2 производится аналогично iRZ 1, с одним отличием – в качестве NAT Address используется 192.168.1.2:

    snat 6
  3. Нажмите Apply.

  4. Завершите настройку командой /system → config → commit, записывающей настройки в память роутера.

Как это работает

У контроллеров №1 и №2 существуют собственные маршруты по умолчанию.

Для контроллера №1 (192.168.1.201) – роутер iRZ 1 (192.168.1.1).
Для контроллера №2 (192.168.1.202) – роутер iRZ 2 (192.168.1.2).

Если нет правила SNAT, после прихода пакета на проброшенный порт роутера iRZ 1 для контроллера 192.168.1.202 – ответ уйдет к роутеру iRZ 2, и ПК, с которого ведется опрос, не получит связи с контроллером.

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

То есть пакет от контроллера вернется на роутер, где произошла SNAT подмена, будет произведена обратная подмена, и пакет отправится к изначальному отправителю – связь будет работать.

Настройка в режиме CLI

Для роутеров iRZ 1 и iRZ 2 выполните команды (команды с прочерком вместо значения параметра, например, «disabled -» можно пропустить).

Для проброса на контроллер №1:

/firewall nat add chain=prerouting
    action dnat
    disabled -
    dst -
    dst-addr :8080
    extra -
    mark -
    nat-addr 192.168.1.201:80
    policy -
    protocol tcp
    src zone-wan
    src-addr -
    apply
  /

Для проброса на контроллер №2:

/firewall nat add chain=prerouting
    action dnat
    disabled -
    dst -
    dst-addr :8081
    extra -
    mark -
    nat-addr 192.168.1.202:80
    policy -
    protocol tcp
    src zone-wan
    src-addr -
    apply
  /

Для организации SNAT на роутер iRZ 1:

/firewall nat add chain=postrouting
    action snat
    disabled -
    dst bridge0
    dst-addr -
    extra -
    mark -
    nat-addr 192.168.1.1
    policy -
    protocol all
    src -
    src-addr -
    apply
  /

Для организации SNAT на роутер iRZ 2:

/firewall nat add chain=postrouting
    action snat
    disabled -
    dst bridge0
    dst-addr -
    extra -
    mark -
    nat-addr 192.168.1.2
    policy -
    protocol all
    src -
    src-addr -
    apply
  /

Завершите настройку командой /system → config → commit, записывающей настройки в память роутера.