Настройка проброса портов на роутерах iRZ в случае нескольких провайдеров связи
Если для работы роутера используются два способа связи от разных поставщиков, например, сотовая сеть и проводной интернет или сотовая сеть и 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 секцию с правилом маршрутизации.
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 меньше остальных.