Назад | Перейти на главную страницу

Диапазон портов DNAT с различным диапазоном внутренних портов с Iptables

Стандартный способ DNAT подключения одного порта к другому порту во внутренней сети выглядит примерно так:

ip(6)tables -t nat -A PREROUTING -i wan0 -p tcp --dport 80 --to-destination 10.0.0.1:8080

Если вам нужен диапазон портов, вы можете использовать -m multiport вместе с --dports как это:

ip(6)tables -t nat -A PREROUTING -i wan0 -p tcp -m multiport --dports 1000:2000 --to-destination 10.0.0.1

Теперь то, что я хочу знать, можете ли вы объединить два метода для сопоставления диапазона портов (например, 1000–2000) с другим диапазоном того же размера (например, 12000–13000). Возможно ли это с Iptables, использующим ядро ​​не позднее Linux 4.1?

Чтобы ответить на ваш вопрос, да.

Я запустил образец правила на своем компьютере с Debian ...

iptables -t nat -A PREROUTING -i xenbr0 -p tcp --dport 64000:65000 -j DNAT --to 172.16.10.10:61000-62000

... который не дал результата, что свидетельствует об успехе. Я использую ядро 3.16.0-4-amd64.

Проверка правила NAT через iptables -t nat -vnL PREROUTING, Я вижу, что правило указано ...

DNAT       tcp  --  xenbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpts:64000:65000 to:172.16.10.10:61000-62000

MadHatter правильный, вам не нужно -m multiport для диапазонов портов, только для списков портов, разделенных запятыми. В : необходим для того, чтобы указать диапазоны портов для --dport вариант, но - необходим для того, чтобы указать диапазоны портов в DNAT цель.

Насколько хорошо это правило будет работать на практике, я не могу сказать, но теоретически оно должно способствовать достижению вашей цели.

Больше информации о DNAT цель может быть найдена Вот.

Надеюсь это поможет.