logo

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

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

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

Задача

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

snat 1

Решение

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

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

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

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

В таком случае для iRZ 1 необходимо настроить проброс портов по следующей схеме:

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

snat 2

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

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

Поле

Значение

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

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

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

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

Поле

Значение

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

После настройки нажмите Apply.

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

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

У контроллеров №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, записывающей настройки в память роутера.