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