Как настроить проброс портов на роутерах iRZ серий R0, R2, R4 в случае нескольких провайдеров связи?

Как настроить Port Forwarding в случае нескольких ISP?

Если для работы роутера используются два способа связи от разных поставщиков, например сотовая сеть и проводной интернет или сотовая сеть и Wi-Fi, то для проброса порта будет недостаточно создать DNAT правило через интерфейс роутера.
По правилам маршрутизации ответный траффик от устройства за NAT будет отправляться через маршрут по умолчанию, и если первоначальный трафик пришел с интерфейса с большей метрикой это приведёт к недоступности сервиса. 

Для организации доступности устройства за NAT входящий трафик будет маркироваться и на основании этой метки возвращаться назад отправителю.

Описание стенда:

• Основной проводной WAN интерфейс
• Резервный сотовый интерфейс sim1
• Оба интерфейса имеют внешний статический IP адрес и доступны из сети интернет
• Сервер в локальной сети с адресом 192.168.1.100, слушающий 80 порт
• В интернет будет публиковаться порт 8000

Шаг 1

Создать в меню Port Forwarding DNAT правило.
From: wan - зона, в которой находятся интерфейсы sim1 и wan
To: lan - зона с интерфейсом br-lan, бриджем в локальную сеть
Src Address: <пусто> - принимаем подключения с любого адреса
Dst Address: 192.168.1.100
Src Port: 8000
Dst Port: 80
Protocol: TCP - так как мы публикуем http сервис
Comment: <комментарий, который напомнит что за правило перед вами>

Шаг 2

Добавить два правила в секции User Firewall rules
# Маркируем входящий трафик от интерфейса с большей метрикой (менее приоритетного)
iptables -t mangle -A PREROUTING -i sim1 -p tcp -m tcp --dport 8000 -j CONNMARK --set-xmark 80
# Восстанавливаем метку на ответном трафике от сервера в локальной сети
iptables -t mangle -A PREROUTING -i br-lan -j CONNMARK --restore-mark --mask 80

Шаг 3

Подключаемся через ssh или telnet к консоли роутера Ищем таблицу маршрутизации связанную с нашим backup интерфейсом sim1, в нашем случае это 103 pbr_sim1
root@iRZ-Router:~# cat /etc/iproute2/rt_tables 
#
# reserved values
#
128 prelocal
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
101 pbr_wan
103 pbr_sim1
С помощью редактора vi или uci-команд добавить в конфигурационный файл network секцию с правилом маршрутизации:
vi
config rule
     option mark 80
     option lookup 103
     option priority 100
uci
uci add network rule
uci set network.@rule[-1].mark=80
uci set network.@rule[-1].lookup=103
uci set network.@rule[-1].priority=100
Где:
• mark - метка которой маркируется трафик
• lookup - номер таблицы по которой будет маршрутизироваться трафик
• priority - порядковый номер в списке правил (ip rule)

Текущую нумерацию правил можно посмотреть с помощью команды
ip rule
Важно, чтобы созданное выше правило имело значение priority меньше остальных.

Шаг 4

После добавления конфигурационного файла нужно перезапустить сеть
/etc/init.d/network restart

Эта статья была полезна для 2 людей. Эта статья помогла Вам?

Сервис поддержки клиентов работает на платформе UserEcho