Настройка правил SNAT для опроса контроллеров
Есть ПК, с которого ведется опрос и управление контроллерами, которые в свою очередь подключены к двум роутерам iRZ. Роутеры объединены в одну локальную сеть.
Такая схема нужна для резервирования каналов связи, и должна обеспечить отказоустойчивость при потере того или иного канала.
Решение
Для работы такой схемы необходимо на каждом роутере прописать правила проброса портов до каждого из контроллеров, а также прописать на каждом роутере правило SNAT.
Роутеры на базе irzOS позволяют выполнять настройки как с помощью Web-интерфейса, так и с помощью CLI.
Настройка проброса портов (DNAT) в вэб-интерфейсе irzOS
Предположим, что каждый из контроллеров отвечает на запросы, пришедшие на порт TCP 80.
В таком случае для iRZ 1 необходимо настроить проброс портов по следующей схеме:
Перейдите в раздел /firewall → nat, нажмите кнопку Add, в всплывающей панели в выпадающем списке Chain выберите Prerouting и нажмите ОК.
В открывшейся форме настройте проброс для первого контроллера в соответствии с примером ниже. После настройки нажмите Apply.
Поле |
Значение |
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). Порт устройства остается тот же, т.к. устройство отвечает именно на нем.
Проброс портов на роутере iRZ 2 настраивается идентично настройке iRZ 1.
Настройка SNAT на роутера irzOS
Перейдите в раздел /firewall → nat, нажмите кнопку Add, в всплывающей панели в выпадающем списке Chain выберите postrouting и нажмите ОК.
Для роутера iRZ 1 заполните форму аналогично примеру:
Поле |
Значение |
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:
После настройки нажмите 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, записывающей настройки в память роутера.