logo

Как настроить проброс портов на роутерах 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